From 3a9b031ced07d3310d83f0eb00fd91b441558118 Mon Sep 17 00:00:00 2001 From: cormullion Date: Mon, 11 Mar 2024 10:35:56 +0000 Subject: [PATCH] build based on 1d718d7 --- dev/.documenter-siteinfo.json | 1 - dev/404.html | 22 + dev/assets/app.BZK2BgHZ.js | 7 + dev/assets/basics.md.ameQl_Qu.js | 734 ++ dev/assets/basics.md.ameQl_Qu.lean.js | 108 + .../chunks/@localSearchIndexroot.Da2ssDEu.js | 1 + .../chunks/VPLocalSearchBox.CHDqaqhP.js | 13 + dev/assets/chunks/framework.BHs3sUaM.js | 17 + dev/assets/chunks/theme.y-s9L4ZZ.js | 7 + .../dep_chain.svg => dep_chain.Bn8ThLyI.svg} | 0 .../diffusion.gif => diffusion.D35y6Nd5.gif} | Bin .../dijkstra.gif => dijkstra.ajbtxkHI.gif} | Bin dev/assets/documenter.js | 874 -- ...rds.svg => drawgraphkeywords.BY6WQdtw.svg} | 0 dev/assets/edgegapanimation.BwI31XKF.gif | Bin 0 -> 245645 bytes dev/assets/examples.md.CAYbb5Ao.js | 839 ++ dev/assets/examples.md.CAYbb5Ao.lean.js | 157 + dev/assets/figures/barabasi.svg | 634 -- .../figures/karnak-social-media-preview.png | Bin 595120 -> 0 bytes ... graph-dependencies-colors-2.D-e7l159.svg} | 0 ...=> graph-dependencies-colors.Ch9uTHjW.svg} | 0 ... => graph-dependency-wallart.BFgDM29Z.png} | Bin dev/assets/index.md.DI3GZpLg.js | 9 + dev/assets/index.md.DI3GZpLg.lean.js | 1 + .../inter-italic-cyrillic-ext.5XJwZIOp.woff2 | Bin 0 -> 28332 bytes .../inter-italic-cyrillic.D6csxwjC.woff2 | Bin 0 -> 17824 bytes .../inter-italic-greek-ext.CHOfFY1k.woff2 | Bin 0 -> 12188 bytes dev/assets/inter-italic-greek.9J96vYpw.woff2 | Bin 0 -> 23264 bytes .../inter-italic-latin-ext.BGcWXLrn.woff2 | Bin 0 -> 63552 bytes dev/assets/inter-italic-latin.DbsTr1gm.woff2 | Bin 0 -> 46048 bytes .../inter-italic-vietnamese.DHNAd7Wr.woff2 | Bin 0 -> 8784 bytes .../inter-roman-cyrillic-ext.DxP3Awbn.woff2 | Bin 0 -> 26600 bytes .../inter-roman-cyrillic.CMhn1ESj.woff2 | Bin 0 -> 16780 bytes .../inter-roman-greek-ext.D0mI3NpI.woff2 | Bin 0 -> 11808 bytes dev/assets/inter-roman-greek.JvnBZ4YD.woff2 | Bin 0 -> 21776 bytes .../inter-roman-latin-ext.ZlYT4o7i.woff2 | Bin 0 -> 59608 bytes dev/assets/inter-roman-latin.Bu8hRsVA.woff2 | Bin 0 -> 42464 bytes .../inter-roman-vietnamese.ClpjcLMQ.woff2 | Bin 0 -> 8492 bytes dev/assets/karnak-docs.css | 130 - .../karnakmap.png => karnakmap.B9r8wlPZ.png} | Bin .../latextext.svg => latextext.D6K4VOzp.svg} | 0 .../ll_tree.svg => ll_tree.nJMR1l_c.svg} | 0 .../pagerank.svg => pagerank.C3B1wbP-.svg} | 0 dev/assets/reference_api.md.Bu8sozjY.js | 128 + dev/assets/reference_api.md.Bu8sozjY.lean.js | 1 + .../reference_functionindex.md.D9830wBP.js | 1 + ...eference_functionindex.md.D9830wBP.lean.js | 1 + ...sslayout.gif => stresslayout.ByjSbAzz.gif} | Bin dev/assets/style.DVN1JnDY.css | 1 + dev/assets/styles.css | 41 - dev/assets/syntax.md.ZDzSRviH.js | 560 ++ dev/assets/syntax.md.ZDzSRviH.lean.js | 1 + dev/assets/themes/documenter-dark.css | 7 - dev/assets/themes/documenter-light.css | 9 - dev/assets/themeswap.js | 84 - .../tubemap.png => tubemap.Bhp6-3Q9.png} | Bin dev/assets/warner.js | 52 - dev/basics.html | 758 ++ dev/basics/0be78faf.svg | 73 - dev/basics/0d4966ab.svg | 216 - dev/basics/1d30dbfe.svg | 190 - dev/basics/29d7e378.svg | 116 - dev/basics/2dd0cb73.svg | 129 - dev/basics/34b1489c.svg | 420 - dev/basics/3d72107d.svg | 1004 -- dev/basics/482ee6c7.svg | 165 - dev/basics/56ece130.svg | 299 - dev/basics/5952ecd2.svg | 1195 --- dev/basics/5f0ece29.svg | 249 - dev/basics/6092e352.svg | 327 - dev/basics/8996a572.svg | 165 - dev/basics/8fe3d2eb.svg | 234 - dev/basics/a58a2a63.svg | 89 - dev/basics/a657f237.svg | 99 - dev/basics/ab83bef0.svg | 90 - dev/basics/b9675bf3.svg | 105 - dev/basics/cb5bc43d.svg | 279 - dev/basics/cd230396.svg | 54 - dev/basics/db29410b.svg | 49 - dev/basics/ddad0a85.svg | 146 - dev/basics/e0ab67c3.svg | 99 - dev/basics/ed15b939.svg | 56 - dev/basics/f0be920d.svg | 51 - dev/basics/f1aa2511.svg | 99 - dev/basics/f879495e.svg | 144 - dev/basics/index.html | 841 -- dev/examples.html | 863 ++ dev/examples/08dae63e.svg | 1280 --- dev/examples/4d712698.svg | 694 -- dev/examples/52449c95.svg | 74 - dev/examples/5d86db6e.svg | 952 -- dev/examples/6cfd28ec.svg | 783 -- dev/examples/6f860c5e.svg | 251 - dev/examples/b2b47ddd.svg | 8147 ----------------- dev/examples/c06110a2.svg | 4169 --------- dev/examples/c87c8ee5.svg | 9 - dev/examples/d42acecb.svg | 589 -- dev/examples/index.html | 867 -- dev/favicon.ico | Bin 0 -> 6961 bytes dev/hashmap.json | 1 + dev/index-06525810.svg | 634 -- dev/index.html | 41 +- dev/logo.png | Bin 0 -> 126576 bytes dev/{assets => }/logo.svg | 0 dev/reference/api.html | 152 + dev/reference/api/index.html | 127 - dev/reference/functionindex.html | 25 + dev/reference/functionindex/index.html | 2 - dev/search_index.js | 3 - dev/syntax.html | 585 ++ dev/syntax/05655401.svg | 726 -- dev/syntax/193cd084.svg | 222 - dev/syntax/22398389.svg | 79 - dev/syntax/27aed8d3.svg | 322 - dev/syntax/2cae3477.svg | 144 - dev/syntax/2ccca73f.svg | 393 - dev/syntax/339cf2c8.svg | 67 - dev/syntax/35fc5aa0.svg | 207 - dev/syntax/39dd7f69.svg | 51 - dev/syntax/44043806.svg | 58 - dev/syntax/57cadc72.svg | 2982 ------ dev/syntax/657e839e.svg | 184 - dev/syntax/682d5e9d.svg | 46 - dev/syntax/78f3778d.svg | 46 - dev/syntax/8d7218b0.svg | 267 - dev/syntax/906b2799.svg | 292 - dev/syntax/922539e4.svg | 151 - dev/syntax/9261a6a3.svg | 112 - dev/syntax/a87fd90e.svg | 46 - dev/syntax/b6b7d425.svg | 10 - dev/syntax/b7a767ef.svg | 1566 ---- dev/syntax/c13b0aa5.svg | 393 - dev/syntax/c1d12af4.svg | 46 - dev/syntax/ce1186ac.svg | 46 - dev/syntax/e395a36e.svg | 61 - dev/syntax/f079585b.svg | 651 -- dev/syntax/f260d6d1.svg | 48 - dev/syntax/f53742cf.svg | 454 - dev/syntax/feef1387.svg | 82 - dev/syntax/index.html | 587 -- 140 files changed, 5024 insertions(+), 37744 deletions(-) delete mode 100644 dev/.documenter-siteinfo.json create mode 100644 dev/404.html create mode 100644 dev/assets/app.BZK2BgHZ.js create mode 100644 dev/assets/basics.md.ameQl_Qu.js create mode 100644 dev/assets/basics.md.ameQl_Qu.lean.js create mode 100644 dev/assets/chunks/@localSearchIndexroot.Da2ssDEu.js create mode 100644 dev/assets/chunks/VPLocalSearchBox.CHDqaqhP.js create mode 100644 dev/assets/chunks/framework.BHs3sUaM.js create mode 100644 dev/assets/chunks/theme.y-s9L4ZZ.js rename dev/assets/{figures/dep_chain.svg => dep_chain.Bn8ThLyI.svg} (100%) rename dev/assets/{figures/diffusion.gif => diffusion.D35y6Nd5.gif} (100%) rename dev/assets/{figures/dijkstra.gif => dijkstra.ajbtxkHI.gif} (100%) delete mode 100644 dev/assets/documenter.js rename dev/assets/{figures/drawgraphkeywords.svg => drawgraphkeywords.BY6WQdtw.svg} (100%) create mode 100644 dev/assets/edgegapanimation.BwI31XKF.gif create mode 100644 dev/assets/examples.md.CAYbb5Ao.js create mode 100644 dev/assets/examples.md.CAYbb5Ao.lean.js delete mode 100644 dev/assets/figures/barabasi.svg delete mode 100644 dev/assets/figures/karnak-social-media-preview.png rename dev/assets/{figures/graph-dependencies-colors-2.svg => graph-dependencies-colors-2.D-e7l159.svg} (100%) rename dev/assets/{figures/graph-dependencies-colors.svg => graph-dependencies-colors.Ch9uTHjW.svg} (100%) rename dev/assets/{figures/graph-dependency-wallart.png => graph-dependency-wallart.BFgDM29Z.png} (100%) create mode 100644 dev/assets/index.md.DI3GZpLg.js create mode 100644 dev/assets/index.md.DI3GZpLg.lean.js create mode 100644 dev/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 create mode 100644 dev/assets/inter-italic-cyrillic.D6csxwjC.woff2 create mode 100644 dev/assets/inter-italic-greek-ext.CHOfFY1k.woff2 create mode 100644 dev/assets/inter-italic-greek.9J96vYpw.woff2 create mode 100644 dev/assets/inter-italic-latin-ext.BGcWXLrn.woff2 create mode 100644 dev/assets/inter-italic-latin.DbsTr1gm.woff2 create mode 100644 dev/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 create mode 100644 dev/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 create mode 100644 dev/assets/inter-roman-cyrillic.CMhn1ESj.woff2 create mode 100644 dev/assets/inter-roman-greek-ext.D0mI3NpI.woff2 create mode 100644 dev/assets/inter-roman-greek.JvnBZ4YD.woff2 create mode 100644 dev/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 create mode 100644 dev/assets/inter-roman-latin.Bu8hRsVA.woff2 create mode 100644 dev/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 delete mode 100644 dev/assets/karnak-docs.css rename dev/assets/{figures/karnakmap.png => karnakmap.B9r8wlPZ.png} (100%) rename dev/assets/{figures/latextext.svg => latextext.D6K4VOzp.svg} (100%) rename dev/assets/{figures/ll_tree.svg => ll_tree.nJMR1l_c.svg} (100%) rename dev/assets/{figures/pagerank.svg => pagerank.C3B1wbP-.svg} (100%) create mode 100644 dev/assets/reference_api.md.Bu8sozjY.js create mode 100644 dev/assets/reference_api.md.Bu8sozjY.lean.js create mode 100644 dev/assets/reference_functionindex.md.D9830wBP.js create mode 100644 dev/assets/reference_functionindex.md.D9830wBP.lean.js rename dev/assets/{figures/stresslayout.gif => stresslayout.ByjSbAzz.gif} (100%) create mode 100644 dev/assets/style.DVN1JnDY.css delete mode 100644 dev/assets/styles.css create mode 100644 dev/assets/syntax.md.ZDzSRviH.js create mode 100644 dev/assets/syntax.md.ZDzSRviH.lean.js delete mode 100644 dev/assets/themes/documenter-dark.css delete mode 100644 dev/assets/themes/documenter-light.css delete mode 100644 dev/assets/themeswap.js rename dev/assets/{figures/tubemap.png => tubemap.Bhp6-3Q9.png} (100%) delete mode 100644 dev/assets/warner.js create mode 100644 dev/basics.html delete mode 100644 dev/basics/0be78faf.svg delete mode 100644 dev/basics/0d4966ab.svg delete mode 100644 dev/basics/1d30dbfe.svg delete mode 100644 dev/basics/29d7e378.svg delete mode 100644 dev/basics/2dd0cb73.svg delete mode 100644 dev/basics/34b1489c.svg delete mode 100644 dev/basics/3d72107d.svg delete mode 100644 dev/basics/482ee6c7.svg delete mode 100644 dev/basics/56ece130.svg delete mode 100644 dev/basics/5952ecd2.svg delete mode 100644 dev/basics/5f0ece29.svg delete mode 100644 dev/basics/6092e352.svg delete mode 100644 dev/basics/8996a572.svg delete mode 100644 dev/basics/8fe3d2eb.svg delete mode 100644 dev/basics/a58a2a63.svg delete mode 100644 dev/basics/a657f237.svg delete mode 100644 dev/basics/ab83bef0.svg delete mode 100644 dev/basics/b9675bf3.svg delete mode 100644 dev/basics/cb5bc43d.svg delete mode 100644 dev/basics/cd230396.svg delete mode 100644 dev/basics/db29410b.svg delete mode 100644 dev/basics/ddad0a85.svg delete mode 100644 dev/basics/e0ab67c3.svg delete mode 100644 dev/basics/ed15b939.svg delete mode 100644 dev/basics/f0be920d.svg delete mode 100644 dev/basics/f1aa2511.svg delete mode 100644 dev/basics/f879495e.svg delete mode 100644 dev/basics/index.html create mode 100644 dev/examples.html delete mode 100644 dev/examples/08dae63e.svg delete mode 100644 dev/examples/4d712698.svg delete mode 100644 dev/examples/52449c95.svg delete mode 100644 dev/examples/5d86db6e.svg delete mode 100644 dev/examples/6cfd28ec.svg delete mode 100644 dev/examples/6f860c5e.svg delete mode 100644 dev/examples/b2b47ddd.svg delete mode 100644 dev/examples/c06110a2.svg delete mode 100644 dev/examples/c87c8ee5.svg delete mode 100644 dev/examples/d42acecb.svg delete mode 100644 dev/examples/index.html create mode 100644 dev/favicon.ico create mode 100644 dev/hashmap.json delete mode 100644 dev/index-06525810.svg create mode 100644 dev/logo.png rename dev/{assets => }/logo.svg (100%) create mode 100644 dev/reference/api.html delete mode 100644 dev/reference/api/index.html create mode 100644 dev/reference/functionindex.html delete mode 100644 dev/reference/functionindex/index.html delete mode 100644 dev/search_index.js create mode 100644 dev/syntax.html delete mode 100644 dev/syntax/05655401.svg delete mode 100644 dev/syntax/193cd084.svg delete mode 100644 dev/syntax/22398389.svg delete mode 100644 dev/syntax/27aed8d3.svg delete mode 100644 dev/syntax/2cae3477.svg delete mode 100644 dev/syntax/2ccca73f.svg delete mode 100644 dev/syntax/339cf2c8.svg delete mode 100644 dev/syntax/35fc5aa0.svg delete mode 100644 dev/syntax/39dd7f69.svg delete mode 100644 dev/syntax/44043806.svg delete mode 100644 dev/syntax/57cadc72.svg delete mode 100644 dev/syntax/657e839e.svg delete mode 100644 dev/syntax/682d5e9d.svg delete mode 100644 dev/syntax/78f3778d.svg delete mode 100644 dev/syntax/8d7218b0.svg delete mode 100644 dev/syntax/906b2799.svg delete mode 100644 dev/syntax/922539e4.svg delete mode 100644 dev/syntax/9261a6a3.svg delete mode 100644 dev/syntax/a87fd90e.svg delete mode 100644 dev/syntax/b6b7d425.svg delete mode 100644 dev/syntax/b7a767ef.svg delete mode 100644 dev/syntax/c13b0aa5.svg delete mode 100644 dev/syntax/c1d12af4.svg delete mode 100644 dev/syntax/ce1186ac.svg delete mode 100644 dev/syntax/e395a36e.svg delete mode 100644 dev/syntax/f079585b.svg delete mode 100644 dev/syntax/f260d6d1.svg delete mode 100644 dev/syntax/f53742cf.svg delete mode 100644 dev/syntax/feef1387.svg delete mode 100644 dev/syntax/index.html diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json deleted file mode 100644 index 714ec09..0000000 --- a/dev/.documenter-siteinfo.json +++ /dev/null @@ -1 +0,0 @@ -{"documenter":{"julia_version":"1.9.3","generation_timestamp":"2023-10-08T14:18:22","documenter_version":"1.1.0"}} \ No newline at end of file diff --git a/dev/404.html b/dev/404.html new file mode 100644 index 0000000..7e2aa09 --- /dev/null +++ b/dev/404.html @@ -0,0 +1,22 @@ + + + + + + 404 | Karnak.jl + + + + + + + + + + + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ + + + \ No newline at end of file diff --git a/dev/assets/app.BZK2BgHZ.js b/dev/assets/app.BZK2BgHZ.js new file mode 100644 index 0000000..0117dfb --- /dev/null +++ b/dev/assets/app.BZK2BgHZ.js @@ -0,0 +1,7 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +import{j 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,Y as P,d as _,u as v,l as R,z as w,ai as y,aj as C,ak as E,a6 as b}from"./chunks/framework.BHs3sUaM.js";import{R as T}from"./chunks/theme.y-s9L4ZZ.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(T),S=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return R(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&y(),C(),E(),s.setup&&s.setup(),()=>b(s.Layout)}});async function j(){globalThis.__VITEPRESS__=!0;const e=L(),a=D();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 D(){return h(S)}function L(){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=P(()=>import(n),__vite__mapDeps([]))),o&&(e=!1),r},s.NotFound)}o&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{j as createApp}; diff --git a/dev/assets/basics.md.ameQl_Qu.js b/dev/assets/basics.md.ameQl_Qu.js new file mode 100644 index 0000000..615868b --- /dev/null +++ b/dev/assets/basics.md.ameQl_Qu.js @@ -0,0 +1,734 @@ +import{_ as g,c as D,o as j,a7 as N,m as M,a as I}from"./chunks/framework.BHs3sUaM.js";const i="/cormullion.github.io/Karnak.jl/dev/assets/dijkstra.ajbtxkHI.gif",w=JSON.parse('{"title":"Graph theory","description":"","frontmatter":{},"headers":[],"relativePath":"basics.md","filePath":"basics.md","lastUpdated":null}'),z={name:"basics.md"},T=N('

Graph theory

This section contains an introduction to basic graph theory using the Graphs.jl package, illustrated with figures made with Karnak.jl. You don't need any prior knowledge of graphs, but you should be familiar with the basics of programming in Julia.

Note

All the figures in this manual are generated when the pages are built by Documenter.jl, and the code to draw them is included here. To run the examples, you'll need the packages Karnak, Graphs, NetworkLayout, Colors, and possibly SimpleWeightedGraphs.

Graphs, vertices, and edges

Graph theory is used for analysing networks and the relationships between things in the network.

',5),A=M("details",{closed:""},[M("summary",null,"Code for this figure"),M("p",null,"This code generates the figure below."),M("div",{class:"language-julia vp-adaptive-theme"},[M("button",{title:"Copy Code",class:"copy"}),M("span",{class:"lang"},"julia"),M("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[M("code",null,[M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Karnak, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"d "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @drawsvg"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," background"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey10"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"yellow"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Graph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"3"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"3"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_vertex!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_edge!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"3"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"4"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," drawgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g,")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," layout"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"spring,")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," margin"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"50"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgecurvature"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgegaps"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"30"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgestrokeweights"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabels "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (v) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},' "thing '),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$(v)"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapes "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," :circle"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexfillcolors "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_red"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_purple"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_green"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_blue"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")],")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapesizes "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 25"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabeltextcolors "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," colorant"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"white"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgelabels"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(n, s, d, f, t) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," θ "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," slope"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(f, t)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," translate"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"midpoint"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(f, t))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," rotate"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(θ)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"white"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," label"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$s"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," and "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$d"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", ["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":s"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"][n], O, offset"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"orange"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," label"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"edge '),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$n"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", ["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":s"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"][n], O, offset"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"=-"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"15"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," )")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 600"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 350")])])])])],-1),S=N(`

A typical graph consists of:

Vertices are also called nodes in the world of graph theory.

The Graphs.jl package provides many ways to create graphs. We'll start off with this basic approach:

julia
using Graphs
+g = Graph()

The Graph() function creates a new empty graph and stores it in g. (SimpleGraph() is an alternative to Graph().) Let's add a single vertex:

julia
add_vertex!(g)

We can easily add a number of new vertices:

julia
add_vertices!(g, 3)

The graph has four vertices now. We can refer to them as 1, 2, 3, and 4.

We'll join some pairs of vertices with an edge:

julia
add_edge!(g, 1, 2)  # join vertex 1 with vertex 2
+add_edge!(g, 1, 3)
+add_edge!(g, 2, 3)
+add_edge!(g, 1, 4)

In Graphs.jl, vertices are always numbered from 1 to n.

g is now a {4, 4} undirected simple Int64 graph}.

It's time to see some kind of visual representation of the graph we've made.

julia
using Karnak, Graphs
+
+g = Graph()
+add_vertices!(g, 4)
+add_edge!(g, 1, 2)
+add_edge!(g, 1, 3)
+add_edge!(g, 2, 3)
+add_edge!(g, 1, 4)
+
+@drawsvg begin
+    background("grey10")
+    sethue("orange")
+    drawgraph(g, vertexlabels = [1, 2, 3, 4])
+end 600 300

This is just one of the many ways this graph can be represented visually. The locations of the vertices as drawn here are not part of the graph's definition. The default styling uses the current Luxor color, with small circles marking the vertex positions. drawgraph() places the graphics for the graph on the current Luxor drawing.

Note

SVG is used in this manual because it's a good format for line drawings, but you can also use Karnak.jl to create PDF or PNG. See the Luxor documentation for details. PNG is a good choice if the graphics get very complex, since large SVGs can tax web browsers.

Undirected and directed graphs

We'll meet two main types of graph, undirected and directed. In our undirected graph g above, vertex 1 and vertex 2 are neighbors, connected with an edge, but there's no way to specify or see a direction for that connection. For example, if the graph was modelling people making financial transactions, we couldn't tell whether the person at vertex 1 sent money to the person at vertex 2, or received money from them.

In Graphs.jl, we can create directed graphs with DiGraph() (also SimpleDiGraph()).

julia
gd = DiGraph()
+add_vertices!(gd, 4)
+add_edge!(gd, 1, 2)
+add_edge!(gd, 1, 3)
+add_edge!(gd, 2, 3)
+add_edge!(gd, 1, 4) # vertex 1 to vertex 4
+add_edge!(gd, 4, 1) # vertex 4 to vertex 1
+
+@drawsvg begin
+    background("grey10")
+    sethue("thistle1")
+    drawgraph(gd, vertexlabels = [1, 2, 3, 4], edgecurvature=5)
+end 600 300

Note

In this representation of our directed graph gd, we can see the direction of the edges joining the vertices. The edgecurvature keyword has been used to specify a small amount of curvature for each edge. Otherwise, with the default drawing settings, the two edges connecting vertices 1 and 4 would have been drawn overlapping, and difficult to distiguish at a glance.

Very simple graphs

Creating graphs by typing the connections manually is tedious, so we can use functions such as the Graph/SimpleGraph and DiGraph/SimpleDiGraph constructor functions:

julia
g = Graph(10, 5) # 10 vertices, 5 edges
+
+d1 = @drawsvg begin
+    background("grey10")
+    sethue("gold")
+    drawgraph(g, vertexlabels = vertices(g))
+end 400 300
+
+gd = SimpleDiGraph(5, 3) # 5 vertices, 3, edges
+
+d2 = @drawsvg begin
+    background("grey10")
+    setline(0.5)
+    sethue("firebrick")
+    drawgraph(gd, vertexlabels = vertices(g))
+end 400 300
+
+hcat(d1, d2)

Neither of these two graphs is a connected graph. In a connected graph, every vertex is connected to every other via some path, a sequence of edges.

We can define how many vertices and edges the graph should have. An undirected graph with 10 vertices can have between 0 to 45 (binomial(10, 2)) edges, a directed graph up to 90 edges.

Well-known graphs

Graphs have been studied for a few centuries, so there are many familiar and well-known graphs and types of graph.

In a complete graph, every vertex is connected to every other vertex.

julia
N = 10
+g = complete_graph(N)
+@drawsvg begin
+   background("grey10")
+   setline(0.5)
+   sethue("pink")
+   drawgraph(g, vertexlabels = vertices(g))
+end 600 300

There's also a complete_digraph() function.

julia
N = 7
+g = complete_digraph(N)
+@drawsvg begin
+    background("grey10")
+    setline(0.5)
+    sethue("orange")
+    drawgraph(g, vertexlabels = vertices(g), edgecurvature = 2)
+end 600 300

In a bi-partite graph, every vertex belongs to one of two groups. Each vertex in the first group is connected to one or more vertices in the second group.

The next figure shows the complete version of a bi-partite graph. Each vertex is connected to every other vertex in the other group.

julia
N = 10
+g = complete_bipartite_graph(N, N)
+H = 300
+W = 550
+@drawsvg begin
+    background("grey10")
+    pts = vcat(
+        [between(O + (-W / 2, -H / 2), O + (-W / 2, H / 2), i) for i in range(0, 1, length=N)], # left
+        [between(O + (W / 2, H / 2), O + (W / 2, -H / 2), i) for i in range(0, 1, length=N)] # right
+    )
+    sethue("aquamarine")
+    drawgraph(g, vertexlabels = 1:nv(g), layout = pts, edgestrokeweights=0.5)
+end 600 400

Here, we calculated the coordinates of the vertices and passed the resulting pts to the layout keyword.

A grid graph doesn't need much explanation:

julia
M = 4
+N = 5
+g = Graphs.grid([M, N])
+@drawsvg begin
+    background("grey10")
+    setline(0.5)
+    sethue("greenyellow")
+    drawgraph(g, vertexlabels = 1:nv(g), layout=stress)
+end 600 300

Star graphs (star_graph(n)) and wheel graphs (wheel_graph(n)) deliver what their names promise.

julia
g = star_graph(12)
+@drawsvg begin
+    background("grey10")
+    sethue("orange")
+    drawgraph(g, vertexlabels=1:nv(g), layout=stress)
+end 600 300
julia
g = wheel_graph(12)
+@drawsvg begin
+    background("grey10")
+    sethue("palegreen")
+    drawgraph(g, vertexlabels=1:nv(g), layout=stress)
+end 600 300

There are star_digraph() and wheel_digraph() DiGraph versions too.

Even more well-known graphs

There are probably as many graphs as there are possible games of chess. In both fields, the more commonly-seen patterns have been studied extensively by enthusiasts for years.

Many well-known graphs are provided by the smallgraph() function. Supply one of the available symbols, such as :bull, or :house.

`,57),y=M("details",{closed:""},[M("summary",null,"Code for this figure"),M("p",null,"This code generates the figure below."),M("div",{class:"language-julia vp-adaptive-theme"},[M("button",{title:"Copy Code",class:"copy"}),M("span",{class:"lang"},"julia"),M("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[M("code",null,[M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Karnak, Graphs, NetworkLayout")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"smallgraphs "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":bull"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"bull"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":chvatal"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"chvatal"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":cubical"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"cubical"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":desargues"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"desargues"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":diamond"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"diamond"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":dodecahedral"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"dodecahedral"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":frucht"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"frucht"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":heawood"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"heawood"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":house"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"house"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":housex"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"housex"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":icosahedral"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"icosahedral"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":karate"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"karate"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":krackhardtkite"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"krackhardtkite"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":moebiuskantor"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"moebiusantor"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":octahedral"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"octahedral"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":pappus"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"pappus"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":petersen"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"petersen"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":sedgewickmaze"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"sedgewick"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":tetrahedral"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tetrahedral"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":truncatedcube"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"truncatedcube"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":truncatedtetrahedron"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"truncatedtetrahedron"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":truncatedtetrahedron_dir"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"truncatedtetrahedron"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":tutte"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tutte"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"))")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"colors "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ["),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"paleturquoise"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"chartreuse"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"thistle1"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"pink"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"gold"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"wheat"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"olivedrab1"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"palegreen"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"turquoise1"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"lightgreen"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"plum1"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"plum"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"violet"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"hotpink"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"]")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"smallgraphs "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @drawsvg"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," background"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey10"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"orange"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ng "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," length"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(smallgraphs)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," N "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," convert"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Int, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"ceil"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"sqrt"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ng)))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," tiles "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Tiler"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"800"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"800"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", N, N)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," setline"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.5"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (pos, n) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," tiles")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @layer"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," n "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ng "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"&&"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," break")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," translate"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pos)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(colors["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"mod1"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(n, "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")])")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," bbox "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," BoundingBox"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"box"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(O, tiles"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tilewidth, tiles"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tileheight))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," smallgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"first"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(smallgraphs[n]))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," drawgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, boundingbox "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," bbox, vertexshapesizes "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", layout "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," stress)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"cyan"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," text"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"string"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"last"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(smallgraphs[n])), halign "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," :center"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"boxbottomcenter"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(bbox))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 800"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 800")])])])])],-1),L=N(`

It's easy to find out more about these well-known graphs online, such as on the wikipedia. Some of the graphs in this figure would benefit from individual ‘tuning’ of the various layout parameters.

Here's a larger view of the Petersen graph (named after Danish mathematician Julius Petersen, who first described it in 1898).

julia
@drawsvg begin
+    background("grey10")
+    pg = smallgraph(:petersen)
+    sethue("orange")
+    drawgraph(pg, vertexlabels = 1:nv(pg), layout = Shell(nlist=[6:10,]))
+end 600 300

Here's a cubical graph:

julia
@drawsvg begin
+    background("grey10")
+    g = smallgraph(:cubical)
+    sethue("orange")
+    drawgraph(g, layout = spring)
+end 600 300

Getting some information about the graph

There are lots of functions for obtaining information about a graph.

How many vertices?

julia
julia> pg = smallgraph(:petersen)
+julia> nv(pg)
+10

How many edges?

julia
julia> ne(pg)
+15

Which vertices are connected with vertex 1? - ie what are the neighbors of a particular vertex?

julia
julia> neighbors(pg, 1)
+5-element Vector{Int64}:
+ 2
+ 5
+ 6

We can iterate over vertices and edges. To step through each vertex, use the vertices iterator function:

julia
for e in vertices(pg)
+    println(e)
+end
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10

Iterating over edges with the edges iterator function will give a value of type Edge. The src() and dst() functions applied to an edge argument return the numbers of the source and destination vertices respectively.

julia
for e in edges(pg)
+    println(src(e), " => ", dst(e))
+end
+
+1 => 2
+1 => 5
+1 => 6
+2 => 3
+2 => 7
+3 => 4
+3 => 8
+4 => 5
+4 => 9
+5 => 10
+6 => 8
+6 => 9
+7 => 9
+7 => 10
+8 => 10

To add a vertex:

julia
pg1 = smallgraph(:petersen)
+add_vertex!(pg1) # returns true if successful

To add an edge:

julia
add_edge!(pg1, 10, 11) # join 10 to 11

It's sometimes useful to be able to see these relationships between neighbors visually. This example looks for the neighbors of vertex 10 and draws them in thick red lines:

julia
@drawsvg begin
+
+background("grey10")
+pg = smallgraph(:petersen)
+
+vertexofinterest = 10
+
+E = Int[]
+for (n, e) in enumerate(edges(pg))
+    if dst(e) == vertexofinterest || src(e) == vertexofinterest
+        push!(E, n)
+    end
+end
+
+edgewts = [dst(e)  E ? 4 : 1 for e in edges(pg)]
+
+drawgraph(pg,
+    vertexlabels = 1:nv(pg),
+    layout = Shell(nlist=[6:10,]),
+    vertexfillcolors = (v) -> ((v == vertexofinterest) ||
+    v  neighbors(pg, vertexofinterest)) && colorant"rebeccapurple",
+    vertexshapesizes = [v == vertexofinterest ? 20 : 10 for v in 1:nv(pg)],
+    edgestrokecolors = (e, f, t, s, d) -> (e  E) ?
+        colorant"red" : colorant"thistle1",
+    edgestrokeweights = edgewts
+    )
+end 600 300

Other useful functions include has_vertex(g, v) and has_edge(g, s, d).

Degree

The degree of a vertex is the number of edges that meet at that vertex. This is shown in the figure below both in the vertex labels and also color-coded:

julia
@drawsvg begin
+background("grey10")
+sethue("gold")
+g = smallgraph(:krackhardtkite)
+
+drawgraph(g, layout=spring,
+    vertexfillcolors = (vtx) -> distinguishable_colors(nv(g), transform=tritanopic)[degree(g, vtx)],
+    vertexshapesizes = 20,
+    margin=40,
+    vertexlabels = (vtx) -> string(degree(g, vtx)),
+    vertexlabelfontsizes = 20,
+    vertexlabeltextcolors = [colorant"black", colorant"white"]
+    )
+end 600 300

Graphs as matrices

Graphs can be represented as matrices - some say that graph theory is really the study of a particular set of matrices... We'll meet the adjacency matrix and the incidence matrix (and there's an array called the adjacency list too).

Adjacency matrix

A graph G with n vertices can be represented by a square matrix A with n rows and columns. The matrix consists of 1s and 0s. A value of 1 means that there's a connection between two vertices with those indices. For example, if vertex 5 is connected with vertex 4, then A[5, 4] contains 1. The adjacency_matrix() function displays the matrix for a graph:

julia
julia> adjacency_matrix(pg)
+10×10 SparseArrays.SparseMatrixCSC{Int64, Int64} with 30 stored entries:
+  1  1  1
+ 1  1  1
+  1  1  1
+  1  1  1
+ 1  1  1
+ 1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1

(This one:)

julia
@drawsvg begin
+background("grey10")
+pg = smallgraph(:petersen)
+sethue("orange")
+drawgraph(pg, vertexlabels = 1:nv(pg), layout = Shell(nlist=[6:10,]))
+end 600 400

Notice that this matrix, for a Petersen graph, is symmetrical about the top-left/bottom-right diagonal, because, in an undirected graph, a connection from vertex 4 to vertex 5 is also a connection from vertex 5 to 4. The vertical sum of each column (and the horizontal sum of each row) is the number of edges shared by that vertex,

We can provide an adjacency matrix to the graph construction functions to create a graph. For example, this matrix recreates the House graph (aka smallgraph(:house)) from its adjacency matrix:

julia
m = [0 1 1 0 0;
+     1 0 0 1 0;
+     1 0 0 1 1;
+     0 1 1 0 1;
+     0 0 1 1 0]
+
+@drawsvg begin
+    background("grey10")
+    hg = Graph(m)
+    sethue("palegreen")
+    drawgraph(hg, vertexlabels=1:nv(hg), layout=stress)
+end 800 400

Incidence matrix

We can also represent a graph G with a matrix M consisting of 1s, -1s, and 0s, where the rows are vertices and the columns are edges. M is called an incidence matrix.

julia
julia> incidence_matrix(pg)
+10×15 SparseArrays.SparseMatrixCSC{Int64, Int64} with 30 stored entries:
+ 1  1  1
+ 1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1

The first column of this matrix is an edge between vertex 1 and vertex 2, whereas the first column of the adjacency matrix defines the vertices that are connected with vertex 1.

For a directed graph:

julia
julia> dg = DiGraph(3, 3)
+
+julia> incidence_matrix(dg)
+
+3×3 SparseArrays.SparseMatrixCSC{Int64, Int64} with 6 stored entries:
+ -1   1   1
+  1  -1
+  -1

Here, negative values are used, so 1 and -1 are used to indicate directions. The first column,-1 1 0, specifies that the first edge goes from 2 to 1.

An incidence matrix is another useful way of quickly defining a graph. That's why we can pass an incidence matrix to the Graph() and DiGraph() functions to create new graphs.

For example, here's a familiar image:

julia
g = [0 1 1;
+     1 0 1;
+     1 1 0]
+
+@drawsvg begin
+background("grey20")
+drawgraph(Graph(g),
+    layout = ngon(O + (0, 20), 80, 3, π/6, vertices=true),
+    vertexshapes = :circle,
+    vertexshapesizes = 40,
+    edgestrokeweights = 15,
+    edgestrokecolors = colorant"gold",
+    vertexfillcolors = [colorant"#CB3C33",
+        colorant"#389826", colorant"#9558B2"])
+end 600 250

Adjacency list

Another way of representing a graph is by using an array of arrays in the form of an adjacency list. This array has n elements to represent a graph with n vertices. The first element of the array is an array of those vertex numbers that are connected with vertex 1. Element 2 holds the vertex numbers connected with vertex 2,and so on, up to element n.

For example, this adjacency list:

julia
[
+    [2, 5, 7],  # vertex 1 connects with 2, 5, and 7
+    [1, 3, 9],  # vertex 2 connects with 1, 3, and 9
+    [2, 4, 11],
+    [3, 5, 13],
+    [1, 4, 15],
+    [7, 15, 20],
+    [1, 6, 8],
+    [7, 9, 16],
+    [2, 8, 10],
+    [9, 11, 17],
+    [3, 10, 12],
+    [11, 13, 18],
+    [4, 12, 14],
+    [13, 15, 19],
+    [5, 6, 14],
+    [8, 17, 20],
+    [10, 16, 18],
+    [12, 17, 19],
+    [14, 18, 20],
+    [6, 16, 19]
+]

defines a graph with 20 vertices. The Graph() function accepts such an adjacency list, preceded by the number of edges.

julia
g = Graph(30, [
+    [2, 5, 7],
+    [1, 3, 9],
+    [2, 4, 11],
+    [3, 5, 13],
+    [1, 4, 15],
+    [7, 15, 20],
+    [1, 6, 8],
+    [7, 9, 16],
+    [2, 8, 10],
+    [9, 11, 17],
+    [3, 10, 12],
+    [11, 13, 18],
+    [4, 12, 14],
+    [13, 15, 19],
+    [5, 6, 14],
+    [8, 17, 20],
+    [10, 16, 18],
+    [12, 17, 19],
+    [14, 18, 20],
+    [6, 16, 19]])
+
+@drawsvg begin
+    background("grey10")
+    sethue("orange")
+    drawgraph(g, layout=stress)
+end 600 300

Graphs.jl uses adjacency lists internally. If we peek inside a graph and look at its fields, we'll see something like this, for a Directed Graph:

fieldnames(DiGraph)
+(:ne, :fadjlist, :badjlist)

Here, fadjlist is a forward adjacency list which defines how each vertex connects to other vertices, and badjlist is a backward adjacency list which defines how each vertex receives connections from other vertices.

Paths, cycles, routes, and traversals

Graphs help us answer questions about connectivity and relationships. For example, think of a railway network as a graph, with the stations as vertices, and the tracks as edges. We want to ask questions such as "Can we get from A to B by train?", which therefore becomes the question "Are there sufficient edges between vertices in the graph such that we can find a continuous path that goes from vertex A to vertex B?".

Graphs.jl has many features for traversing graphs and finding paths. We can look at just a few of them here.

Note

The study of graphs uses a lot of terminology, and many of the terms also have informal and familiar meanings. Usually the informal meanings are reasonably accurate and appropriate, but note that the words also have more precise definitions in the literature.

Paths and cycles

A path is a sequence of edges between some start vertex and some end vertex, such that a continuous unbroken route is available.

A cycle is a path where the start and end vertices are the same - a closed path. Other vertices in the path occur just once. These are also called circuits in some sources.

The cycle_basis() function finds all the cycles in a graph (at least, it finds a basis of an undirected graph, which is a minimal collection of cycles that can be added to make all the cycles). The result is an array of arrays of vertex numbers.

julia> pg = smallgraph(:petersen)
+julia> cycles = cycle_basis(pg)
+6-element Vector{Vector{Int64}}:
+ [1, 6, 8, 10, 5]
+ [4, 9, 6, 8, 10, 5]
+ [7, 9, 6, 8, 10]
+ [4, 3, 8, 10, 5]
+ [1, 2, 3, 8, 10, 5]
+ [7, 2, 3, 8, 10]
julia
@drawsvg begin
+    background("grey10")
+    sethue("magenta")
+    pg = smallgraph(:petersen)
+
+    cycles = cycle_basis(pg)
+    table = Table(2, length(cycles) ÷ 2, 220, 160)
+
+    for (n, cycle) in enumerate(cycles)
+        cycleedges = [Edge(cycle[i], cycle[mod1(i + 1, end)]) for i in 1:length(cycle)]
+        @layer begin
+            translate(table[n])
+            bb = BoundingBox(box(O, table.colwidths[1], table.rowheights[1]))
+            sethue("grey60")
+            drawgraph(pg,
+                layout = stress,
+                vertexshapes = :none,
+                boundingbox = bb)
+            sethue(HSB(rescale(n, 1, length(cycles) + 1, 0, 360), 0.8, 0.6))
+            drawgraph(pg,
+                layout = stress,
+                boundingbox = bb,
+                vertexshapes = (v) -> begin
+                    v  cycle && box(O, 12, 12, :fill)
+                end,
+                vertexshapesizes = 30,
+                vertexlabels = (v) -> v  cycle && string(v),
+                edgestrokeweights = 5,
+                edgelist = cycleedges,
+            )
+        end
+    end
+end 600 300

For digraphs, you can use simplecycles() to find every cycle.

This example shows every cycle of a complete digraph {4, 12}.

julia
sdg = complete_digraph(4)
+
+cycles = simplecycles(sdg)
+
+@drawsvg begin
+    background("grey10")
+    sethue("orange")
+    tiles = Tiler(600, 600, 4, 4)
+    for (pos, n) in tiles
+        cycle = cycles[n]
+        cycle_path = [Edge(cycle[i], cycle[mod1(i + 1, end)]) for i in 1:length(cycle)]
+        @layer begin
+            translate(pos)
+            tilebox = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))
+            text(string(cycle), halign=:center, boxbottomcenter(tilebox))
+            sethue(HSV(rand(0:360), 0.6, 0.9))
+            drawgraph(sdg, layout=squaregrid,
+                boundingbox = tilebox,
+                edgelist = cycle_path,
+                vertexlabels = (v) -> v  cycle ? string(v) : "",
+                vertexlabeltextcolors= colorant"white",
+                vertexlabeloffsetdistances = 10,
+                vertexlabeloffsetangles = [π, 0],
+                vertexshapes = :none,
+                edgelines = (edgenumber, edgesrc, edgedest, from, to) ->
+                    begin
+                        newpath()
+                        arc2sagitta(from, to, 5, :stroke)
+                    end)
+        end
+    end
+end 600 600

There can be a lot of cycles in a graph. For example, a complete_digraph(10) has 1,110,073 cycles. Graphs.jl has tools for working with cycles efficiently.

Visiting every vertex once

It's useful to know how to visit every vertex just once.

You can do this for DiGraphs if you can find a cycle that's the same length as the graph. However, there might be a lot of possibilities, since there could be many such cycles. This example uses simplecycles() to find all of them (there are over 400 for this graph), so only the first one with the right length is used.

julia
@drawsvg begin
+background("grey10")
+g = complete_digraph(6)
+
+tour = first(filter(cycle -> length(cycle) == nv(g), simplecycles(g)))
+
+vertexlist_to_edgelist(vlist) = [Edge(p[1] => p[2]) for p in zip(vlist, circshift(vlist, -1))]
+
+sethue("grey50")
+
+drawgraph(g, layout = spring)
+
+sethue("orange")
+drawgraph(g, layout = spring,
+    edgelist = vertexlist_to_edgelist(tour),
+    edgestrokeweights = 10,
+    )
+end 800 400

Trees

A tree is a connected graph with no cycles. A rooted tree is a tree graph in which one vertex has been designated as the root, or origin. Rooted tree graphs can be drawn using the Buchheim layout algorithm (named after the developer, Christoph Buchheim).

In the next example, we start with a binary tree, in which each vertex is connected to no more than two others - but we'll add one more vertex so that it's no longer a binary tree.

`,89),c=M("details",{closed:""},[M("summary",null,"Code for this figure"),M("p",null,"This code generates the figure below."),M("div",{class:"language-julia vp-adaptive-theme"},[M("button",{title:"Copy Code",class:"copy"}),M("span",{class:"lang"},"julia"),M("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[M("code",null,[M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Karnak, Graphs, NetworkLayout, Colors")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"d "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @drawsvg"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," background"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey10"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"purple"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," bt "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," binary_tree"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"4"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," SimpleDiGraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"collect"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"edges"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(bt)))")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," # add another vertex")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_vertex!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_edge!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"7"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"16"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," drawgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g,")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," layout"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"buchheim,")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," margin"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"20"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgestrokeweights"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgegaps"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabels "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 1"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},":"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"nv"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapes"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":circle"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexfillcolors"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_red"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_purple"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_green"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_blue"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")],")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapesizes"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabeltextcolors"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"colorant"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"white"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," )")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 600"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 350")])])])])],-1),U=N(`

Shortest paths: the A* algorithm

One way to find the shortest path between two vertices is to use the a_star() function, and provide the graph, the start vertex, and the end vertex. The function returns a list of edges.

(The unusual name of this function is just a reference to the name of the algorithm, A*, first published in 1968 by Peter Hart, Nils Nilsson, and Bertram Raphael.)

The function finds the shortest path and returns an array of edges that define the path.

julia
@drawsvg begin
+background("grey10")
+sethue("lemonchiffon")
+g = binary_tree(5)
+dirg = SimpleDiGraph(collect(edges(g)))
+astar = a_star(dirg, 1, 21)
+drawgraph(dirg, layout=buchheim,
+    vertexlabels = 1:nv(g),
+    vertexshapes = (vtx) -> box(O, 30, 20, :fill),
+    vertexlabelfontsizes = 16,
+    edgegaps=20,
+    edgestrokeweights= 5,
+    edgestrokecolors = (edgenumber, s, d, f, t) -> (s  src.(astar) && d  dst.(astar)) ?
+        colorant"gold" : colorant"grey40",
+    vertexfillcolors = (vtx) -> (vtx  src.(astar) ||
+        vtx  dst.(astar)) && colorant"gold"
+    )
+end 800 400

One use for the A* algorithm is for finding paths through mazes. In the next example, a grid graph is subjected to some random vandalism, removing quite a few edges. Then a route through the maze was easily found by a_star().

julia
using Random
+Random.seed!(6)
+
+@drawsvg begin
+background("grey10")
+
+W, H = 20, 20
+g = grid((W, H))
+
+# vandalize the grid:
+let
+    c = 0
+    while c < 200
+        v = rand(1:W*H)
+        rem_edge!(g, v, [v-1, v+1, v-W, v+H][rand(1:end)]) && (c += 1)
+    end
+end
+
+# find a route
+astar = a_star(g, 1, W * H)
+
+sethue("grey60")
+setlinecap("square")
+drawgraph(g,
+    vertexshapesizes = 0,
+    layout=squaregrid,
+    edgestrokeweights = 12)
+
+sethue("red")
+drawgraph(g,
+    vertexshapes = :none,
+    layout=squaregrid,
+    edgelist=astar,
+    edgegaps=0,
+    edgestrokeweights=5)
+
+end 600 600

Shortest paths: Dijkstra's algorithm

A well-known algorithm for finding the shortest path between graph vertices is named for its creator, Edsger W. Dijkstra. He wrote about his inspiration:

"I designed it in about twenty minutes. One morning I was shopping in Amsterdam with my young fiancée, and tired, we sat down on the café terrace to drink a cup of coffee and I was just thinking about whether I could do this, and I then designed the algorithm for the shortest path.

In Graphs.jl, this algorithm is available with dijkstra_shortest_paths(). After running this function, the result is an object with various pieces of information about all the shortest paths: this is a DijkstraState object, with fields parents, dists, predecessors, pathcounts, closest_vertices. There's an enumerate_paths() function which can extract the vertex information for a specific path from the DijkstraState object.

The following code animates the results of examining a grid graph using Dijkstra's algorithm. The shortest paths between the first vertex and every other vertex are drawn in a series of frames, one by one.

julia
function frame(scene, framenumber, g)
+    framenumber == 1 && return
+
+    # run Dijkstra's algorithm
+
+    ds = dijkstra_shortest_paths(g, 1, allpaths=true, trackvertices=true)
+
+    # for which destination vertex?
+    destv = framenumber
+
+    # get the vertices on the path
+    _, ep = enumerate_paths(ds, [1, destv])
+
+    # convert to edges
+    vlist = [Edge(p[1] => p[2]) for p in zip(ep, circshift(ep, -1))]
+
+    # draw background graph
+    background("grey10")
+    sethue("grey40")
+    drawgraph(g, layout=squaregrid, vertexshapes=:none)
+    path = Point[]
+
+    # draw shortest path
+    drawgraph(g,
+        layout=squaregrid,
+        vertexlabelfontsizes=30,
+        vertexshapes=:none,
+        edgelist = vlist[1:end-1],
+        edgefunction = (n, s, d, f, t) -> begin
+            push!(path, f)
+            push!(path, t)
+        end)
+    sethue("orange")
+    setline(10)
+    setlinejoin("bevel")
+    poly(path, :stroke, close=false)
+    sethue("red")
+    circle.(path[[1, end]], 10, :fill)
+end
+
+function main()
+    g = grid((20, 20))
+    amovie = Movie(600, 600, "dijkstra")
+    animate(amovie,
+        Scene(amovie, (s, f) -> frame(s, f, g), 1:400),
+        framerate=10)
+end
+
+main()

Weighted graphs

Up to now, our graphs have been like maps of train or metro networks, focusing on connections, rather than on, say, distances and journey times. Edges have been effectively always one unit long, and shortest path calculations can't take into account the true length of edges. But some systems modelled by graphs require this knowledge, which is where weighted graphs are useful.

A weighted graph, which can be either undirected or directed, has numeric values assigned to each edge. This value is called the "weight" of an edge, and it's usually a positive integer, but can be anything.

The word "weight" is interpreted according to context and the nature of the system modelled by the graph. For example, a higher value for the weight of an edge could mean a longer journey time or more expensive fuel costs, for map-style graphs, but it could signify high attraction levels for a social network graph.

To use weighted graphs, we must install a separate package, SimpleWeightedGraphs.jl, and load it alongside Graphs.jl.

To create a new weighted graph:

julia
using Graphs, SimpleWeightedGraphs
+
+julia> g = SimpleWeightedGraph()

This creates a new, empty, weighted, undirected, graph. Or we can pass an existing graph to this function:

julia
julia> wg = SimpleWeightedGraph(Graph(6, 15), 4.0)

To get the weights of the edge between two vertices, use get_weight():

julia
julia> get_weight(wg, 1, 2)

To change the weight of the edge between two vertices, use add_edge():

julia
julia> add_edge!(graph, from, to, weight)

You can provide a list of weights to the edgelabels keyword, which can accept a vector of edge weights.

julia
g = SimpleWeightedGraph(3)
+add_edge!(g, 1, 2, 12)
+add_edge!(g, 1, 3, 13)
+add_edge!(g, 2, 3, 23)
+
+edgeweights = [g.weights[e.src, e.dst] for e in edges(g)]
+
+@drawsvg begin
+    background("black")
+    sethue("magenta")
+    fontsize(20)
+    drawgraph(
+        g,
+        vertexshapesizes = 15,
+        vertexlabels = 1:nv(g),
+        edgelabelfontsizes = 40,
+        edgelabels = edgeweights
+    )
+end

In the next example, we set the default weight of every edge to 4.0 when the graph is created, and changed just one edge's weight:

julia
wg = SimpleWeightedGraph(Graph(6, 15), 4.0)
+add_edge!(wg, 1, 2, 10_000_000)
+@drawsvg begin
+background("grey10")
+sethue("gold")
+drawgraph(wg, edgecurvature=10,
+    vertexlabels = 1:nv(wg),
+    edgelabels = (k, s, d, f, t) -> begin
+        weight = get_weight(wg, s, d)
+            if weight > 10
+                sethue("white")
+                box(midpoint(f, t), 30, 16, :fill)
+                setcolor("magenta")
+            else
+                sethue(HSB(rescale(k, 1, ne(wg), 0, 360), 0.7, 0.6))
+            end
+            text(string(weight), midpoint(f,t), halign=:center, valign=:middle)
+        end,
+    edgegaps = 10
+    )
+end 600 300

A look at the graph's adjacency matrix shows that the weights have replaced the 1s:

julia
julia> adjacency_matrix(wg)
+6×6 SparseArrays.SparseMatrixCSC{Float64, Int64} with 30 stored entries:
+     1.0e7  4.0  4.0  4.0  4.0
+ 1.0e7     4.0  4.0  4.0  4.0
+ 4.0    4.0   4.0  4.0  4.0
+ 4.0    4.0    4.0   4.0  4.0
+ 4.0    4.0    4.0  4.0   4.0
+ 4.0    4.0    4.0  4.0  4.0

For a directed graph, each edge can have two weights, one from src to dst, the other from dst to src.

Spanning trees

A spanning tree is a set of edges that connect all the vertices of a graph together, without forming any cycles. There are various functions for finding spanning trees in Graphs.jl, including algorithms by Otakar Borůvka (boruvka_mst()), Joseph Kruskal (kruskal_mst()), and Robert Prim (prim_mst()). (Immortality can be attained by inventing a new graph-spanning algorithm.)

When used on a weighted graph, these functions find the minimum possible tree - the tree that scores the lowest when the weights of the edges are added up. (Some of these functions can also find the highest-scoring trees.)

julia
@drawsvg begin
+background("grey10")
+
+g = SimpleWeightedGraph(smallgraph(:octahedral))
+
+for e in edges(g)
+    add_edge!(g, src(e), dst(e), rand(1:10))
+end
+add_edge!(g, 1, 4, 200)
+
+sethue("grey50")
+drawgraph(g, layout=spring, vertexshapesizes = 20, edgestrokeweights = 3,
+    edgelabels = (k, src, dest, f, t) ->
+    (sethue("cyan"); label(string(get_weight(g, src, dest)), :nw, midpoint(f, t))))
+
+mst, weights = boruvka_mst(g)
+sethue("gold")
+drawgraph(g, vertexshapes = :none, layout=spring, edgelist = mst, edgestrokeweights = 15)
+
+mst = kruskal_mst(g)
+sethue("green")
+drawgraph(g, layout=spring, vertexshapes = :none, edgelist = mst, edgestrokeweights = 10)
+
+mst = prim_mst(g)
+sethue("red")
+drawgraph(g, layout=spring, vertexshapes = :none, edgelist = mst, edgestrokeweights = 3)
+
+sethue("black")
+drawgraph(g, layout=spring, vertexlabels = 1:nv(g), edgelines=:none)
+
+end 600 400

Notice how all the spanning trees found have avoided the edge joining 1 and 4, which has a weight of 200.0.

Next, here's boruka_mst() looking for the maximum spanning tree; Edge(1 => 4) is always included every time the function runs.

julia
using Karnak, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs
+
+@drawsvg begin
+    background("grey10")
+    tiles = Tiler(600, 600, 2, 2)
+    let
+        g = SimpleWeightedGraph(smallgraph(:octahedral))
+        for (pos, n) in tiles
+            for e in edges(g)
+                add_edge!(g, src(e), dst(e), rand(1:10))
+            end
+            add_edge!(g, 1, 4, 200)
+            @layer begin
+                translate(pos)
+                bb = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))
+                sethue("grey50")
+                mst, weights = boruvka_mst(g, minimize=false)
+                drawgraph(g,
+                    boundingbox=bb,
+                    layout=spring,
+                    vertexshapesizes=10,
+                    edgestrokeweights=3,
+                    edgelabels=(k, src, dest, f, t) -> begin
+                        sethue("orange")
+                        label(string(get_weight(g, src, dest)), :nw, midpoint(f, t))
+                        end,)
+
+                sethue("gold")
+                drawgraph(g,
+                    boundingbox=bb,
+                    layout=spring,
+                    vertexshapes=:none,
+                    edgelist=mst,
+                    edgestrokeweights=5,)
+
+                drawgraph(
+                    g,
+                    boundingbox=bb,
+                    layout=spring,
+                    vertexlabels=1:nv(g),
+                    vertexshapes=:circle,
+                    vertexshapesizes=7.5,
+                    edgegaps=0,
+                    edgelines=:none,)
+            end
+        end
+    end
+end 600 600

Centrality

Centrality is a measure of the importance of vertices in a graph. It might describe the importance of "influencers" in social networks, or the importance of certain key positions in a transport network. Graphs.jl offers a number of ways to measure the centrality of vertices in a graph. Refer to the manual's "Centrality Measures" section for details.

Here's betweenness_centrality() applied to the Karate Club network. The vertices are sized and colored using the vector of values returned in bc.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:karate)
+bc = betweenness_centrality(g)
+sethue("gold")
+drawgraph(g, layout = spring,
+    vertexlabels = string.(round.(100bc, digits = 1)),
+    vertexshapesizes = 15 .+ 30bc,
+    vertexfillcolors = HSB.(rescale.(bc, 0, maximum(bc), 150, 360), 0.7, 0.8),
+    )
+end 800 600

Graph coloring

A simple graph coloring is a way of choosing colors for the vertices of a graph so that no adjacent vertices have the same color. The greedy_color() function finds a random graph coloring for a graph. The total number of colors, and an array of integers representing the colors, are returned in fields num_colors and colors (as integers between 1 and n).

In the following example, only three colors are needed such that no edge connects vertices with the same color. Colors.jl has a distinguishable_colors() function that finds n colors which look sufficiently different:

julia
@drawsvg begin
+    background("grey10")
+    g = smallgraph(:octahedral)
+    gc = greedy_color(g)
+    dcolors = distinguishable_colors(gc.num_colors)
+    sethue("gold")
+    drawgraph(g, layout=stress,
+        vertexfillcolors = dcolors[gc.colors],
+        vertexshapesizes = 30)
+end 800 400

Here gc.num_colors is 3. However, a complete graph might require many colors because there are so many connected vertices. For example, gc.num_colors is now 20:

julia
@drawsvg begin
+    background("grey10")
+    g = complete_graph(20)
+    gc = greedy_color(g)
+    dcolors = distinguishable_colors(gc.num_colors)
+    sethue("grey50")
+    drawgraph(g, layout=stress,
+        vertexfillcolors = dcolors[gc.colors],
+        vertexshapesizes = 20)
+end 600 300
`,61),l=[T,A,S,y,L,c,U];function a(C,E,x,s,t,u){return j(),D("div",null,l)}const k=g(z,[["render",a]]);export{w as __pageData,k as default}; diff --git a/dev/assets/basics.md.ameQl_Qu.lean.js b/dev/assets/basics.md.ameQl_Qu.lean.js new file mode 100644 index 0000000..4f6c701 --- /dev/null +++ b/dev/assets/basics.md.ameQl_Qu.lean.js @@ -0,0 +1,108 @@ +import{_ as g,c as D,o as j,a7 as N,m as M,a as I}from"./chunks/framework.BHs3sUaM.js";const i="/cormullion.github.io/Karnak.jl/dev/assets/dijkstra.ajbtxkHI.gif",w=JSON.parse('{"title":"Graph theory","description":"","frontmatter":{},"headers":[],"relativePath":"basics.md","filePath":"basics.md","lastUpdated":null}'),z={name:"basics.md"},T=N("",5),A=M("details",{closed:""},[M("summary",null,"Code for this figure"),M("p",null,"This code generates the figure below."),M("div",{class:"language-julia vp-adaptive-theme"},[M("button",{title:"Copy Code",class:"copy"}),M("span",{class:"lang"},"julia"),M("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[M("code",null,[M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Karnak, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"d "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @drawsvg"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," background"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey10"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"yellow"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Graph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"3"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"3"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_vertex!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_edge!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"3"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"4"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," drawgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g,")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," layout"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"spring,")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," margin"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"50"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgecurvature"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgegaps"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"30"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgestrokeweights"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabels "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (v) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},' "thing '),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$(v)"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapes "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," :circle"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexfillcolors "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_red"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_purple"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_green"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_blue"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")],")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapesizes "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 25"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabeltextcolors "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," colorant"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"white"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgelabels"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(n, s, d, f, t) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," θ "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," slope"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(f, t)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," translate"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"midpoint"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(f, t))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," rotate"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(θ)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"white"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," label"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$s"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," and "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$d"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", ["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":s"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"][n], O, offset"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"orange"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," label"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"edge '),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$n"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", ["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":s"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":n"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"][n], O, offset"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"=-"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"15"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," )")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 600"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 350")])])])])],-1),S=N("",57),y=M("details",{closed:""},[M("summary",null,"Code for this figure"),M("p",null,"This code generates the figure below."),M("div",{class:"language-julia vp-adaptive-theme"},[M("button",{title:"Copy Code",class:"copy"}),M("span",{class:"lang"},"julia"),M("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[M("code",null,[M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Karnak, Graphs, NetworkLayout")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"smallgraphs "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":bull"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"bull"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":chvatal"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"chvatal"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":cubical"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"cubical"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":desargues"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"desargues"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":diamond"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"diamond"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":dodecahedral"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"dodecahedral"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":frucht"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"frucht"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":heawood"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"heawood"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":house"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"house"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":housex"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"housex"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":icosahedral"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"icosahedral"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":karate"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"karate"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":krackhardtkite"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"krackhardtkite"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":moebiuskantor"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"moebiusantor"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":octahedral"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"octahedral"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":pappus"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"pappus"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":petersen"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"petersen"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":sedgewickmaze"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"sedgewick"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":tetrahedral"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tetrahedral"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":truncatedcube"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"truncatedcube"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":truncatedtetrahedron"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"truncatedtetrahedron"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":truncatedtetrahedron_dir"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"truncatedtetrahedron"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":tutte"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tutte"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"))")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"colors "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ["),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"paleturquoise"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"chartreuse"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"thistle1"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"pink"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"gold"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"wheat"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"olivedrab1"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"palegreen"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"turquoise1"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"lightgreen"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"plum1"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"plum"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"violet"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"hotpink"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"]")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"smallgraphs "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @drawsvg"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," background"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey10"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"orange"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ng "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," length"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(smallgraphs)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," N "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," convert"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Int, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"ceil"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"sqrt"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ng)))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," tiles "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Tiler"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"800"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"800"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", N, N)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," setline"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.5"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (pos, n) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," tiles")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @layer"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," n "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ng "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"&&"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," break")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," translate"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pos)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(colors["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"mod1"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(n, "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")])")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," bbox "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," BoundingBox"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"box"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(O, tiles"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tilewidth, tiles"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tileheight))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," smallgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"first"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(smallgraphs[n]))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," drawgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, boundingbox "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," bbox, vertexshapesizes "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", layout "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," stress)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"cyan"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," text"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"string"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"last"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(smallgraphs[n])), halign "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," :center"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"boxbottomcenter"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(bbox))")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 800"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 800")])])])])],-1),L=N("",89),c=M("details",{closed:""},[M("summary",null,"Code for this figure"),M("p",null,"This code generates the figure below."),M("div",{class:"language-julia vp-adaptive-theme"},[M("button",{title:"Copy Code",class:"copy"}),M("span",{class:"lang"},"julia"),M("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[M("code",null,[M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Karnak, Graphs, NetworkLayout, Colors")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"d "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @drawsvg"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," background"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey10"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"purple"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," bt "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," binary_tree"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"4"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," SimpleDiGraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"collect"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"edges"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(bt)))")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," # add another vertex")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_vertex!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g)")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_edge!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"7"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"16"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),I(` +`),M("span",{class:"line"}),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," drawgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g,")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," layout"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"buchheim,")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," margin"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"20"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgestrokeweights"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgegaps"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabels "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 1"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},":"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"nv"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapes"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":circle"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexfillcolors"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_red"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_purple"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_green"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," RGB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(Karnak"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"Luxor"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia_blue"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"..."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")],")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapesizes"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"12"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabeltextcolors"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"colorant"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"white"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," )")]),I(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 600"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 350")])])])])],-1),U=N("",61),l=[T,A,S,y,L,c,U];function a(C,E,x,s,t,u){return j(),D("div",null,l)}const k=g(z,[["render",a]]);export{w as __pageData,k as default}; diff --git a/dev/assets/chunks/@localSearchIndexroot.Da2ssDEu.js b/dev/assets/chunks/@localSearchIndexroot.Da2ssDEu.js new file mode 100644 index 0000000..3ab07b0 --- /dev/null +++ b/dev/assets/chunks/@localSearchIndexroot.Da2ssDEu.js @@ -0,0 +1 @@ +const e='{"documentCount":72,"nextId":72,"documentIds":{"0":"/cormullion.github.io/Karnak.jl/dev/reference/functionindex#Index","1":"/cormullion.github.io/Karnak.jl/dev/#Introduction-to-Karnak","2":"/cormullion.github.io/Karnak.jl/dev/#Quick-start","3":"/cormullion.github.io/Karnak.jl/dev/examples#Examples","4":"/cormullion.github.io/Karnak.jl/dev/examples#Julia-type-tree","5":"/cormullion.github.io/Karnak.jl/dev/examples#Julia-source-tree","6":"/cormullion.github.io/Karnak.jl/dev/examples#LayeredLayouts.jl","7":"/cormullion.github.io/Karnak.jl/dev/examples#Simple-dependency-graph","8":"/cormullion.github.io/Karnak.jl/dev/examples#The-London-Tube","9":"/cormullion.github.io/Karnak.jl/dev/examples#Setup","10":"/cormullion.github.io/Karnak.jl/dev/examples#Not-a-map","11":"/cormullion.github.io/Karnak.jl/dev/examples#Train-terminates-here","12":"/cormullion.github.io/Karnak.jl/dev/examples#Neighbors","13":"/cormullion.github.io/Karnak.jl/dev/examples#Centrality","14":"/cormullion.github.io/Karnak.jl/dev/examples#Mornington-Crescent","15":"/cormullion.github.io/Karnak.jl/dev/examples#Pandemic","16":"/cormullion.github.io/Karnak.jl/dev/examples#The-JuliaGraphs-logo","17":"/cormullion.github.io/Karnak.jl/dev/examples#Julia-Package-Dependencies","18":"/cormullion.github.io/Karnak.jl/dev/examples#Finding-the-general-registry","19":"/cormullion.github.io/Karnak.jl/dev/examples#Find-packages-that-depend-on-a-specific-package","20":"/cormullion.github.io/Karnak.jl/dev/examples#Build-a-directed-tree","21":"/cormullion.github.io/Karnak.jl/dev/examples#Shortest-paths-and-lengths-of-branches","22":"/cormullion.github.io/Karnak.jl/dev/examples#Computing-a-full-subgraph","23":"/cormullion.github.io/Karnak.jl/dev/examples#All-roads-lead-to-home","24":"/cormullion.github.io/Karnak.jl/dev/examples#Pagerank","25":"/cormullion.github.io/Karnak.jl/dev/examples#Highly-ranked","26":"/cormullion.github.io/Karnak.jl/dev/examples#Most-dependencies,-most-depended-on","27":"/cormullion.github.io/Karnak.jl/dev/examples#Is_cyclic","28":"/cormullion.github.io/Karnak.jl/dev/examples#Draw-some-graphs","29":"/cormullion.github.io/Karnak.jl/dev/basics#Graph-theory","30":"/cormullion.github.io/Karnak.jl/dev/basics#Graphs,-vertices,-and-edges","31":"/cormullion.github.io/Karnak.jl/dev/basics#Undirected-and-directed-graphs","32":"/cormullion.github.io/Karnak.jl/dev/basics#Very-simple-graphs","33":"/cormullion.github.io/Karnak.jl/dev/basics#Well-known-graphs","34":"/cormullion.github.io/Karnak.jl/dev/basics#Even-more-well-known-graphs","35":"/cormullion.github.io/Karnak.jl/dev/basics#Getting-some-information-about-the-graph","36":"/cormullion.github.io/Karnak.jl/dev/basics#Degree","37":"/cormullion.github.io/Karnak.jl/dev/basics#Graphs-as-matrices","38":"/cormullion.github.io/Karnak.jl/dev/basics#Adjacency-matrix","39":"/cormullion.github.io/Karnak.jl/dev/basics#Incidence-matrix","40":"/cormullion.github.io/Karnak.jl/dev/basics#Adjacency-list","41":"/cormullion.github.io/Karnak.jl/dev/basics#Paths,-cycles,-routes,-and-traversals","42":"/cormullion.github.io/Karnak.jl/dev/basics#Paths-and-cycles","43":"/cormullion.github.io/Karnak.jl/dev/basics#Visiting-every-vertex-once","44":"/cormullion.github.io/Karnak.jl/dev/basics#Trees","45":"/cormullion.github.io/Karnak.jl/dev/basics#Shortest-paths:-the-A*-algorithm","46":"/cormullion.github.io/Karnak.jl/dev/basics#Shortest-paths:-Dijkstra\'s-algorithm","47":"/cormullion.github.io/Karnak.jl/dev/basics#Weighted-graphs","48":"/cormullion.github.io/Karnak.jl/dev/basics#Spanning-trees","49":"/cormullion.github.io/Karnak.jl/dev/basics#Centrality","50":"/cormullion.github.io/Karnak.jl/dev/basics#Graph-coloring","51":"/cormullion.github.io/Karnak.jl/dev/syntax#Syntax","52":"/cormullion.github.io/Karnak.jl/dev/syntax#Overview","53":"/cormullion.github.io/Karnak.jl/dev/syntax#Summary-of-keywords","54":"/cormullion.github.io/Karnak.jl/dev/syntax#The-BoundingBox","55":"/cormullion.github.io/Karnak.jl/dev/syntax#Layout-algorithms","56":"/cormullion.github.io/Karnak.jl/dev/syntax#Initial-positions-for-the-layout-algorithms","57":"/cormullion.github.io/Karnak.jl/dev/syntax#The-vertexfunction-and-edgefunction-arguments","58":"/cormullion.github.io/Karnak.jl/dev/syntax#Functions-as-keyword-arguments","59":"/cormullion.github.io/Karnak.jl/dev/syntax#Vertex-labels-and-shapes","60":"/cormullion.github.io/Karnak.jl/dev/syntax#vertexlabels","61":"/cormullion.github.io/Karnak.jl/dev/syntax#Using-LaTex-in-labels","62":"/cormullion.github.io/Karnak.jl/dev/syntax#vertexshapes-and-vertexshapesizes","63":"/cormullion.github.io/Karnak.jl/dev/syntax#vertexstrokecolors-and-vertexfillcolors","64":"/cormullion.github.io/Karnak.jl/dev/syntax#Edge-options","65":"/cormullion.github.io/Karnak.jl/dev/syntax#edgefunction","66":"/cormullion.github.io/Karnak.jl/dev/syntax#edgelist-and-edgelines","67":"/cormullion.github.io/Karnak.jl/dev/syntax#Edge-labels","68":"/cormullion.github.io/Karnak.jl/dev/syntax#edgelist","69":"/cormullion.github.io/Karnak.jl/dev/syntax#edgecurvature-and-edgegaps","70":"/cormullion.github.io/Karnak.jl/dev/syntax#edgestrokecolors-and-edgestrokeweights","71":"/cormullion.github.io/Karnak.jl/dev/syntax#edgedashpatterns"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,3],"1":[3,1,53],"2":[2,3,46],"3":[1,1,14],"4":[3,1,143],"5":[3,1,124],"6":[2,1,128],"7":[3,1,167],"8":[3,3,28],"9":[1,6,92],"10":[3,6,134],"11":[3,6,76],"12":[1,6,27],"13":[1,6,80],"14":[2,6,106],"15":[1,6,139],"16":[3,3,135],"17":[3,3,88],"18":[4,6,82],"19":[8,6,117],"20":[4,6,185],"21":[6,6,87],"22":[4,6,100],"23":[5,6,90],"24":[1,6,87],"25":[2,6,61],"26":[5,6,127],"27":[2,6,57],"28":[3,6,157],"29":[2,1,65],"30":[4,2,227],"31":[4,2,115],"32":[3,2,81],"33":[3,2,132],"34":[5,5,189],"35":[6,2,153],"36":[1,8,57],"37":[3,2,34],"38":[2,5,126],"39":[2,5,123],"40":[2,5,123],"41":[5,2,94],"42":[3,7,186],"43":[4,7,94],"44":[1,2,112],"45":[5,2,156],"46":[5,2,179],"47":[2,2,245],"48":[2,2,180],"49":[1,2,89],"50":[2,2,97],"51":[1,1,1],"52":[1,1,207],"53":[3,1,158],"54":[2,1,31],"55":[2,1,159],"56":[6,3,122],"57":[5,1,128],"58":[4,1,40],"59":[4,1,1],"60":[1,5,89],"61":[4,5,75],"62":[3,5,173],"63":[3,5,128],"64":[2,1,1],"65":[1,3,94],"66":[3,3,155],"67":[2,3,181],"68":[1,3,85],"69":[3,3,180],"70":[3,3,41],"71":[1,3,83]},"averageFieldLength":[2.8472222222222223,3.4861111111111107,107.24999999999999],"storedFields":{"0":{"title":"Index","titles":[]},"1":{"title":"Introduction to Karnak","titles":[]},"2":{"title":"Quick start","titles":["Introduction to Karnak"]},"3":{"title":"Examples","titles":[]},"4":{"title":"Julia type tree","titles":["Examples"]},"5":{"title":"Julia source tree","titles":["Examples"]},"6":{"title":"LayeredLayouts.jl","titles":["Examples"]},"7":{"title":"Simple dependency graph","titles":[]},"8":{"title":"The London Tube","titles":["Simple dependency graph"]},"9":{"title":"Setup","titles":["Simple dependency graph","The London Tube"]},"10":{"title":"Not a map","titles":["Simple dependency graph","The London Tube"]},"11":{"title":"Train terminates here","titles":["Simple dependency graph","The London Tube"]},"12":{"title":"Neighbors","titles":["Simple dependency graph","The London Tube"]},"13":{"title":"Centrality","titles":["Simple dependency graph","The London Tube"]},"14":{"title":"Mornington Crescent","titles":["Simple dependency graph","The London Tube"]},"15":{"title":"Pandemic","titles":["Simple dependency graph","The London Tube"]},"16":{"title":"The JuliaGraphs logo","titles":["Simple dependency graph"]},"17":{"title":"Julia Package Dependencies","titles":["Simple dependency graph"]},"18":{"title":"Finding the general registry","titles":["Simple dependency graph","Julia Package Dependencies"]},"19":{"title":"Find packages that depend on a specific package","titles":["Simple dependency graph","Julia Package Dependencies"]},"20":{"title":"Build a directed tree","titles":["Simple dependency graph","Julia Package Dependencies"]},"21":{"title":"Shortest paths and lengths of branches","titles":["Simple dependency graph","Julia Package Dependencies"]},"22":{"title":"Computing a full subgraph","titles":["Simple dependency graph","Julia Package Dependencies"]},"23":{"title":"All roads lead to home","titles":["Simple dependency graph","Julia Package Dependencies"]},"24":{"title":"Pagerank","titles":["Simple dependency graph","Julia Package Dependencies"]},"25":{"title":"Highly ranked","titles":["Simple dependency graph","Julia Package Dependencies"]},"26":{"title":"Most dependencies, most depended on","titles":["Simple dependency graph","Julia Package Dependencies"]},"27":{"title":"Is_cyclic","titles":["Simple dependency graph","Julia Package Dependencies"]},"28":{"title":"Draw some graphs","titles":["Simple dependency graph","Julia Package Dependencies"]},"29":{"title":"Graph theory","titles":[]},"30":{"title":"Graphs, vertices, and edges","titles":["Graph theory"]},"31":{"title":"Undirected and directed graphs","titles":["Graph theory"]},"32":{"title":"Very simple graphs","titles":["Graph theory"]},"33":{"title":"Well-known graphs","titles":["Graph theory"]},"34":{"title":"Even more well-known graphs","titles":["Graph theory","Well-known graphs"]},"35":{"title":"Getting some information about the graph","titles":["Graph theory"]},"36":{"title":"Degree","titles":["Graph theory","Getting some information about the graph"]},"37":{"title":"Graphs as matrices","titles":["Graph theory"]},"38":{"title":"Adjacency matrix","titles":["Graph theory","Graphs as matrices"]},"39":{"title":"Incidence matrix","titles":["Graph theory","Graphs as matrices"]},"40":{"title":"Adjacency list","titles":["Graph theory","Graphs as matrices"]},"41":{"title":"Paths, cycles, routes, and traversals","titles":["Graph theory"]},"42":{"title":"Paths and cycles","titles":["Graph theory","Paths, cycles, routes, and traversals"]},"43":{"title":"Visiting every vertex once","titles":["Graph theory","Paths, cycles, routes, and traversals"]},"44":{"title":"Trees","titles":["Graph theory"]},"45":{"title":"Shortest paths: the A* algorithm","titles":["Graph theory"]},"46":{"title":"Shortest paths: Dijkstra\'s algorithm","titles":["Graph theory"]},"47":{"title":"Weighted graphs","titles":["Graph theory"]},"48":{"title":"Spanning trees","titles":["Graph theory"]},"49":{"title":"Centrality","titles":["Graph theory"]},"50":{"title":"Graph coloring","titles":["Graph theory"]},"51":{"title":"Syntax","titles":[]},"52":{"title":"Overview","titles":["Syntax"]},"53":{"title":"Summary of keywords","titles":["Syntax"]},"54":{"title":"The BoundingBox","titles":["Syntax"]},"55":{"title":"Layout algorithms","titles":["Syntax"]},"56":{"title":"Initial positions for the layout algorithms","titles":["Syntax","Layout algorithms"]},"57":{"title":"The vertexfunction and edgefunction arguments","titles":["Syntax"]},"58":{"title":"Functions as keyword arguments","titles":["Syntax"]},"59":{"title":"Vertex labels and shapes","titles":["Syntax"]},"60":{"title":"vertexlabels","titles":["Syntax","Vertex labels and shapes"]},"61":{"title":"Using LaTex in labels","titles":["Syntax","Vertex labels and shapes"]},"62":{"title":"vertexshapes and vertexshapesizes","titles":["Syntax","Vertex labels and shapes"]},"63":{"title":"vertexstrokecolors and vertexfillcolors","titles":["Syntax","Vertex labels and shapes"]},"64":{"title":"Edge options","titles":["Syntax"]},"65":{"title":"edgefunction","titles":["Syntax","Edge options"]},"66":{"title":"edgelist and edgelines","titles":["Syntax","Edge options"]},"67":{"title":"Edge labels","titles":["Syntax","Edge options"]},"68":{"title":"edgelist","titles":["Syntax","Edge options"]},"69":{"title":"edgecurvature and edgegaps","titles":["Syntax","Edge options"]},"70":{"title":"edgestrokecolors and edgestrokeweights","titles":["Syntax","Edge options"]},"71":{"title":"edgedashpatterns","titles":["Syntax","Edge options"]}},"dirtCount":0,"index":[["∘",{"2":{"55":1}}],["÷",{"2":{"42":1}}],["⋅",{"2":{"38":70,"39":123,"47":6}}],["θ",{"2":{"30":2,"67":1}}],["$j",{"2":{"67":1}}],["$i",{"2":{"67":1}}],["$n",{"2":{"30":1}}],["$d",{"2":{"30":1}}],["$s",{"2":{"30":1}}],["$",{"2":{"30":1,"61":1}}],["$pkgname",{"2":{"7":1}}],["⋮",{"2":{"19":1,"20":1,"21":1,"22":1,"24":1,"25":2,"26":7}}],["~",{"2":{"18":1}}],["π",{"2":{"16":2,"39":1,"42":1,"52":1,"62":2,"66":1,"67":1,"68":1,"69":6}}],["|",{"2":{"63":13}}],["||",{"2":{"14":1,"35":2,"45":1}}],["|>",{"2":{"9":1,"69":1}}],["question",{"2":{"41":1}}],["questions",{"2":{"41":2}}],["queen",{"2":{"13":1}}],["quantumespresso",{"2":{"22":1}}],["quantumespressoexpress",{"2":{"21":1,"22":1}}],["quite",{"2":{"20":1,"28":1,"45":1}}],["quickly",{"2":{"39":1}}],["quick",{"0":{"2":1},"2":{"9":1}}],["quot",{"2":{"15":6,"19":4,"20":2,"21":2,"41":4,"46":1,"47":4,"49":4,"53":2,"56":2,"68":2}}],["∈",{"2":{"7":2,"14":2,"15":1,"23":1,"35":3,"42":3,"45":4,"52":1,"60":1,"62":1,"68":2}}],["ugly",{"2":{"52":1}}],["u",{"2":{"19":1}}],["up",{"2":{"10":1,"32":1,"40":1,"47":1,"48":1,"52":1}}],["updated",{"2":{"10":1}}],["unnecessarily",{"2":{"69":1}}],["unknown",{"2":{"63":1}}],["units",{"2":{"69":1}}],["unit",{"2":{"47":1}}],["unique",{"2":{"7":1,"21":1,"23":1}}],["unbroken",{"2":{"42":1}}],["until",{"2":{"20":1}}],["unfortunately",{"2":{"16":1}}],["unless",{"2":{"11":1}}],["unusual",{"2":{"11":1,"45":1}}],["underwateracoustics",{"2":{"19":2,"22":1}}],["underground",{"2":{"8":1}}],["undirected",{"0":{"31":1},"2":{"9":1,"30":1,"31":2,"32":1,"38":1,"42":1,"47":2}}],["usually",{"2":{"41":1,"47":1,"52":1}}],["us",{"2":{"41":1}}],["useful",{"2":{"22":1,"35":2,"39":1,"43":1,"47":1,"66":2}}],["used",{"2":{"4":1,"10":1,"30":2,"31":1,"39":2,"43":1,"48":1,"52":1,"53":3,"56":1,"58":1,"62":1}}],["use",{"2":{"3":1,"11":1,"16":2,"30":1,"32":1,"35":1,"42":1,"45":2,"47":3,"52":2,"57":1,"60":1,"61":1,"62":1,"66":2,"67":1}}],["uses",{"2":{"1":1,"23":1,"30":1,"40":1,"41":1,"43":1}}],["using",{"0":{"61":1},"2":{"2":2,"6":2,"7":6,"8":1,"9":1,"13":1,"14":1,"16":4,"17":4,"20":1,"22":2,"29":1,"40":1,"44":1,"46":1,"49":1,"57":3,"61":1}}],["`",{"2":{"7":1}}],["`$",{"2":{"7":1}}],["k=2",{"2":{"55":1}}],["kruskal",{"2":{"48":3}}],["krackhardtkite",{"2":{"34":2,"36":1}}],["karate",{"2":{"34":2,"49":2,"52":1,"62":1,"68":1}}],["karnak",{"0":{"1":1},"1":{"2":1},"2":{"0":1,"1":4,"2":2,"4":1,"5":1,"6":2,"7":1,"9":1,"16":6,"17":1,"24":1,"29":2,"30":7,"34":1,"44":5,"48":1,"52":1,"56":1,"61":1,"62":3,"63":1,"69":3}}],["key",{"2":{"49":1}}],["keywords",{"0":{"53":1},"2":{"52":2,"55":1,"57":1,"58":2,"63":1,"65":1}}],["keyword",{"0":{"58":1},"2":{"31":1,"33":1,"47":1,"52":2,"53":2,"54":1,"55":1,"57":1,"58":1,"63":1,"65":3,"66":1,"67":1,"69":2}}],["keys",{"2":{"7":1,"19":1,"67":1}}],["kinds",{"2":{"66":1}}],["kind",{"2":{"30":1}}],["know",{"2":{"43":1,"56":1}}],["knowledge",{"2":{"29":1,"47":1}}],["known",{"0":{"33":1,"34":1},"1":{"34":1},"2":{"8":1,"33":1,"34":2,"46":1}}],["k",{"2":{"15":2,"16":8,"28":1,"47":2,"48":2,"66":2,"67":1}}],["∉",{"2":{"7":3,"20":1}}],["≥",{"2":{"7":1}}],["zip",{"2":{"6":1,"43":1,"46":1}}],["zarate",{"2":{"6":3}}],["rgraph",{"2":{"57":3}}],["rgb",{"2":{"6":1,"16":3,"30":4,"44":4,"62":2,"63":1}}],["right",{"2":{"33":1,"38":1,"43":1,"55":1}}],["rich",{"2":{"28":1}}],["riders",{"2":{"11":1}}],["runs",{"2":{"48":1,"52":1}}],["running",{"2":{"46":1}}],["run",{"2":{"20":1,"29":1,"46":1}}],["rt=0",{"2":{"16":1}}],["r",{"2":{"16":1}}],["roman",{"2":{"63":1}}],["rotations",{"2":{"62":1}}],["rotation",{"2":{"52":1,"53":2}}],["rotated",{"2":{"52":1}}],["rotate",{"2":{"30":1}}],["routines",{"2":{"61":1}}],["routes",{"0":{"41":1},"1":{"42":1,"43":1},"2":{"14":1}}],["route",{"2":{"14":2,"42":1,"45":2,"65":2}}],["round",{"2":{"49":1,"67":1}}],["robert",{"2":{"48":1}}],["rowheights",{"2":{"42":1}}],["row",{"2":{"38":1}}],["rows",{"2":{"38":1,"39":1}}],["roads",{"0":{"23":1}}],["rooted",{"2":{"44":2}}],["root",{"2":{"20":5,"44":1}}],["rootpkg",{"2":{"7":3}}],["raphael",{"2":{"45":1}}],["railway",{"2":{"41":1}}],["rasterdatasources",{"2":{"27":1}}],["ranges",{"2":{"52":1}}],["range",{"2":{"33":2,"52":1,"53":13,"55":2,"60":1,"63":6,"69":1}}],["ranked",{"0":{"25":1},"2":{"25":1}}],["ranks",{"2":{"24":2,"25":1,"26":1}}],["rand",{"2":{"23":1,"42":1,"45":2,"48":2,"62":1,"63":1,"66":1}}],["random",{"2":{"23":3,"45":3,"50":1}}],["randomhue",{"2":{"6":1}}],["ran",{"2":{"19":1}}],["rather",{"2":{"10":1,"47":1,"55":1,"56":1}}],["require",{"2":{"47":1,"50":1}}],["required",{"2":{"9":1,"14":1,"61":1}}],["remove",{"2":{"60":1}}],["removing",{"2":{"45":1}}],["remember",{"2":{"52":1}}],["rem",{"2":{"45":1}}],["rebeccapurple",{"2":{"35":1}}],["recursive",{"2":{"57":1}}],["receives",{"2":{"40":1,"52":1}}],["received",{"2":{"31":1}}],["recreates",{"2":{"38":1}}],["recommenders",{"2":{"21":1,"22":1}}],["record",{"2":{"11":1}}],["relate",{"2":{"30":1}}],["relationships",{"2":{"30":1,"35":1,"41":1}}],["render",{"2":{"28":1}}],["renaming",{"2":{"17":1}}],["reinforcementlearningenvironmentdiscrete",{"2":{"27":1}}],["reinforcementlearning",{"2":{"27":1}}],["rev",{"2":{"26":1}}],["rev=true",{"2":{"23":1,"25":1,"26":2}}],["reference",{"2":{"45":1}}],["refer",{"2":{"30":1,"49":1,"57":1}}],["ref",{"2":{"20":1,"22":1,"23":1,"25":1,"26":3,"27":1}}],["registries",{"2":{"18":2}}],["registry",{"0":{"18":1},"2":{"17":1,"18":5,"19":2,"20":2,"28":1}}],["regularly",{"2":{"10":1}}],["red",{"2":{"15":1,"16":1,"30":1,"35":2,"44":1,"45":1,"46":1,"48":1,"52":1,"62":2,"63":3}}],["reason",{"2":{"52":1}}],["reasonably",{"2":{"41":1}}],["reasonable",{"2":{"10":1}}],["readpng",{"2":{"57":1}}],["read",{"2":{"28":1}}],["reaches",{"2":{"20":1}}],["reachable",{"2":{"18":1}}],["really",{"2":{"37":1}}],["real",{"2":{"8":1,"53":7}}],["repeat",{"2":{"52":1}}],["representative",{"2":{"52":1}}],["representations",{"2":{"28":1}}],["representation",{"2":{"24":1,"30":1,"31":1}}],["representing",{"2":{"40":1,"50":1}}],["represent",{"2":{"30":1,"39":1,"40":1}}],["represented",{"2":{"10":1,"30":1,"37":1,"38":1}}],["replaced",{"2":{"47":1}}],["replace",{"2":{"7":1}}],["resources",{"2":{"63":1}}],["respectively",{"2":{"35":1}}],["reservoircomputing",{"2":{"22":1}}],["results",{"2":{"46":1}}],["resulting",{"2":{"33":1}}],["result",{"2":{"15":1,"18":1,"19":1,"20":1,"21":6,"42":1,"46":1,"56":1}}],["residents",{"2":{"10":1}}],["rescale",{"2":{"9":2,"13":1,"16":4,"28":5,"42":1,"47":1,"49":1,"55":1,"56":1,"57":1,"62":3,"63":2,"69":4,"70":1,"71":1}}],["returning",{"2":{"53":1}}],["returns",{"2":{"15":1,"20":1,"24":1,"26":1,"27":1,"35":1,"45":2,"53":4}}],["returned",{"2":{"6":1,"21":1,"49":1,"50":1,"55":1,"69":1}}],["return",{"2":{"5":2,"7":2,"16":1,"20":1,"35":1,"46":1,"57":1,"60":1,"62":1,"63":1}}],["re",{"2":{"2":1,"11":1,"28":1,"60":1,"67":1,"71":1}}],["95",{"2":{"66":1}}],["9558b2",{"2":{"39":1}}],["90",{"2":{"32":1}}],["90pt",{"2":{"6":1}}],["98",{"2":{"26":3}}],["92",{"2":{"19":1}}],["9",{"2":{"6":3,"28":1,"35":4,"40":7,"42":3,"55":1}}],["80",{"2":{"39":1}}],["800",{"2":{"7":1,"10":2,"13":1,"23":2,"24":2,"34":4,"38":1,"43":1,"45":1,"49":1,"50":1,"57":1,"69":1}}],["830897608377834e",{"2":{"26":1}}],["8",{"2":{"6":6,"7":2,"13":1,"16":3,"20":1,"35":4,"40":6,"42":7,"49":1,"52":1,"57":1,"66":1,"67":1,"69":2,"70":2,"71":2}}],["779",{"2":{"26":1}}],["778",{"2":{"26":1}}],["777",{"2":{"26":1}}],["776",{"2":{"26":1}}],["744",{"2":{"26":1}}],["743",{"2":{"26":1}}],["730",{"2":{"25":1}}],["729",{"2":{"25":1}}],["75",{"2":{"16":2,"66":1}}],["700",{"2":{"7":1}}],["7",{"2":{"6":1,"7":2,"13":1,"16":3,"18":1,"21":3,"26":1,"28":3,"33":1,"35":4,"40":7,"42":2,"44":1,"47":1,"49":1,"57":1,"66":3}}],["60n",{"2":{"66":1}}],["60",{"2":{"56":1,"69":1}}],["600",{"2":{"6":1,"13":1,"15":2,"23":1,"30":2,"31":1,"33":6,"34":2,"35":1,"36":1,"38":1,"39":1,"40":1,"42":5,"44":1,"45":2,"46":2,"47":1,"48":5,"49":1,"50":1,"52":2,"55":1,"56":4,"57":1,"60":2,"61":1,"62":9,"63":5,"65":1,"66":4,"67":4,"68":2,"69":2,"70":1,"71":1}}],["6×6",{"2":{"47":1}}],["65",{"2":{"26":1}}],["688",{"2":{"25":1,"26":1}}],["6",{"2":{"6":1,"10":3,"13":2,"16":4,"18":1,"21":6,"26":2,"34":1,"35":6,"38":1,"39":2,"40":6,"42":6,"43":1,"45":1,"47":3,"52":1,"55":2,"56":1,"60":3,"62":2,"65":1}}],["565",{"2":{"26":1}}],["564",{"2":{"26":1}}],["563",{"2":{"26":1}}],["562",{"2":{"26":1}}],["543",{"2":{"25":1,"26":2}}],["50",{"2":{"16":1,"20":1,"23":1,"67":2,"69":1}}],["500ranks",{"2":{"24":1}}],["500",{"2":{"6":1,"67":2,"69":1,"70":1}}],["52",{"2":{"16":1}}],["5tx",{"2":{"7":1}}],["5",{"2":{"6":3,"7":2,"14":2,"15":3,"16":9,"21":3,"23":1,"26":4,"28":1,"32":5,"33":5,"34":1,"35":6,"38":4,"40":7,"42":6,"45":2,"48":1,"52":1,"55":2,"57":2,"62":8,"63":1,"65":1,"66":2,"67":4,"68":2,"69":1,"71":4}}],["550",{"2":{"4":1,"33":1,"55":1}}],["45",{"2":{"32":1,"66":1}}],["450",{"2":{"16":1}}],["461",{"2":{"26":1}}],["42",{"2":{"6":1}}],["41",{"2":{"6":2}}],["400",{"2":{"10":6,"32":2,"33":1,"38":2,"43":2,"45":1,"46":1,"48":1,"50":1,"65":1,"66":1,"71":1}}],["40",{"2":{"6":2,"39":1,"47":1,"61":5,"69":1}}],["4",{"2":{"6":7,"7":2,"9":1,"14":1,"16":7,"26":1,"28":1,"30":8,"31":7,"33":1,"35":5,"38":4,"40":6,"42":6,"44":1,"47":31,"48":4,"52":1,"55":1,"57":2,"60":1,"61":1,"65":2,"66":6,"68":2,"69":3}}],["05",{"2":{"55":1}}],["0e7",{"2":{"47":2}}],["073",{"2":{"42":1}}],["0s",{"2":{"38":1,"39":1}}],["0601632015232426e",{"2":{"26":1}}],["001",{"2":{"24":1}}],["0012284800170342895",{"2":{"24":1}}],["000",{"2":{"47":2}}],["00042629607921470863",{"2":{"24":1}}],["00043081071431843264",{"2":{"24":1}}],["00034105802509359976",{"2":{"24":1}}],["0005504809666182096",{"2":{"24":1}}],["0002616217369290926",{"2":{"24":1}}],["0002471787754446367",{"2":{"24":1}}],["00020384989099126913",{"2":{"24":6}}],["0",{"2":{"5":1,"7":3,"13":6,"14":1,"15":2,"16":10,"20":2,"21":21,"22":2,"23":1,"24":15,"26":12,"28":8,"32":2,"33":5,"34":1,"38":13,"39":5,"42":7,"45":2,"47":34,"48":1,"49":3,"52":1,"53":2,"55":6,"56":2,"57":3,"62":11,"63":3,"65":1,"66":5,"67":3,"68":3,"69":12,"70":1,"71":2}}],["02^exp",{"2":{"5":1}}],["2l",{"2":{"57":1}}],["2tx",{"2":{"7":1}}],["294",{"2":{"16":2}}],["29",{"2":{"6":2,"65":1}}],["285",{"2":{"26":1}}],["287",{"2":{"26":1}}],["280",{"2":{"9":4}}],["28",{"2":{"6":3}}],["270",{"2":{"9":1,"28":1}}],["27",{"2":{"6":1}}],["267",{"2":{"9":1}}],["26",{"2":{"6":1}}],["258",{"2":{"25":1}}],["259",{"2":{"25":1}}],["2500",{"2":{"28":2}}],["250",{"2":{"8":1,"39":1,"55":1}}],["25",{"2":{"6":1,"15":2,"16":2,"28":1,"30":1,"62":3,"65":1,"67":1}}],["24065280609297e",{"2":{"26":1}}],["244",{"2":{"9":1}}],["24",{"2":{"6":1,"26":1}}],["23",{"2":{"6":9,"47":1}}],["220",{"2":{"42":1}}],["227",{"2":{"19":1,"20":1}}],["22",{"2":{"6":1,"15":2}}],["21",{"2":{"6":1,"45":1}}],["2022",{"2":{"19":1}}],["2020",{"2":{"17":1,"19":1}}],["200",{"2":{"13":1,"15":1,"16":2,"45":1,"48":3,"55":1}}],["20",{"2":{"5":2,"6":1,"13":1,"23":1,"28":3,"35":1,"36":2,"39":1,"40":7,"45":3,"46":2,"47":1,"48":1,"50":3,"60":1,"62":1,"63":2,"66":2,"67":3,"68":1,"69":1,"71":3}}],["2π",{"2":{"5":1,"28":1}}],["2",{"2":{"4":2,"5":2,"6":3,"10":2,"11":1,"14":1,"15":1,"16":5,"28":4,"30":8,"31":5,"32":1,"33":9,"34":1,"35":5,"39":2,"40":10,"42":4,"43":1,"46":1,"47":4,"48":2,"52":2,"55":9,"62":4,"66":3,"67":3,"69":1,"70":1,"71":1}}],[">ranks",{"2":{"25":1}}],[">=",{"2":{"18":1,"20":1}}],[">",{"2":{"4":2,"5":1,"6":1,"7":2,"13":2,"14":1,"15":2,"16":4,"20":1,"23":2,"24":2,"26":3,"28":4,"30":2,"34":1,"35":2,"36":2,"42":4,"43":1,"45":3,"46":2,"47":2,"48":2,"52":1,"55":3,"56":1,"57":2,"60":1,"62":4,"63":2,"65":2,"66":5,"67":3,"68":2,"69":2,"70":1,"71":2}}],["3c",{"2":{"69":2}}],["3×3",{"2":{"39":1}}],["39",{"2":{"6":1}}],["372",{"2":{"26":1}}],["37",{"2":{"6":1}}],["36c",{"2":{"69":1}}],["360",{"2":{"28":1,"42":2,"47":1,"49":1,"55":1,"57":1,"63":1}}],["360rand",{"2":{"7":1}}],["36",{"2":{"6":1}}],["34",{"2":{"6":1}}],["389826",{"2":{"39":1}}],["38",{"2":{"6":2}}],["3527mm",{"2":{"69":1}}],["359",{"2":{"63":1,"70":1,"71":1}}],["350",{"2":{"30":1,"44":1,"67":1}}],["35",{"2":{"6":3,"26":2,"69":1}}],["33",{"2":{"6":2}}],["32",{"2":{"6":1}}],["31",{"2":{"6":2}}],["30bc",{"2":{"49":1}}],["300816007616213e",{"2":{"26":1}}],["300",{"2":{"13":1,"26":1,"30":1,"31":1,"32":2,"33":6,"34":2,"35":1,"36":1,"40":1,"42":1,"47":1,"50":1,"52":2,"55":1,"60":2,"61":1,"62":7,"63":3,"66":3,"67":1}}],["308",{"2":{"9":1}}],["30pt",{"2":{"6":1}}],["30",{"2":{"5":1,"6":3,"23":1,"38":1,"39":1,"40":1,"42":1,"45":1,"47":2,"50":1,"54":1,"63":1,"66":1,"67":3,"70":1}}],["3",{"2":{"4":1,"6":1,"7":1,"13":1,"14":2,"15":2,"16":3,"26":1,"28":3,"30":10,"31":3,"32":2,"35":4,"39":3,"40":7,"42":3,"47":3,"48":2,"50":1,"52":1,"56":3,"62":2,"66":4,"67":2,"69":4,"70":2}}],["years",{"2":{"34":1}}],["yellow",{"2":{"30":1,"62":1,"68":1}}],["your",{"2":{"61":1,"67":1}}],["yourself",{"2":{"55":1,"69":1}}],["yours",{"2":{"18":1}}],["young",{"2":{"46":1}}],["youtube",{"2":{"17":1}}],["you",{"2":{"7":1,"9":1,"11":1,"17":1,"18":1,"29":3,"30":1,"42":1,"43":2,"47":1,"52":2,"55":3,"56":1,"57":4,"58":1,"60":1,"61":2,"62":2,"65":2,"66":4,"67":2,"69":1,"71":1}}],["ys",{"2":{"6":2}}],["y",{"2":{"4":5,"6":1,"9":1,"56":1}}],["xy",{"2":{"56":1}}],["x3c",{"2":{"18":1,"45":1}}],["xs",{"2":{"6":2}}],["x26",{"2":{"5":2,"7":2,"13":2,"19":2,"20":4,"23":2,"24":2,"34":2,"35":2,"42":4,"45":6,"46":2,"60":2,"62":2,"68":4}}],["x",{"2":{"4":5,"6":1,"9":2,"56":1,"61":2,"68":1}}],["+=",{"2":{"20":1,"45":1}}],["+",{"2":{"4":1,"5":2,"6":1,"13":1,"15":1,"16":1,"23":1,"33":4,"39":1,"42":3,"49":1,"55":4,"57":1,"62":1,"69":8}}],["wt",{"2":{"67":3}}],["write",{"2":{"67":2}}],["wrote",{"2":{"46":1}}],["wg",{"2":{"47":8}}],["well",{"0":{"33":1,"34":1},"1":{"34":1},"2":{"33":1,"34":2,"46":1,"52":1}}],["web",{"2":{"30":1}}],["were",{"2":{"28":1,"57":2}}],["weighted",{"0":{"47":1},"2":{"47":5,"48":1,"67":1}}],["weight",{"2":{"20":2,"22":2,"47":13,"48":3,"67":1}}],["weights",{"2":{"20":1,"22":1,"47":6,"48":3,"52":1,"55":2,"67":4}}],["we",{"2":{"18":1,"19":1,"20":1,"21":1,"24":1,"25":1,"30":5,"31":4,"32":2,"33":1,"35":1,"37":1,"38":1,"39":2,"40":2,"41":4,"44":2,"46":1,"47":3}}],["wall",{"2":{"28":1}}],["walk",{"2":{"5":5}}],["watch",{"2":{"17":1}}],["waterloo",{"2":{"9":1}}],["warren",{"2":{"14":1}}],["was",{"2":{"10":1,"15":1,"16":3,"17":2,"31":1,"45":1,"46":2}}],["ways",{"2":{"30":2,"49":1}}],["way",{"2":{"9":1,"17":1,"26":1,"31":1,"39":1,"40":1,"45":1,"50":1,"52":1,"63":1}}],["wanted",{"2":{"16":1}}],["want",{"2":{"9":1,"41":1,"61":1,"71":1}}],["would",{"2":{"28":1,"31":1,"34":1}}],["word",{"2":{"47":1}}],["words",{"2":{"41":1}}],["work",{"2":{"55":1,"71":1}}],["workshop",{"2":{"17":1}}],["working",{"2":{"6":1,"42":1}}],["world",{"2":{"8":1,"11":1,"30":1}}],["won",{"2":{"5":1}}],["why",{"2":{"39":1}}],["what",{"2":{"15":1,"33":1,"35":1}}],["who",{"2":{"11":1,"34":1}}],["wheat",{"2":{"34":1}}],["wheel",{"2":{"33":4}}],["whether",{"2":{"31":1,"46":1}}],["when",{"2":{"6":1,"15":1,"19":1,"29":1,"47":1,"48":2,"62":1,"63":1,"65":1}}],["whereas",{"2":{"39":1,"52":1}}],["where",{"2":{"5":3,"15":1,"39":1,"42":1,"47":1,"55":2,"67":1,"68":1,"69":1}}],["while",{"2":{"20":1,"28":1,"45":1}}],["which",{"2":{"5":1,"7":1,"17":3,"26":2,"30":2,"35":1,"40":2,"41":1,"42":1,"44":2,"46":2,"47":3,"48":1,"50":1,"52":1,"53":1,"55":2,"56":1,"66":1}}],["whiten",{"2":{"62":2}}],["white",{"2":{"2":1,"4":1,"10":4,"23":2,"24":2,"28":2,"30":2,"36":1,"42":1,"44":1,"47":1,"61":1,"65":1,"66":1,"67":2,"69":1,"70":2,"71":1}}],["width",{"2":{"53":1}}],["widths",{"2":{"4":1}}],["wikipedia",{"2":{"34":1}}],["will",{"2":{"20":1,"35":1,"53":2,"55":1,"56":1,"62":2}}],["without",{"2":{"48":1}}],["with",{"2":{"4":1,"5":1,"11":1,"20":1,"21":1,"22":2,"24":1,"25":1,"28":2,"29":3,"30":4,"31":3,"32":1,"35":2,"38":5,"39":4,"40":6,"41":1,"42":1,"43":1,"44":2,"46":4,"47":1,"50":1,"52":1,"58":2,"60":1,"62":2,"63":1,"65":1,"66":3,"67":1,"68":2,"71":1}}],["w",{"2":{"4":2,"16":4,"33":5,"45":5,"46":1,"55":5,"67":1}}],["hg",{"2":{"38":3}}],["h",{"2":{"33":5,"45":4,"55":5,"62":3}}],["hcat",{"2":{"32":1}}],["hsl",{"2":{"62":6}}],["hsv",{"2":{"42":1}}],["hsva",{"2":{"28":1}}],["hsb",{"2":{"7":1,"13":1,"42":1,"47":1,"49":1,"55":1,"57":1,"63":2,"66":1,"69":1,"70":1,"71":1}}],["hinted",{"2":{"62":1}}],["hideously",{"2":{"52":1}}],["his",{"2":{"46":1}}],["high",{"2":{"47":1}}],["higher",{"2":{"47":1}}],["highest",{"2":{"25":1,"48":1}}],["highlight",{"2":{"17":1}}],["highly",{"0":{"25":1},"2":{"13":1}}],["hierarchy",{"2":{"4":1}}],["horizontal",{"2":{"38":1}}],["hotpink",{"2":{"34":1,"62":1}}],["housex",{"2":{"34":2}}],["house",{"2":{"34":3,"38":2}}],["home",{"0":{"23":1}}],["hoping",{"2":{"16":1}}],["holds",{"2":{"11":1,"40":1}}],["however",{"2":{"43":1,"50":1}}],["how",{"2":{"3":1,"6":2,"19":2,"26":1,"30":1,"32":1,"35":2,"40":2,"43":1,"48":1,"56":1}}],["helvetica",{"2":{"63":1}}],["help",{"2":{"41":1}}],["he",{"2":{"46":1}}],["heawood",{"2":{"34":2}}],["heathrow",{"2":{"14":6,"15":2}}],["head",{"2":{"5":2}}],["here",{"0":{"11":1},"2":{"15":1,"29":1,"30":1,"33":1,"34":2,"39":2,"40":1,"41":1,"48":1,"49":1,"50":1,"52":2,"55":1,"56":1,"62":1,"65":1}}],["hart",{"2":{"45":1}}],["harry",{"2":{"10":1}}],["halign",{"2":{"34":1,"66":1}}],["halign=",{"2":{"5":1,"28":3,"42":1,"47":1,"67":2}}],["had",{"2":{"19":1}}],["has",{"2":{"17":1,"19":2,"27":2,"30":1,"31":1,"35":2,"40":1,"41":1,"42":2,"44":1,"47":1,"48":1,"50":1}}],["happen",{"2":{"15":1}}],["have",{"2":{"15":1,"19":1,"20":1,"31":1,"32":2,"33":1,"34":1,"41":2,"47":4,"48":1,"50":1,"52":1,"67":1,"69":1}}],["hand",{"2":{"10":1}}],["crosses",{"2":{"68":1}}],["creator",{"2":{"46":1}}],["creating",{"2":{"32":1}}],["created",{"2":{"47":1}}],["creates",{"2":{"30":1,"47":1}}],["create",{"2":{"30":2,"31":1,"38":1,"39":1,"47":1,"66":1}}],["creategif=true",{"2":{"15":1,"56":1,"69":1}}],["crescent",{"0":{"14":1},"2":{"14":2}}],["c=0",{"2":{"55":1}}],["cb3c33",{"2":{"39":1}}],["certain",{"2":{"49":1}}],["ceil",{"2":{"34":1}}],["centuries",{"2":{"33":1}}],["centrality",{"0":{"13":1,"49":1},"2":{"13":2,"24":1,"26":1,"49":5}}],["centered",{"2":{"62":1}}],["center",{"2":{"5":1,"28":3,"34":1,"42":1,"47":1,"53":3,"66":1,"67":2}}],["cut",{"2":{"62":1}}],["cup",{"2":{"46":1}}],["cubical",{"2":{"34":4,"63":1}}],["curves",{"2":{"57":1}}],["curviness",{"2":{"53":1}}],["curvature",{"2":{"31":1,"69":1}}],["current",{"2":{"9":1,"16":1,"20":2,"30":2,"52":3,"54":1,"62":1}}],["currently",{"2":{"7":1}}],["cycleedges",{"2":{"42":2}}],["cycles",{"0":{"41":1,"42":1},"1":{"42":1,"43":1},"2":{"42":13,"43":1,"44":1,"48":1,"53":2}}],["cycle",{"2":{"27":4,"42":20,"43":3}}],["cyclic",{"0":{"27":1},"2":{"27":2}}],["cyan",{"2":{"13":1,"34":1,"48":1,"61":1,"66":1,"67":1,"68":2}}],["cinefiles",{"2":{"26":1}}],["citableimage",{"2":{"18":2}}],["circshift",{"2":{"43":1,"46":1}}],["circuits",{"2":{"42":1}}],["circuit",{"2":{"10":1}}],["circles",{"2":{"30":1,"52":2,"62":1}}],["circle",{"2":{"4":1,"5":1,"14":2,"15":1,"16":1,"28":1,"30":1,"39":1,"44":1,"46":1,"48":1,"52":1,"53":2,"55":1,"56":1,"57":1,"62":5,"63":1,"65":1,"66":1,"67":1,"68":1}}],["clique",{"2":{"62":1,"65":1}}],["clipped",{"2":{"57":1}}],["clip",{"2":{"16":1}}],["club",{"2":{"49":1}}],["clearly",{"2":{"28":1}}],["clever",{"2":{"16":1,"55":1}}],["cloud",{"2":{"23":1,"63":1}}],["close=false",{"2":{"46":1}}],["closed",{"2":{"42":1}}],["close",{"2":{"21":1}}],["closest",{"2":{"21":1,"46":1}}],["classic",{"2":{"10":1}}],["csv",{"2":{"9":5}}],["christoph",{"2":{"44":1}}],["chvatal",{"2":{"34":2}}],["chess",{"2":{"34":1}}],["cheng",{"2":{"6":1}}],["choose",{"2":{"55":1,"60":1}}],["choosing",{"2":{"50":1}}],["choice",{"2":{"30":1}}],["chonky",{"2":{"17":1}}],["chartreuse",{"2":{"34":1}}],["changing",{"2":{"28":1}}],["change",{"2":{"47":1}}],["changed",{"2":{"17":1,"47":1}}],["changes",{"2":{"14":1,"17":1}}],["chapter",{"2":{"3":1}}],["child",{"2":{"5":2}}],["cases",{"2":{"69":1}}],["categories",{"2":{"52":1}}],["café",{"2":{"46":1}}],["calculate",{"2":{"69":1}}],["calculates",{"2":{"67":1}}],["calculated",{"2":{"33":1,"55":1,"65":1,"69":2}}],["calculations",{"2":{"47":1}}],["called",{"2":{"30":1,"37":1,"39":1,"42":1,"47":1}}],["call",{"2":{"5":7}}],["cairomakie",{"2":{"20":1}}],["can",{"2":{"4":1,"7":1,"8":1,"14":1,"17":1,"19":1,"20":1,"24":1,"25":1,"30":5,"31":2,"32":3,"35":1,"37":1,"38":2,"39":2,"41":3,"42":3,"43":2,"44":1,"46":1,"47":7,"48":2,"52":1,"55":2,"60":1,"61":1,"62":2,"66":3,"67":4}}],["c",{"2":{"4":2,"15":1,"16":9,"18":2,"19":1,"28":7,"45":3,"57":3,"69":5,"71":1}}],["copying",{"2":{"61":1}}],["coords",{"2":{"53":1}}],["coordinates",{"2":{"33":1,"53":2,"57":2,"65":1}}],["coffee",{"2":{"46":1}}],["commonly",{"2":{"34":1}}],["communicating",{"2":{"28":1}}],["commands",{"2":{"22":1}}],["completely",{"2":{"53":2,"57":1}}],["complete",{"2":{"33":6,"42":3,"43":1,"50":2,"52":1,"55":1,"57":1,"61":1,"67":3,"69":1}}],["complex",{"2":{"30":1}}],["complexity",{"2":{"28":1}}],["computes",{"2":{"24":1}}],["computer",{"2":{"18":1,"20":1}}],["computing",{"0":{"22":1}}],["compose",{"2":{"1":1}}],["courier",{"2":{"63":1}}],["course",{"2":{"20":1}}],["count",{"2":{"21":1}}],["couldn",{"2":{"31":1}}],["could",{"2":{"4":1,"43":1,"46":1,"47":2,"62":1,"67":1}}],["collect",{"2":{"44":1,"45":1}}],["collection",{"2":{"42":1}}],["colwidths",{"2":{"42":1}}],["column",{"2":{"38":1,"39":3}}],["columns",{"2":{"38":1,"39":1}}],["col",{"2":{"16":7,"62":4}}],["colored",{"2":{"49":1,"57":1,"68":1}}],["colorvectorspace",{"2":{"25":1}}],["color",{"2":{"16":2,"30":1,"36":1,"50":5,"52":3,"53":5,"62":2,"63":1}}],["coloring",{"0":{"50":1},"2":{"16":1,"50":2}}],["colorful",{"2":{"14":1}}],["colorant",{"2":{"5":1,"10":3,"11":1,"13":1,"16":3,"23":1,"24":1,"30":1,"35":3,"36":2,"39":4,"42":1,"45":3,"52":3,"53":7,"56":1,"61":1,"62":1,"63":7,"67":6,"68":1,"70":1}}],["colorschemes",{"2":{"20":1,"25":1,"26":1,"28":2}}],["colorschemetools",{"2":{"19":2,"22":1}}],["colors",{"2":{"5":1,"7":1,"9":1,"16":4,"17":3,"19":3,"20":5,"21":2,"22":1,"23":1,"25":1,"26":3,"28":1,"29":1,"30":1,"34":2,"36":1,"44":1,"48":1,"50":18,"52":4,"53":2,"56":1,"61":1,"63":2,"66":1,"69":3}}],["costs",{"2":{"47":1}}],["cosma",{"2":{"18":2}}],["cos",{"2":{"5":1}}],["coded",{"2":{"36":1}}],["code",{"2":{"4":2,"7":2,"17":1,"19":1,"23":1,"24":1,"28":1,"29":1,"30":2,"34":2,"44":2,"46":1,"67":1}}],["consequently",{"2":{"52":1}}],["consisting",{"2":{"39":1}}],["consists",{"2":{"30":1,"38":1}}],["constructor",{"2":{"32":1}}],["construction",{"2":{"1":1,"38":1}}],["constraineddynamics",{"2":{"20":1}}],["concept",{"2":{"14":1}}],["connects",{"2":{"40":3,"50":1}}],["connect",{"2":{"20":1,"30":1,"48":1}}],["connected",{"2":{"12":1,"17":1,"20":2,"31":1,"32":3,"33":3,"35":1,"38":1,"39":1,"40":2,"44":2,"50":1}}],["connecting",{"2":{"31":1}}],["connection",{"2":{"31":1,"38":3}}],["connections",{"2":{"10":1,"17":1,"28":1,"32":1,"40":1,"47":1}}],["connectivity",{"2":{"9":1,"41":1}}],["convert",{"2":{"9":1,"16":1,"34":1,"46":1,"62":2}}],["converted",{"2":{"6":1}}],["contrived",{"2":{"52":1}}],["control",{"2":{"52":2,"54":1,"57":1,"66":1,"67":1}}],["context",{"2":{"47":1}}],["continually",{"2":{"56":1}}],["continuous",{"2":{"41":1,"42":1}}],["continues",{"2":{"20":1}}],["continue",{"2":{"4":1}}],["containing",{"2":{"18":1}}],["contains",{"2":{"2":1,"3":1,"9":1,"15":1,"27":1,"29":1,"38":1}}],["dcolors",{"2":{"50":4}}],["d2",{"2":{"32":2}}],["d1",{"2":{"32":2}}],["ds",{"2":{"46":2}}],["dsge",{"2":{"27":1}}],["dst",{"2":{"14":2,"23":1,"35":4,"45":2,"47":3,"48":2,"53":1,"67":1,"69":2,"71":1}}],["ddep",{"2":{"20":3}}],["dynamicgrids",{"2":{"19":2,"22":1}}],["decorate",{"2":{"66":2}}],["decoration",{"2":{"66":2}}],["deatil",{"2":{"66":1}}],["demonstrate",{"2":{"63":1}}],["determines",{"2":{"69":1}}],["determine",{"2":{"52":1,"55":1}}],["determined",{"2":{"52":1,"62":1}}],["details",{"2":{"2":1,"9":1,"30":1,"49":1}}],["developer",{"2":{"44":1}}],["developed",{"2":{"17":1}}],["deliver",{"2":{"33":1}}],["defining",{"2":{"39":1}}],["definitions",{"2":{"41":1}}],["definition",{"2":{"30":1}}],["defines",{"2":{"39":1,"40":3}}],["define",{"2":{"32":1,"45":1,"57":1,"66":1}}],["defined",{"2":{"20":1,"22":1}}],["default",{"2":{"18":1,"20":1,"22":1,"30":1,"31":1,"47":1,"52":1,"53":1,"54":2,"62":1}}],["dest",{"2":{"48":4,"67":1}}],["destv",{"2":{"46":2}}],["destinations",{"2":{"67":2}}],["destinationvertex",{"2":{"58":1}}],["destination",{"2":{"35":1,"46":1,"67":1}}],["desargues",{"2":{"34":2}}],["described",{"2":{"34":1}}],["describe",{"2":{"30":1,"49":1}}],["despite",{"2":{"13":1}}],["designed",{"2":{"46":2}}],["designated",{"2":{"21":1,"44":1}}],["design",{"2":{"10":1}}],["degree",{"0":{"36":1},"2":{"11":3,"12":1,"28":2,"36":3,"62":1}}],["depended",{"0":{"26":1}}],["dependent",{"2":{"20":1,"22":2}}],["dependencies",{"0":{"17":1,"26":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"7":2,"17":1,"20":4,"21":1,"28":2}}],["dependency",{"0":{"7":1},"1":{"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"6":1,"17":2}}],["depend",{"0":{"19":1},"2":{"19":4,"26":1}}],["depends",{"2":{"17":1,"20":1}}],["dep",{"2":{"7":3,"22":2}}],["depgraph",{"2":{"7":4}}],["deps",{"2":{"7":10,"19":10,"20":5,"22":1,"27":1}}],["dashes",{"2":{"71":1}}],["dash",{"2":{"53":2,"71":1}}],["darkorange",{"2":{"63":2}}],["darkturquoise",{"2":{"62":1}}],["darkcyan",{"2":{"52":1}}],["darkrainbow",{"2":{"28":1}}],["danish",{"2":{"34":1}}],["day",{"2":{"28":1}}],["date",{"2":{"28":1}}],["dating",{"2":{"12":1}}],["dataframe",{"2":{"9":1}}],["dataframes",{"2":{"7":1,"9":1}}],["dags",{"2":{"6":1}}],["david",{"2":{"5":1,"6":1}}],["drink",{"2":{"46":1}}],["dries",{"2":{"28":1}}],["drop",{"2":{"5":1}}],["drawball",{"2":{"62":2}}],["draws",{"2":{"23":1,"35":1,"53":1,"60":1,"68":1}}],["drawsvg",{"2":{"2":1,"4":1,"5":1,"7":1,"10":2,"11":1,"13":1,"14":1,"16":1,"23":1,"24":1,"30":2,"31":1,"32":2,"33":6,"34":3,"35":1,"36":1,"38":2,"39":1,"40":1,"42":2,"43":1,"44":1,"45":2,"47":2,"48":2,"49":1,"50":2,"52":2,"55":1,"57":1,"60":2,"62":8,"63":4,"65":1,"66":4,"67":4,"68":1,"69":1,"70":1,"71":1}}],["drawn",{"2":{"10":1,"16":1,"30":1,"31":1,"44":1,"46":1,"52":2,"53":2,"57":1,"65":2,"66":1,"68":1}}],["draw",{"0":{"28":1},"2":{"4":1,"6":1,"7":1,"16":2,"17":1,"29":1,"46":2,"53":1,"57":2,"62":1,"66":2,"67":1,"68":1,"69":1}}],["drawings",{"2":{"30":1,"57":1}}],["drawing",{"2":{"1":1,"2":1,"9":1,"28":1,"30":1,"31":1,"52":2,"53":1,"54":1,"55":1,"57":4,"66":2}}],["drawgraph",{"2":{"0":1,"2":2,"3":1,"4":1,"5":1,"6":1,"7":1,"10":3,"11":1,"13":1,"14":2,"15":2,"16":1,"23":1,"24":1,"28":2,"30":3,"31":1,"32":2,"33":6,"34":3,"35":1,"36":1,"38":2,"39":1,"40":1,"42":3,"43":2,"44":1,"45":3,"46":2,"47":2,"48":8,"49":1,"50":2,"52":4,"55":3,"56":1,"57":1,"60":2,"61":1,"62":8,"63":4,"65":2,"66":5,"67":4,"68":3,"69":2,"70":1,"71":1}}],["down",{"2":{"46":1}}],["dodecahedral",{"2":{"34":2,"67":2}}],["doesn",{"2":{"20":1,"33":1,"56":1}}],["doing",{"2":{"20":1}}],["dojo",{"2":{"19":2}}],["don",{"2":{"19":1,"29":1,"62":1}}],["documenter",{"2":{"29":1}}],["documentation",{"2":{"2":1,"30":1,"57":1,"63":1}}],["docs",{"2":{"5":1,"69":1}}],["do",{"2":{"4":1,"10":1,"18":2,"19":2,"43":1,"46":1,"65":1}}],["d",{"2":{"4":1,"5":1,"7":1,"16":4,"18":6,"19":4,"20":2,"28":7,"30":2,"35":2,"44":1,"45":2,"46":1,"47":2,"55":1,"66":2,"69":5}}],["dgraphs",{"2":{"7":3}}],["dg",{"2":{"4":1,"39":2}}],["dictionary",{"2":{"67":1}}],["dict",{"2":{"53":1,"67":1}}],["dim=2",{"2":{"53":1,"55":2}}],["digits=1",{"2":{"67":1}}],["digits",{"2":{"49":1}}],["digraphs",{"2":{"42":1,"43":1}}],["digraph",{"2":{"4":1,"5":1,"7":1,"31":2,"32":1,"33":5,"39":2,"40":1,"42":3,"43":1,"66":1,"69":1}}],["dirname",{"2":{"69":2}}],["dirg",{"2":{"45":3}}],["dir",{"2":{"34":1}}],["directly",{"2":{"19":1,"20":1}}],["directions",{"2":{"39":1}}],["direction",{"2":{"10":1,"31":2}}],["direct",{"2":{"7":2,"19":3,"20":5,"22":1}}],["directed",{"0":{"20":1,"31":1},"2":{"6":1,"20":3,"22":1,"31":3,"32":1,"39":1,"40":1,"47":2,"67":1}}],["diagonal",{"2":{"38":1}}],["diagrams",{"2":{"6":1}}],["diagram",{"2":{"4":1}}],["diamond",{"2":{"34":2}}],["dijkstrastate",{"2":{"21":1,"46":2}}],["dijkstra",{"0":{"46":1},"2":{"21":2,"46":6}}],["display",{"2":{"52":1,"60":2}}],["displays",{"2":{"5":1,"38":1}}],["distinguishable",{"2":{"36":1,"50":3,"52":2,"66":1}}],["distiguish",{"2":{"31":1}}],["dists",{"2":{"21":7,"46":1}}],["distances",{"2":{"21":1,"47":1,"67":1,"69":1}}],["distance",{"2":{"16":1,"67":1,"69":1}}],["difficult",{"2":{"28":1,"31":1,"63":1,"67":1}}],["diff",{"2":{"15":2}}],["diffresult",{"2":{"15":5}}],["diffusion",{"2":{"15":3}}],["different",{"2":{"10":1,"50":1,"54":1,"69":1}}],["either",{"2":{"47":1,"69":1}}],["ep",{"2":{"46":3}}],["edsger",{"2":{"46":1}}],["edgegapanimation",{"2":{"69":1}}],["edgegaps=0",{"2":{"45":1,"48":1}}],["edgegaps=20",{"2":{"45":1}}],["edgegaps=12",{"2":{"44":1}}],["edgegaps=30",{"2":{"30":1}}],["edgegaps",{"0":{"69":1},"2":{"7":1,"47":1,"53":1,"67":1,"69":2}}],["edgeiterator",{"2":{"53":1,"66":1}}],["edgedashpatterns",{"0":{"71":1},"2":{"53":1,"71":1}}],["edgedest",{"2":{"42":1,"53":7,"57":1,"65":2,"67":4,"69":2,"70":1,"71":1}}],["edgeweights",{"2":{"47":2}}],["edgewts",{"2":{"35":2}}],["edgenumber",{"2":{"42":1,"45":1,"53":8,"57":1,"58":1,"65":2,"67":3,"69":1,"71":4}}],["edgelabeldict",{"2":{"67":3}}],["edgelabelrotations",{"2":{"53":1,"58":1,"67":1}}],["edgelabelfontfaces",{"2":{"53":1}}],["edgelabelfontsizes",{"2":{"47":1,"53":1,"71":1}}],["edgelabelcolors",{"2":{"53":1,"67":3,"70":1}}],["edgelabels",{"2":{"47":3,"48":1,"53":1,"58":1,"67":7,"70":1,"71":1}}],["edgelabels=f",{"2":{"67":1}}],["edgelabels=",{"2":{"30":1,"48":1}}],["edgelines=0",{"2":{"68":1}}],["edgelines=",{"2":{"48":2}}],["edgelines",{"0":{"66":1},"2":{"15":1,"28":1,"42":1,"53":2,"58":1,"66":3}}],["edgelist=mst",{"2":{"48":1}}],["edgelist=astar",{"2":{"23":1,"45":1}}],["edgelist",{"0":{"66":1,"68":1},"2":{"14":1,"24":1,"42":2,"43":3,"46":1,"48":3,"53":1,"65":1,"66":3,"68":3}}],["edgesrc",{"2":{"42":1,"53":6,"57":1,"65":2,"67":4,"69":2,"70":1,"71":1}}],["edges",{"0":{"30":1},"2":{"14":1,"26":2,"30":1,"31":2,"32":6,"35":7,"36":1,"38":1,"39":1,"40":1,"41":2,"42":1,"44":1,"45":4,"46":1,"47":3,"48":4,"52":4,"53":4,"57":2,"65":1,"66":7,"67":1,"68":2,"69":4}}],["edgestrokeweights=10",{"2":{"68":1}}],["edgestrokeweights=3",{"2":{"48":1}}],["edgestrokeweights=5",{"2":{"45":1,"48":1}}],["edgestrokeweights=",{"2":{"45":1}}],["edgestrokeweights=0",{"2":{"33":1}}],["edgestrokeweights=2",{"2":{"30":1,"44":1}}],["edgestrokeweights",{"0":{"70":1},"2":{"7":1,"14":1,"35":1,"39":1,"42":1,"43":1,"45":1,"48":4,"53":1,"55":1,"58":1,"66":1,"69":1,"70":1,"71":1}}],["edgestrokecolors=",{"2":{"70":1,"71":1}}],["edgestrokecolors=rgba",{"2":{"68":1}}],["edgestrokecolors",{"0":{"70":1},"2":{"6":1,"7":1,"35":1,"39":1,"45":1,"53":1,"55":1,"58":1,"66":1,"67":3,"69":1}}],["edgecurvature=10",{"2":{"47":1}}],["edgecurvature=5",{"2":{"31":1}}],["edgecurvature=0",{"2":{"30":1}}],["edgecurvature",{"0":{"69":1},"2":{"7":1,"31":1,"33":1,"53":1,"67":1,"69":2,"70":1}}],["edgefunction",{"0":{"57":1,"65":1},"2":{"5":1,"16":1,"28":1,"46":1,"53":1,"57":3,"58":1,"65":3,"66":1}}],["edgefunction=",{"2":{"4":1,"69":1}}],["edge",{"0":{"64":1,"67":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1},"2":{"4":1,"5":2,"6":1,"7":1,"16":14,"20":3,"22":1,"30":11,"31":7,"35":5,"39":2,"42":2,"43":1,"44":1,"45":1,"46":1,"47":15,"48":6,"50":1,"53":11,"57":1,"58":1,"65":2,"66":5,"67":5,"69":5}}],["effectively",{"2":{"47":1,"60":1}}],["efficiently",{"2":{"42":1}}],["eftfitter",{"2":{"25":1}}],["even",{"0":{"34":1}}],["everywhere",{"2":{"69":1}}],["every",{"0":{"43":1},"2":{"11":1,"18":2,"28":1,"32":2,"33":4,"42":2,"43":1,"46":1,"47":1,"48":1,"53":10,"62":1}}],["ever",{"2":{"10":1}}],["empty",{"2":{"30":1,"47":1}}],["ecosystem",{"2":{"25":1}}],["etc",{"2":{"14":1,"53":1,"55":1,"67":1}}],["elaborate",{"2":{"67":1}}],["electrontests",{"2":{"25":1,"26":1}}],["electrical",{"2":{"10":1}}],["elements",{"2":{"19":2,"40":1}}],["element",{"2":{"18":1,"19":1,"20":1,"21":1,"24":1,"25":2,"26":7,"35":1,"40":3,"42":1}}],["else",{"2":{"5":2,"7":1,"20":1,"47":1,"57":1,"67":1}}],["error",{"2":{"7":1}}],["enumerate",{"2":{"35":1,"42":1,"46":2}}],["entries",{"2":{"38":1,"39":2,"47":1}}],["enthusiasts",{"2":{"34":1}}],["entities",{"2":{"30":2}}],["engineer",{"2":{"10":1}}],["enough",{"2":{"7":1}}],["endpoint",{"2":{"69":2}}],["ends",{"2":{"69":2}}],["end",{"2":{"2":1,"4":9,"5":7,"6":1,"7":15,"10":4,"11":2,"13":1,"14":3,"15":6,"16":6,"18":2,"19":4,"20":4,"21":2,"22":4,"23":2,"24":1,"26":1,"27":1,"28":9,"30":3,"31":1,"32":2,"33":6,"34":6,"35":5,"36":1,"38":2,"39":1,"40":1,"42":12,"43":1,"44":1,"45":6,"46":5,"47":4,"48":8,"49":1,"50":2,"52":2,"55":1,"56":3,"57":5,"60":2,"61":1,"62":12,"63":5,"65":6,"66":7,"67":12,"68":1,"69":7,"70":1,"71":3}}],["easingfunction",{"2":{"69":1}}],["easily",{"2":{"7":1,"16":1,"24":1,"30":1,"45":1}}],["eased",{"2":{"69":5}}],["easy",{"2":{"28":1,"34":1}}],["eachindex",{"2":{"4":1,"21":1,"25":1}}],["each",{"2":{"4":1,"15":1,"24":1,"30":1,"31":1,"33":2,"35":1,"38":2,"40":2,"44":1,"47":2,"52":3,"53":9,"56":1,"60":1,"62":2,"67":2,"69":1}}],["e",{"2":{"6":1,"14":3,"23":4,"35":16,"47":3,"48":6,"67":1,"69":5}}],["existing",{"2":{"47":1}}],["examining",{"2":{"46":1}}],["exampleheathrow",{"2":{"14":1}}],["examplefind",{"2":{"9":2,"12":2}}],["example",{"2":{"4":1,"5":1,"8":1,"10":2,"11":1,"13":1,"14":1,"15":1,"17":1,"19":1,"23":1,"31":1,"35":1,"38":2,"39":1,"40":1,"41":1,"42":2,"43":1,"44":1,"45":1,"47":2,"50":2,"52":1,"55":1,"56":1,"57":1,"60":1,"62":2,"66":1,"67":1,"68":1,"69":2}}],["examples",{"0":{"3":1},"1":{"4":1,"5":1,"6":1},"2":{"3":1,"9":2,"22":2,"29":1}}],["extensively",{"2":{"34":1}}],["extended",{"2":{"7":1}}],["extracted",{"2":{"65":1}}],["extract",{"2":{"46":1}}],["extras",{"2":{"27":1}}],["extrema",{"2":{"9":6,"13":1}}],["ex",{"2":{"5":10}}],["expensive",{"2":{"47":1}}],["explanation",{"2":{"33":1}}],["explored",{"2":{"20":3}}],["expanduser",{"2":{"18":1}}],["expr",{"2":{"5":2}}],["expression",{"2":{"5":4}}],["exports",{"2":{"2":1}}],["v+2",{"2":{"62":1}}],["v+h",{"2":{"45":1}}],["v+1",{"2":{"45":1}}],["vlist",{"2":{"43":3,"46":2}}],["vandalize",{"2":{"45":1}}],["vandalism",{"2":{"45":1}}],["various",{"2":{"34":1,"46":1,"48":1,"52":1,"55":1}}],["valign=",{"2":{"28":3,"47":1,"66":1,"67":1}}],["value",{"2":{"21":1,"35":1,"38":1,"47":2,"53":1,"69":1}}],["values",{"2":{"10":1,"18":2,"19":1,"39":1,"47":1,"49":1,"52":4,"67":1,"69":1}}],["vague",{"2":{"28":1}}],["vtkdataio",{"2":{"25":1}}],["vtx",{"2":{"7":2,"13":3,"14":6,"36":4,"45":4,"53":12}}],["v1",{"2":{"18":2}}],["vcat",{"2":{"16":1,"23":1,"33":1,"55":1}}],["view",{"2":{"34":1}}],["violet",{"2":{"34":1}}],["via",{"2":{"32":1}}],["video",{"2":{"17":2}}],["victoria",{"2":{"14":4}}],["visiting",{"0":{"43":1},"2":{"11":1}}],["visit",{"2":{"11":1,"43":1}}],["visitors",{"2":{"10":1}}],["visually",{"2":{"30":1,"35":1}}],["visual",{"2":{"7":1,"30":1}}],["visualizations",{"2":{"28":1}}],["visualize",{"2":{"3":1}}],["visualizing",{"2":{"1":1}}],["ve",{"2":{"30":1}}],["vector",{"2":{"7":1,"18":2,"19":3,"20":1,"21":1,"22":1,"24":1,"25":2,"26":7,"35":1,"42":2,"47":1,"49":1,"52":2,"53":27,"55":1,"62":2,"69":1}}],["vectors",{"2":{"6":1,"52":1,"65":1}}],["vertical",{"2":{"38":1}}],["vertices=true",{"2":{"16":2,"39":1}}],["vertices",{"0":{"30":1},"2":{"10":1,"11":1,"15":3,"16":1,"20":1,"21":1,"22":4,"23":4,"26":3,"30":9,"31":3,"32":6,"33":4,"35":6,"38":2,"39":2,"40":4,"41":2,"42":2,"45":1,"46":3,"47":2,"48":1,"49":3,"50":4,"52":5,"53":1,"55":2,"60":3,"62":2,"65":1,"66":2,"68":1}}],["vertexlist",{"2":{"43":2}}],["vertexlabelrotations",{"2":{"52":1,"53":1,"63":1}}],["vertexlabeloffsetangles",{"2":{"42":1,"53":1,"63":1}}],["vertexlabeloffsetdistances",{"2":{"42":1,"53":1,"61":1,"63":1}}],["vertexlabeltextcolors=colorant",{"2":{"44":1}}],["vertexlabeltextcolors=",{"2":{"42":1}}],["vertexlabeltextcolors",{"2":{"5":1,"10":3,"11":1,"13":1,"23":1,"24":1,"30":1,"36":1,"52":2,"53":1,"58":1,"61":1,"63":1,"67":1}}],["vertexlabelfontfaces",{"2":{"5":1,"23":1,"53":1,"63":2}}],["vertexlabelfontsizes=30",{"2":{"46":1}}],["vertexlabelfontsizes",{"2":{"5":1,"10":3,"13":1,"23":1,"24":1,"36":1,"45":1,"52":1,"53":1,"60":1,"62":1,"63":2,"66":1,"67":1,"68":1}}],["vertexlabels=1",{"2":{"33":2,"38":1,"48":1}}],["vertexlabels",{"0":{"60":1},"2":{"2":1,"5":1,"6":1,"7":1,"10":3,"11":1,"13":1,"14":1,"23":1,"24":1,"30":2,"31":1,"32":2,"33":4,"34":1,"35":1,"36":1,"38":1,"42":2,"44":1,"45":1,"47":2,"48":1,"49":1,"52":1,"53":1,"55":1,"58":1,"60":4,"61":1,"62":2,"63":1,"66":2,"67":3,"68":1}}],["vertexofinterest",{"2":{"35":6}}],["vertexsizes",{"2":{"69":7}}],["vertexshaperotations",{"2":{"53":1,"58":1,"62":2}}],["vertexshapes=",{"2":{"44":1,"46":2,"48":2}}],["vertexshapesizes=newvertexsizes",{"2":{"69":1}}],["vertexshapesizes=7",{"2":{"48":1}}],["vertexshapesizes=10",{"2":{"48":1}}],["vertexshapesizes=12",{"2":{"44":1}}],["vertexshapesizes",{"0":{"62":1},"2":{"5":1,"11":1,"13":1,"14":1,"15":1,"23":1,"30":1,"34":1,"35":1,"36":1,"39":1,"42":1,"45":1,"47":1,"48":1,"49":1,"50":2,"52":2,"53":1,"58":1,"60":2,"62":6,"63":3,"67":1,"68":1,"71":1}}],["vertexshapes",{"0":{"62":1},"2":{"5":1,"7":1,"10":3,"14":1,"24":1,"30":1,"39":1,"42":3,"45":2,"48":3,"52":2,"53":1,"58":1,"62":8,"63":3,"65":2,"66":4,"67":3,"68":3,"69":1}}],["vertexstrokeweights",{"2":{"52":1,"53":1,"58":1,"63":2}}],["vertexstrokecolors",{"0":{"63":1},"2":{"23":1,"52":1,"53":1,"58":1,"63":2}}],["vertexfunction",{"0":{"57":1},"2":{"15":1,"16":1,"28":2,"53":1,"57":4,"58":1,"65":1}}],["vertexfunction=",{"2":{"4":1,"57":1}}],["vertexfillcolors=",{"2":{"44":1,"56":1,"69":1}}],["vertexfillcolors",{"0":{"63":1},"2":{"13":1,"30":1,"35":1,"36":1,"39":1,"45":1,"49":1,"50":2,"52":2,"53":1,"58":1,"62":1,"63":3,"68":1}}],["vertex",{"0":{"43":1,"59":1},"1":{"60":1,"61":1,"62":1,"63":1},"2":{"4":4,"5":8,"11":1,"15":2,"20":3,"24":1,"26":2,"30":6,"31":8,"32":1,"33":6,"35":7,"36":3,"38":6,"39":3,"40":8,"41":2,"42":3,"43":1,"44":5,"45":2,"46":4,"52":5,"53":15,"55":2,"56":1,"57":5,"58":2,"60":4,"61":1,"62":7,"63":2,"66":4,"67":2,"68":2,"69":2}}],["very",{"0":{"32":1},"2":{"10":1,"21":1,"30":1}}],["versions",{"2":{"33":1}}],["version",{"2":{"7":1,"10":1,"33":1}}],["v",{"2":{"4":4,"7":3,"15":3,"16":4,"20":1,"22":6,"23":3,"24":3,"28":11,"30":2,"35":6,"42":8,"45":4,"52":6,"57":4,"60":3,"61":1,"62":10,"63":4,"68":4}}],["1s",{"2":{"38":1,"39":2,"47":1}}],["144",{"2":{"25":1,"26":1}}],["1400",{"2":{"20":1}}],["14",{"2":{"6":1,"40":6}}],["133",{"2":{"26":1}}],["137",{"2":{"25":1,"26":1}}],["1374",{"2":{"20":1}}],["1375",{"2":{"20":2,"21":1,"22":1,"24":1,"25":2,"26":7}}],["13",{"2":{"6":2,"7":1,"40":6,"47":1}}],["1968",{"2":{"45":1}}],["1931",{"2":{"10":1}}],["19",{"2":{"6":1,"40":6}}],["1898",{"2":{"34":1}}],["1863",{"2":{"12":1}}],["18",{"2":{"6":1,"40":6}}],["17",{"2":{"6":1,"40":6,"68":2}}],["160",{"2":{"42":1}}],["164",{"2":{"25":1}}],["16",{"2":{"6":1,"40":6,"44":1,"45":1,"47":1,"65":1,"67":1}}],["1200",{"2":{"28":2}}],["12",{"2":{"6":2,"30":2,"33":2,"40":6,"42":3,"44":1,"45":1,"47":1,"55":1,"66":2}}],["110",{"2":{"42":1}}],["1186467511475384e",{"2":{"26":1}}],["112",{"2":{"25":1,"26":1}}],["115",{"2":{"19":1}}],["11",{"2":{"6":1,"35":2,"40":6}}],["10×15",{"2":{"39":1}}],["10×10",{"2":{"38":1}}],["10bc",{"2":{"13":1}}],["10",{"2":{"6":2,"7":1,"15":2,"32":4,"33":2,"34":1,"35":11,"38":1,"40":6,"42":8,"43":1,"46":2,"47":3,"48":3,"52":2,"55":1,"60":1,"62":2,"66":3,"67":1,"68":2,"69":5,"70":1,"71":4}}],["100bc",{"2":{"49":1}}],["1000",{"2":{"4":1}}],["100",{"2":{"2":1,"7":1,"14":1,"55":1}}],["153",{"2":{"26":1}}],["15339826572024867",{"2":{"24":1}}],["150",{"2":{"16":1,"49":1}}],["15",{"2":{"4":1,"5":3,"6":1,"15":2,"30":1,"35":1,"39":1,"40":6,"47":3,"48":1,"49":1,"60":1,"62":2,"63":3,"66":6,"68":2}}],["1",{"2":{"2":2,"4":3,"5":4,"6":5,"7":4,"10":4,"11":2,"12":1,"13":1,"14":1,"15":4,"16":15,"18":1,"20":5,"21":7,"22":1,"23":2,"25":1,"26":4,"28":6,"30":10,"31":10,"33":4,"34":1,"35":9,"38":45,"39":49,"40":9,"42":11,"43":2,"44":1,"45":7,"46":9,"47":9,"48":7,"49":1,"50":1,"52":2,"55":7,"56":3,"57":2,"60":4,"61":1,"62":6,"63":9,"66":10,"67":6,"68":3,"69":11,"70":3,"71":2}}],["=>",{"2":{"6":41,"7":2,"35":16,"43":1,"46":1}}],["==",{"2":{"5":1,"11":1,"20":1,"21":2,"22":2,"35":4,"43":1,"46":1,"56":1}}],["=",{"2":{"2":2,"4":11,"5":22,"6":4,"7":24,"9":9,"10":18,"11":3,"13":8,"14":8,"15":8,"16":12,"18":18,"19":24,"20":6,"21":2,"22":6,"23":9,"24":7,"25":1,"26":8,"27":1,"28":11,"30":11,"31":2,"32":6,"33":20,"34":17,"35":12,"36":6,"38":5,"39":8,"40":1,"42":30,"43":7,"44":4,"45":16,"46":9,"47":13,"48":22,"49":7,"50":10,"52":11,"53":1,"55":23,"56":3,"57":3,"60":7,"61":4,"62":27,"63":20,"65":9,"66":30,"67":35,"68":11,"69":19,"70":5,"71":7}}],["mst",{"2":{"48":15}}],["m",{"2":{"33":1,"38":1,"39":2,"55":2}}],["much",{"2":{"33":1}}],["must",{"2":{"7":1,"47":1}}],["mgformat",{"2":{"22":1}}],["my",{"2":{"18":1,"19":1,"20":1,"46":1,"57":2}}],["metro",{"2":{"47":1}}],["metagraph",{"2":{"20":3,"22":2}}],["metagraphs",{"2":{"17":1,"20":1,"22":1}}],["metadigraph",{"2":{"20":1,"22":1}}],["measures",{"2":{"49":1}}],["measure",{"2":{"49":2}}],["measuring",{"2":{"13":1}}],["mean",{"2":{"47":1}}],["meanings",{"2":{"41":2}}],["means",{"2":{"38":1,"52":1}}],["meet",{"2":{"31":1,"36":1,"37":1}}],["meshviz",{"2":{"20":1}}],["mesh",{"2":{"16":1}}],["media",{"2":{"1":1}}],["minor",{"2":{"69":1}}],["minimize=false",{"2":{"48":1}}],["minimum",{"2":{"48":1}}],["minimal",{"2":{"42":1}}],["minutes",{"2":{"20":1,"46":1}}],["middle",{"2":{"28":1,"47":1,"66":1,"67":1}}],["midpoint",{"2":{"4":1,"30":1,"47":2,"48":2,"67":6,"71":1}}],["mimisneasy",{"2":{"26":1}}],["mimipage2020",{"2":{"26":1}}],["microscopylabels",{"2":{"26":1}}],["microbiomeplots",{"2":{"20":1}}],["might",{"2":{"15":1,"18":1,"43":1,"49":1,"50":1}}],["mixed",{"2":{"10":1}}],["moebiusantor",{"2":{"34":1}}],["moebiuskantor",{"2":{"34":1,"62":5}}],["money",{"2":{"31":2}}],["mosaicviews",{"2":{"27":3}}],["most",{"0":{"26":2},"2":{"10":1,"17":1,"52":1}}],["mostly",{"2":{"7":1}}],["movie",{"2":{"15":1,"46":1,"56":1,"69":1}}],["move",{"2":{"5":1}}],["morning",{"2":{"46":1}}],["morningtoncrescent",{"2":{"14":5}}],["mornington",{"0":{"14":1},"2":{"14":2}}],["more",{"0":{"34":1},"2":{"4":1,"10":1,"17":1,"33":1,"34":2,"41":1,"44":2,"47":1,"52":1,"57":1,"62":1,"66":1,"67":3,"68":1}}],["modelling",{"2":{"31":1}}],["modelled",{"2":{"8":1,"47":2}}],["modia",{"2":{"27":1}}],["modia3d",{"2":{"27":1}}],["modiaplot",{"2":{"20":1}}],["modify",{"2":{"18":1}}],["modified",{"2":{"9":2}}],["mod1",{"2":{"16":1,"34":1,"42":2,"52":1,"71":1}}],["mp",{"2":{"4":5}}],["machines",{"2":{"63":1}}],["magic",{"2":{"52":1}}],["magenta",{"2":{"42":1,"47":2}}],["maze",{"2":{"45":1}}],["mazes",{"2":{"45":1}}],["may",{"2":{"28":1}}],["madnlpgraph",{"2":{"26":1}}],["made",{"2":{"17":1,"28":1,"29":1,"30":1}}],["matrices",{"0":{"37":1},"1":{"38":1,"39":1,"40":1},"2":{"37":2}}],["matrix",{"0":{"38":1,"39":1},"2":{"9":1,"37":2,"38":9,"39":8,"47":2,"53":1,"55":3}}],["mathtexengine",{"2":{"61":3}}],["mathematician",{"2":{"34":1}}],["mathieu",{"2":{"17":1,"19":1}}],["makes",{"2":{"66":1,"67":1}}],["make",{"2":{"42":1,"56":1,"61":1}}],["makebezierpath",{"2":{"16":1}}],["making",{"2":{"31":1}}],["makiegallery",{"2":{"26":1}}],["makie",{"2":{"1":2,"26":2,"27":1}}],["main",{"2":{"15":2,"31":1,"46":2,"55":1,"56":2,"69":2}}],["maxdeg",{"2":{"28":4}}],["maximum",{"2":{"13":1,"28":1,"48":1,"49":1}}],["maxbc",{"2":{"13":2}}],["marks",{"2":{"68":1}}],["marking",{"2":{"30":1}}],["margin",{"2":{"52":1,"53":2,"54":1}}],["margin=80",{"2":{"69":1}}],["margin=70",{"2":{"69":1}}],["margin=30",{"2":{"61":1}}],["margin=20",{"2":{"44":1}}],["margin=40",{"2":{"7":1,"36":1}}],["margin=60",{"2":{"5":1}}],["margin=50",{"2":{"4":1,"30":1}}],["marshall",{"2":{"11":1}}],["manually",{"2":{"32":1}}],["manual",{"2":{"29":1,"30":1,"49":1}}],["managing",{"2":{"16":1}}],["many",{"2":{"15":1,"19":2,"26":1,"30":2,"32":1,"33":1,"34":2,"35":2,"41":2,"43":1,"50":2}}],["manifest",{"2":{"7":9}}],["manhattanline",{"2":{"4":2}}],["maps",{"2":{"10":1,"47":1}}],["map",{"0":{"10":1},"2":{"4":1,"6":1,"9":1,"10":2,"16":1,"18":2,"47":1}}],["bt",{"2":{"44":2}}],["bb",{"2":{"42":3,"48":1}}],["bbox",{"2":{"4":3,"34":3}}],["binary",{"2":{"44":3,"45":1}}],["binomial",{"2":{"32":1}}],["bipartite",{"2":{"33":1,"55":2}}],["bi",{"2":{"33":2}}],["bit",{"2":{"4":1}}],["browsers",{"2":{"30":1}}],["broadcast",{"2":{"20":1}}],["bridgelandmarks",{"2":{"26":1}}],["bridgediffeq",{"2":{"26":1}}],["break",{"2":{"20":1,"34":1}}],["branches",{"0":{"21":1},"2":{"20":1}}],["b",{"2":{"16":1,"41":2,"65":5,"69":2,"71":1}}],["bc",{"2":{"13":5,"49":4}}],["blue",{"2":{"11":1,"16":1,"30":1,"44":1,"63":2}}],["black",{"2":{"2":1,"4":1,"5":1,"6":1,"7":1,"11":1,"14":1,"15":1,"16":1,"23":1,"24":1,"28":3,"36":1,"47":1,"48":1,"56":1,"65":1,"67":1,"69":1}}],["by=i",{"2":{"25":1}}],["by",{"2":{"7":2,"10":1,"14":1,"17":1,"20":3,"22":1,"26":3,"29":1,"32":1,"34":2,"38":2,"40":2,"41":1,"45":2,"46":1,"47":2,"48":2,"52":2,"54":1,"55":3,"56":1,"62":2,"66":1,"69":1,"71":1}}],["bounding",{"2":{"53":1}}],["boundingbox=boundingbox",{"2":{"57":1}}],["boundingbox=bb",{"2":{"48":3}}],["boundingbox",{"0":{"54":1},"2":{"4":1,"10":4,"23":1,"34":2,"42":5,"48":1,"52":1,"53":2,"54":3}}],["boruka",{"2":{"48":1}}],["boruvka",{"2":{"48":3}}],["borůvka",{"2":{"48":1}}],["both",{"2":{"34":1,"36":1,"69":1}}],["bottom",{"2":{"10":1,"28":2,"38":1}}],["board",{"2":{"10":1}}],["boxbottomleft",{"2":{"15":1}}],["boxbottomcenter",{"2":{"5":1,"23":1,"34":1,"42":1}}],["boxmiddleleft",{"2":{"6":1}}],["box",{"2":{"4":3,"7":1,"10":2,"16":1,"23":1,"28":1,"34":1,"42":3,"45":1,"47":1,"48":1,"53":1,"67":2}}],["bold",{"2":{"4":1,"5":2,"23":2,"24":1,"63":1}}],["bevel",{"2":{"46":1,"65":1}}],["bertram",{"2":{"45":1}}],["benefit",{"2":{"34":1}}],["been",{"2":{"31":2,"33":1,"34":1,"44":1,"47":2,"52":1}}],["beforehand",{"2":{"55":1}}],["before",{"2":{"28":1,"52":1}}],["better",{"2":{"28":1,"56":1}}],["betweenness",{"2":{"13":1,"26":5,"49":2}}],["between",{"2":{"9":1,"21":1,"30":1,"32":1,"33":2,"35":1,"38":1,"39":1,"41":1,"42":1,"45":1,"46":2,"47":2,"50":1,"52":1,"55":2,"65":1,"66":2,"67":1,"69":3,"71":1}}],["belongs",{"2":{"33":1}}],["below",{"2":{"4":1,"7":1,"30":1,"34":1,"36":1,"44":1}}],["beliefupdaters",{"2":{"27":3}}],["beastdataprep",{"2":{"26":1}}],["besançon",{"2":{"17":1}}],["best",{"2":{"12":1}}],["being",{"2":{"13":1}}],["becomes",{"2":{"41":1}}],["become",{"2":{"15":1}}],["because",{"2":{"10":1,"30":1,"38":1,"50":1}}],["beck",{"2":{"10":3}}],["be",{"2":{"5":1,"6":1,"7":1,"8":1,"14":1,"22":1,"28":2,"29":1,"30":1,"35":1,"37":1,"38":1,"42":2,"43":2,"44":1,"47":2,"48":1,"52":1,"53":3,"55":1,"56":2,"60":1,"62":2,"66":1,"67":2,"69":1}}],["beginning",{"2":{"52":1}}],["begin",{"2":{"2":1,"4":4,"5":2,"6":1,"7":5,"10":4,"11":1,"13":1,"14":2,"15":1,"16":2,"19":1,"23":2,"24":1,"28":8,"30":3,"31":1,"32":2,"33":6,"34":4,"35":1,"36":1,"38":2,"39":1,"40":1,"42":6,"43":1,"44":1,"45":2,"46":1,"47":3,"48":4,"49":1,"50":2,"52":2,"55":1,"57":3,"60":2,"61":1,"62":8,"63":4,"65":6,"66":7,"67":8,"68":1,"69":2,"70":1,"71":2}}],["bull",{"2":{"34":3}}],["busiest",{"2":{"13":1}}],["but",{"2":{"10":2,"13":1,"14":1,"15":1,"16":1,"20":2,"28":1,"29":1,"30":1,"31":1,"41":1,"44":1,"47":3,"52":1,"63":2}}],["builds",{"2":{"17":1}}],["build",{"0":{"20":1},"2":{"4":3,"5":1,"7":2,"20":4,"22":2,"52":1}}],["built",{"2":{"1":1,"29":1,"62":1,"63":1}}],["buchheim",{"2":{"4":1,"5":1,"44":2}}],["ballradius",{"2":{"62":5}}],["badjlist",{"2":{"40":2}}],["basis",{"2":{"42":4}}],["basics",{"2":{"29":1}}],["basic",{"2":{"29":1,"30":1}}],["base",{"2":{"4":1,"7":1}}],["barbell",{"2":{"70":1}}],["barlowcondensed",{"2":{"23":2,"24":1}}],["barchart",{"2":{"21":1}}],["barabasi",{"2":{"2":1}}],["baker",{"2":{"12":1,"13":1}}],["backward",{"2":{"40":1}}],["back",{"2":{"12":1,"23":1}}],["background",{"2":{"2":1,"4":1,"5":1,"6":1,"7":1,"10":2,"11":1,"13":1,"14":1,"15":1,"23":1,"24":1,"28":2,"30":2,"31":1,"32":2,"33":6,"34":3,"35":1,"36":1,"38":2,"39":1,"40":1,"42":2,"43":1,"44":1,"45":2,"46":2,"47":2,"48":2,"49":1,"50":2,"52":2,"55":1,"56":1,"57":1,"60":2,"61":1,"62":8,"63":4,"65":1,"66":4,"67":4,"68":1,"69":2,"70":1,"71":1}}],["backend",{"2":{"1":5}}],["j",{"2":{"67":2}}],["joseph",{"2":{"48":1}}],["journey",{"2":{"47":2}}],["joining",{"2":{"31":1,"48":1}}],["join",{"2":{"23":1,"30":2,"35":1}}],["joinpath",{"2":{"18":1,"19":1}}],["job",{"2":{"10":1}}],["julius",{"2":{"34":1}}],["julialayout",{"2":{"55":1}}],["juliawg",{"2":{"47":1}}],["juliapg1",{"2":{"35":1}}],["juliapath",{"2":{"18":1}}],["julia>",{"2":{"35":1,"39":1,"42":2,"47":1}}],["juliajulia>",{"2":{"35":3,"38":1,"39":2,"47":4}}],["juliam",{"2":{"33":1,"38":1}}],["juliamono",{"2":{"4":1,"5":2}}],["julian",{"2":{"33":3}}],["juliaadd",{"2":{"30":3,"35":1}}],["juliaall",{"2":{"22":1}}],["juliais",{"2":{"27":1}}],["juliain",{"2":{"26":1}}],["juliaout",{"2":{"26":1}}],["juliaranks",{"2":{"24":1,"26":1}}],["juliasources",{"2":{"67":1}}],["juliasorted",{"2":{"25":1,"26":1}}],["juliasdg",{"2":{"42":1}}],["juliascores",{"2":{"21":1}}],["juliaspath",{"2":{"21":1}}],["juliagd",{"2":{"31":1,"66":1}}],["juliaget",{"2":{"20":1,"25":1,"26":3}}],["juliag",{"2":{"20":1,"32":1,"33":2,"39":1,"40":1,"47":1,"57":1,"67":1,"69":1,"70":1,"71":1}}],["juliagraphs",{"0":{"16":1}}],["julia227",{"2":{"19":1}}],["juliafull",{"2":{"22":1}}],["juliafunction",{"2":{"15":1,"19":1,"20":1,"46":1,"62":1,"67":1}}],["juliafor",{"2":{"21":1,"22":2,"35":2}}],["juliafind",{"2":{"19":1}}],["julia7495",{"2":{"18":1}}],["juliacon",{"2":{"17":1}}],["juliausing",{"2":{"2":1,"4":1,"5":1,"6":1,"7":1,"9":1,"16":1,"17":1,"28":1,"30":3,"34":1,"44":1,"45":1,"47":1,"48":1,"56":1,"61":1,"69":1}}],["julia",{"0":{"4":1,"5":1,"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},"2":{"1":1,"5":1,"7":1,"15":1,"16":6,"17":1,"18":5,"22":1,"23":1,"24":1,"28":2,"29":1,"30":4,"34":2,"35":1,"36":1,"38":1,"40":1,"42":1,"43":1,"44":4,"45":1,"48":1,"49":1,"50":2,"52":2,"55":1,"60":2,"62":10,"63":7,"65":1,"66":3,"67":2,"68":1,"69":1}}],["just",{"2":{"2":1,"9":1,"11":1,"17":1,"30":1,"41":1,"42":1,"43":1,"45":1,"46":1,"47":1,"56":1,"62":1,"65":1}}],["jll",{"2":{"18":2}}],["jl",{"0":{"6":1},"2":{"1":13,"2":3,"7":1,"13":1,"15":1,"16":1,"17":4,"19":2,"20":4,"21":2,"23":1,"27":4,"29":3,"30":3,"31":1,"40":1,"41":1,"42":1,"46":1,"47":2,"48":1,"49":1,"50":1,"53":1,"55":1,"57":1,"60":1,"61":1,"63":1,"71":1}}],["gsave",{"2":{"62":1}}],["gap",{"2":{"69":2}}],["gaps",{"2":{"53":3,"69":1}}],["games",{"2":{"34":1}}],["gc",{"2":{"50":8}}],["gt",{"2":{"48":1,"53":2}}],["gd",{"2":{"31":8,"32":2,"66":7}}],["glance",{"2":{"31":1}}],["glue",{"2":{"28":1}}],["glmakie",{"2":{"26":1,"27":1}}],["give",{"2":{"35":1}}],["given",{"2":{"7":1}}],["giving",{"2":{"19":1}}],["gif",{"2":{"15":1,"69":1}}],["genomicmaps",{"2":{"20":1}}],["generated",{"2":{"29":1,"55":1}}],["generates",{"2":{"4":1,"7":1,"30":1,"34":1,"44":1,"63":1}}],["general",{"0":{"18":1},"2":{"17":1,"18":3,"19":1,"20":1,"22":1,"28":1,"52":1}}],["geodata",{"2":{"27":1}}],["geostatsimages",{"2":{"22":1}}],["geoff",{"2":{"11":1}}],["geographically",{"2":{"10":1}}],["geography",{"2":{"10":1}}],["getrotation",{"2":{"66":1}}],["getting",{"0":{"35":1},"1":{"36":1}}],["get",{"2":{"4":1,"7":1,"20":3,"21":1,"22":2,"23":2,"24":1,"27":1,"28":2,"30":1,"41":1,"46":1,"47":4,"48":2,"67":1}}],["goes",{"2":{"39":1,"41":1}}],["going",{"2":{"7":1}}],["gold",{"2":{"4":2,"5":1,"6":1,"7":1,"13":1,"15":1,"28":1,"32":1,"34":1,"36":1,"39":1,"45":2,"47":1,"48":2,"49":1,"50":1,"56":1,"57":1,"60":1,"62":4,"65":1,"67":1,"69":1}}],["good",{"2":{"1":1,"30":2,"52":1}}],["gradually",{"2":{"52":1,"56":1}}],["graphical",{"2":{"66":1,"67":1}}],["graphics",{"2":{"2":1,"30":2,"52":1,"54":1,"57":1,"62":1}}],["graphmakie",{"2":{"1":1}}],["graphrecipes",{"2":{"1":1}}],["graphplot",{"2":{"1":1}}],["graph",{"0":{"7":1,"29":1,"35":1,"50":1},"1":{"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":2,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1},"2":{"1":2,"4":1,"5":1,"8":1,"9":2,"14":2,"15":1,"16":3,"17":2,"20":3,"22":13,"23":4,"24":4,"25":1,"26":9,"27":4,"28":6,"29":1,"30":15,"31":4,"32":7,"33":11,"34":2,"35":1,"37":1,"38":8,"39":5,"40":7,"41":2,"42":3,"43":2,"44":2,"45":2,"46":3,"47":12,"48":3,"49":2,"50":6,"52":4,"53":1,"54":2,"55":2,"57":3,"61":1,"62":1,"65":2,"66":2,"67":3,"68":1,"70":1}}],["graphs",{"0":{"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"37":1,"47":1},"1":{"34":1,"38":1,"39":1,"40":1},"2":{"1":3,"2":1,"3":1,"4":1,"5":1,"6":4,"7":1,"9":1,"13":1,"15":1,"16":2,"17":3,"19":1,"22":1,"28":2,"29":3,"30":6,"31":2,"32":2,"33":5,"34":5,"37":1,"39":1,"40":1,"41":4,"42":1,"44":2,"46":1,"47":7,"48":2,"49":1,"52":6,"53":1,"56":1,"60":1,"61":1,"62":4,"66":1,"67":1,"69":1}}],["grid",{"2":{"33":2,"45":3,"46":2,"56":1,"63":1,"66":2,"69":1,"71":1}}],["grouped",{"2":{"52":1}}],["group",{"2":{"33":3}}],["groups",{"2":{"33":1}}],["grestore",{"2":{"62":1}}],["greedy",{"2":{"16":1,"50":3}}],["greenyellow",{"2":{"33":1}}],["green",{"2":{"13":1,"16":1,"30":1,"44":1,"48":1,"62":1,"63":1}}],["grey40",{"2":{"45":1,"46":1,"52":1}}],["grey60",{"2":{"42":1,"45":1,"65":1}}],["grey70",{"2":{"14":1}}],["grey90",{"2":{"11":1}}],["grey80",{"2":{"7":1}}],["grey50",{"2":{"10":1,"14":1,"16":1,"43":1,"48":2,"50":1,"56":1}}],["grey5",{"2":{"7":1}}],["grey10",{"2":{"5":1,"10":1,"13":1,"28":1,"30":2,"31":1,"32":2,"33":6,"34":3,"35":1,"36":1,"38":2,"40":1,"42":2,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"50":2,"52":2,"55":1,"57":1,"60":2,"61":1,"62":8,"63":4,"66":4,"67":4,"68":1,"69":1,"70":1,"71":1}}],["grey20",{"2":{"4":1,"10":1,"39":1}}],["g",{"2":{"2":3,"4":9,"5":14,"7":6,"9":2,"10":6,"11":3,"12":3,"13":2,"14":3,"15":3,"16":3,"20":13,"21":2,"22":2,"23":1,"24":1,"28":2,"30":20,"31":1,"32":3,"33":16,"34":4,"35":2,"36":5,"38":1,"39":2,"40":1,"43":5,"44":5,"45":8,"46":6,"47":8,"48":24,"49":3,"50":6,"52":10,"53":3,"55":8,"56":4,"57":4,"60":5,"61":3,"62":22,"63":12,"65":4,"66":12,"67":13,"68":6,"69":8,"70":4,"71":2}}],["table",{"2":{"42":5}}],["tax",{"2":{"30":1}}],["takes",{"2":{"5":1,"20":1,"52":1,"53":1}}],["take",{"2":{"4":1,"47":1}}],["typographical",{"2":{"63":1}}],["typing",{"2":{"32":1}}],["typical",{"2":{"30":1}}],["types",{"2":{"31":1,"33":1}}],["type",{"0":{"4":1},"2":{"4":4,"35":1,"52":1}}],["tuning",{"2":{"34":1}}],["turquoise1",{"2":{"34":1}}],["tutte",{"2":{"34":2}}],["tuple",{"2":{"18":1,"19":1}}],["tuples",{"2":{"18":1,"67":1}}],["tubedata",{"2":{"9":9}}],["tube",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"8":1,"9":1,"10":1,"11":2,"13":1,"14":1,"15":2}}],["tmp",{"2":{"15":1,"28":2}}],["twice",{"2":{"66":1}}],["twenty",{"2":{"46":1}}],["tweaking",{"2":{"4":1}}],["two",{"2":{"15":1,"16":1,"21":1,"30":1,"31":2,"32":1,"33":1,"38":1,"44":1,"45":1,"47":3,"52":1,"55":1,"57":2,"62":1,"65":1,"66":1,"67":2}}],["terrace",{"2":{"46":1}}],["terms",{"2":{"41":1}}],["terminology",{"2":{"41":1}}],["terminal",{"2":{"14":2,"15":2}}],["terminates",{"0":{"11":1}}],["terminus",{"2":{"11":1}}],["tetrahedral",{"2":{"34":2}}],["tedious",{"2":{"32":1}}],["tell",{"2":{"31":1}}],["te",{"2":{"28":3}}],["textoutlines",{"2":{"28":2}}],["textfit",{"2":{"4":1,"23":1}}],["text",{"2":{"4":1,"5":1,"15":1,"28":1,"34":1,"42":1,"47":1,"53":3,"60":1,"66":1,"67":3}}],["textextents",{"2":{"4":1,"7":1,"28":1}}],["tired",{"2":{"46":1}}],["tip",{"2":{"20":1,"53":3}}],["times",{"2":{"47":1,"63":1}}],["time",{"2":{"11":1,"20":1,"30":1,"47":1,"48":1}}],["tilebox",{"2":{"42":3}}],["tileheight",{"2":{"34":1,"42":1,"48":1}}],["tilewidth",{"2":{"34":1,"42":1,"48":1}}],["tiler",{"2":{"10":1,"34":1,"42":1,"48":1,"56":2}}],["tiles",{"2":{"10":3,"34":4,"42":4,"48":4}}],["tidy",{"2":{"10":1}}],["tikz",{"2":{"1":1}}],["tikzgraphs",{"2":{"1":1}}],["tfiers",{"2":{"7":1}}],["tx",{"2":{"4":2,"7":1}}],["t",{"2":{"4":10,"5":3,"7":6,"14":1,"16":2,"18":1,"19":2,"20":1,"24":1,"28":6,"29":1,"30":3,"31":1,"33":1,"35":1,"45":1,"46":2,"47":4,"48":4,"55":1,"56":1,"58":1,"60":1,"62":1,"65":1,"66":5,"67":4}}],["truncatedtetrahedron",{"2":{"34":4}}],["truncatedcube",{"2":{"34":2,"62":1}}],["true",{"2":{"5":1,"20":1,"26":1,"27":2,"35":1,"47":1}}],["trixi2img",{"2":{"18":2}}],["tries",{"2":{"4":1,"52":1}}],["traversing",{"2":{"41":1}}],["traversals",{"0":{"41":1},"1":{"42":1,"43":1}}],["translucent",{"2":{"68":1}}],["translate",{"2":{"10":2,"13":1,"14":1,"30":1,"34":1,"42":2,"48":1,"57":1,"62":1}}],["transport",{"2":{"49":1}}],["transform=tritanopic",{"2":{"36":1}}],["transactions",{"2":{"31":1}}],["trains",{"2":{"11":1,"14":1}}],["train",{"0":{"11":1},"2":{"41":1,"47":1}}],["trackvertices=true",{"2":{"46":1}}],["tracks",{"2":{"14":1,"41":1}}],["track",{"2":{"10":1,"14":1}}],["treeparzen",{"2":{"22":1}}],["trees",{"0":{"44":1,"48":1},"2":{"6":1,"48":3}}],["tree",{"0":{"4":1,"5":1,"20":1},"2":{"4":3,"5":8,"6":5,"20":5,"44":7,"45":1,"48":4}}],["three",{"2":{"50":1}}],["through",{"2":{"7":1,"15":1,"35":1,"45":2}}],["those",{"2":{"20":1,"38":1,"40":1}}],["than",{"2":{"10":1,"44":1,"47":1,"52":1,"55":1,"56":1,"68":1}}],["that",{"0":{"19":1},"2":{"4":1,"19":2,"20":4,"21":2,"27":1,"28":1,"31":1,"36":2,"37":1,"38":3,"39":3,"40":1,"41":3,"42":2,"43":1,"44":1,"45":1,"47":1,"48":2,"50":3,"53":3,"55":1,"57":1,"63":1,"67":1}}],["thinking",{"2":{"46":1}}],["think",{"2":{"41":1}}],["things",{"2":{"30":3,"57":1}}],["thing",{"2":{"10":1,"30":1}}],["thick",{"2":{"35":1}}],["thistle1",{"2":{"31":1,"34":1,"35":1,"66":1}}],["this",{"2":{"3":1,"4":4,"5":1,"7":3,"9":1,"15":1,"17":3,"19":2,"20":4,"22":1,"23":1,"24":3,"25":1,"26":1,"29":2,"30":6,"31":1,"34":3,"35":1,"36":1,"38":3,"39":1,"40":3,"42":1,"43":3,"44":2,"45":1,"46":4,"47":4,"52":2,"53":6,"55":2,"60":1,"62":1,"65":1,"66":1,"67":2,"68":1,"69":2}}],["their",{"2":{"33":1}}],["theory",{"0":{"29":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1},"2":{"29":1,"30":2,"37":1}}],["they",{"2":{"28":1,"62":1,"71":1}}],["thebes",{"2":{"20":1}}],["them",{"2":{"11":1,"28":1,"29":1,"30":1,"31":1,"35":1,"41":1,"43":1,"56":1,"60":2,"61":1,"63":1}}],["these",{"2":{"10":1,"11":1,"18":1,"20":1,"22":1,"28":2,"32":1,"34":1,"35":1,"42":1,"48":2,"52":1,"55":1,"56":1,"57":3,"58":1,"63":1}}],["then",{"2":{"4":1,"17":1,"20":1,"38":1,"45":1,"46":1}}],["the",{"0":{"8":1,"16":1,"18":1,"35":1,"45":1,"54":1,"56":1,"57":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"36":1},"2":{"2":1,"4":2,"5":1,"6":2,"7":4,"8":4,"9":5,"10":11,"11":7,"12":2,"13":4,"14":13,"15":7,"16":5,"17":14,"18":4,"19":4,"20":14,"21":7,"22":4,"23":3,"24":4,"25":2,"26":2,"27":2,"28":6,"29":7,"30":21,"31":9,"32":3,"33":9,"34":8,"35":7,"36":4,"37":4,"38":9,"39":9,"40":6,"41":9,"42":7,"43":4,"44":5,"45":16,"46":14,"47":19,"48":11,"49":8,"50":7,"52":29,"53":11,"54":8,"55":9,"56":8,"57":8,"58":3,"60":2,"61":4,"62":14,"63":5,"65":5,"66":4,"67":15,"68":7,"69":13,"71":1}}],["therefore",{"2":{"41":1}}],["there",{"2":{"1":1,"7":1,"20":1,"31":1,"33":3,"34":2,"35":1,"37":1,"38":1,"41":1,"42":1,"43":3,"46":1,"48":1,"50":1}}],["tolum",{"2":{"62":1}}],["tolum=1",{"2":{"62":1}}],["tol=0",{"2":{"55":1}}],["total",{"2":{"50":1}}],["together",{"2":{"48":1}}],["tour",{"2":{"43":2}}],["today",{"2":{"19":1}}],["toolbox",{"2":{"19":2}}],["tools",{"2":{"13":1,"42":1,"57":1}}],["too",{"2":{"16":1,"33":1,"37":1,"52":1}}],["toml",{"2":{"7":6,"17":1,"18":2,"19":3,"27":2}}],["topoint",{"2":{"58":1}}],["topoptmakie",{"2":{"25":1}}],["topologypreprocessing",{"2":{"19":2,"22":1}}],["top",{"2":{"1":1,"5":5,"10":1,"13":2,"14":1,"38":1}}],["to",{"0":{"1":1,"23":1},"1":{"2":1},"2":{"3":2,"4":2,"5":1,"6":4,"9":3,"10":4,"11":3,"12":1,"14":8,"15":1,"16":3,"17":3,"18":3,"19":1,"20":8,"22":4,"23":2,"28":4,"29":3,"30":7,"31":6,"32":3,"33":5,"34":1,"35":7,"38":4,"39":4,"40":3,"41":3,"42":4,"43":5,"44":1,"45":4,"46":2,"47":13,"49":3,"52":7,"53":13,"54":3,"55":1,"56":3,"57":10,"58":1,"60":7,"61":4,"62":2,"63":2,"65":5,"66":8,"67":12,"68":2,"69":7,"70":1,"71":4}}],["nw",{"2":{"48":2}}],["nature",{"2":{"47":1}}],["named",{"2":{"19":1,"34":1,"44":1,"46":1}}],["namedtuple",{"2":{"18":1,"19":1}}],["names",{"2":{"9":2,"11":2,"19":1,"20":1,"22":3,"27":2,"33":1}}],["name",{"2":{"5":1,"7":3,"18":11,"19":12,"20":7,"21":1,"22":6,"23":2,"24":1,"25":1,"26":3,"27":1,"28":1,"45":2}}],["num",{"2":{"50":5}}],["numerical",{"2":{"60":1}}],["numeric",{"2":{"47":1}}],["numbers",{"2":{"9":1,"15":1,"24":1,"35":1,"40":2,"42":1,"53":1,"60":2,"66":1,"71":1}}],["number",{"2":{"4":1,"26":2,"30":1,"36":1,"38":1,"40":1,"49":1,"50":1,"52":1,"53":5,"60":1,"62":3,"63":4}}],["numbered",{"2":{"4":2,"5":3,"30":1,"60":2}}],["nilsson",{"2":{"45":1}}],["nils",{"2":{"45":1}}],["nlist=",{"2":{"34":1,"35":1,"38":1,"55":1}}],["ngon",{"2":{"39":1,"66":1}}],["ngonside",{"2":{"16":2}}],["ng",{"2":{"34":3}}],["necessary",{"2":{"60":1}}],["negative",{"2":{"39":1}}],["neither",{"2":{"32":1}}],["neighbors",{"0":{"12":1},"2":{"12":2,"20":1,"31":1,"35":5}}],["newvertexsizes",{"2":{"69":3}}],["newpath",{"2":{"42":1}}],["new",{"2":{"30":2,"39":1,"47":2,"48":1}}],["newly",{"2":{"15":1}}],["nearby",{"2":{"28":1}}],["nearest",{"2":{"13":1}}],["next",{"2":{"20":1,"22":1,"23":1,"33":1,"44":1,"45":1,"47":1,"48":1,"55":1,"62":1}}],["needed",{"2":{"50":1,"52":1}}],["need",{"2":{"18":2,"29":2,"33":1,"69":1}}],["ne",{"2":{"6":1,"7":1,"35":1,"40":1,"47":1,"55":1,"66":2,"70":3,"71":1}}],["network",{"2":{"8":2,"10":1,"14":2,"15":1,"30":1,"41":1,"47":1,"49":2}}],["networklayout",{"2":{"1":1,"2":1,"4":1,"5":1,"7":1,"9":1,"29":1,"30":1,"34":1,"44":1,"48":1,"53":1,"55":2,"56":2,"61":1}}],["networks",{"2":{"1":1,"15":1,"30":1,"47":1,"49":1}}],["n",{"2":{"4":1,"5":3,"11":3,"30":10,"33":8,"34":8,"35":2,"38":2,"40":3,"42":5,"46":1,"48":1,"50":2,"55":5,"56":1,"60":1,"66":1,"67":4,"69":5,"70":2}}],["node",{"2":{"20":2}}],["nodes",{"2":{"20":4,"30":1}}],["nodesize=nodesizes",{"2":{"4":1}}],["nodesizes",{"2":{"4":3}}],["no",{"2":{"20":1,"31":1,"44":3,"50":2,"52":2}}],["now",{"2":{"19":1,"30":2,"47":1,"50":1}}],["northern",{"2":{"14":1}}],["north",{"2":{"10":1}}],["normalized",{"2":{"4":1}}],["none",{"2":{"10":3,"14":1,"16":1,"23":1,"24":1,"42":2,"45":1,"46":2,"48":6,"53":14,"56":1,"63":1,"65":2,"66":3,"67":2,"68":1,"69":1}}],["nothing",{"2":{"22":1}}],["notice",{"2":{"20":1,"38":1,"48":1}}],["not",{"0":{"10":1},"2":{"10":1,"13":1,"14":1,"30":1}}],["note",{"2":{"1":1,"2":1,"20":1,"29":1,"30":1,"31":1,"41":2,"57":1,"60":1,"65":1}}],["nv",{"2":{"2":1,"5":1,"6":1,"10":2,"12":1,"20":3,"23":1,"33":4,"34":1,"35":3,"36":1,"38":2,"43":1,"44":1,"45":1,"47":2,"48":2,"52":1,"55":1,"60":1,"61":1,"62":2,"63":4,"66":2,"67":2,"68":1}}],["l=1",{"2":{"57":1}}],["ll",{"2":{"29":1,"30":2,"31":1,"37":1,"40":1,"44":1,"69":1}}],["lg",{"2":{"22":2}}],["lvserver",{"2":{"19":2}}],["local",{"2":{"61":1}}],["locations",{"2":{"19":1,"30":1,"56":1}}],["location",{"2":{"18":4,"62":1}}],["lowest",{"2":{"48":1}}],["lot",{"2":{"41":1,"42":1,"43":1}}],["lots",{"2":{"35":1}}],["loadgraph",{"2":{"22":1}}],["load",{"2":{"22":2,"47":1,"61":1}}],["look",{"2":{"40":1,"41":1,"47":1,"50":1,"55":1}}],["looking",{"2":{"21":1,"48":1}}],["looks",{"2":{"10":1,"35":1}}],["loops",{"2":{"69":1}}],["loop",{"2":{"20":1}}],["longer",{"2":{"44":1,"47":1}}],["longitude",{"2":{"9":2,"10":1}}],["longitudes",{"2":{"9":1}}],["long",{"2":{"9":2,"24":1,"47":1}}],["london",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"8":1,"10":2}}],["logo",{"0":{"16":1},"2":{"16":1,"69":1}}],["log",{"2":{"5":1}}],["literature",{"2":{"41":1}}],["lightgreen",{"2":{"34":1}}],["lightgraphs",{"2":{"17":1,"19":1}}],["lighten",{"2":{"16":6}}],["like",{"2":{"10":2,"11":1,"14":1,"20":1,"40":1,"47":1,"62":1,"65":1}}],["linewidth",{"2":{"66":1}}],["lines",{"2":{"14":1,"18":1,"35":1}}],["line",{"2":{"5":1,"11":1,"14":4,"16":1,"28":1,"30":1,"53":1,"71":2}}],["lists",{"2":{"40":1}}],["list",{"0":{"40":1},"2":{"4":1,"13":1,"17":1,"20":1,"24":1,"37":1,"40":5,"45":1,"47":1,"53":1}}],["lemonchiffon",{"2":{"45":1}}],["left",{"2":{"33":1,"38":1,"55":1}}],["lets",{"2":{"52":1}}],["let",{"2":{"30":1,"45":1,"48":1}}],["less",{"2":{"20":1}}],["leaving",{"2":{"52":1}}],["leaves",{"2":{"20":1}}],["lead",{"0":{"23":1}}],["least",{"2":{"10":1,"42":1}}],["length=nv",{"2":{"52":1}}],["length=n",{"2":{"33":2,"55":2}}],["lengths",{"0":{"21":1}}],["length",{"2":{"5":1,"7":1,"15":1,"22":1,"34":1,"42":4,"43":3,"47":1,"71":2}}],["levels",{"2":{"47":1}}],["level",{"2":{"4":1}}],["level=0",{"2":{"4":1}}],["l",{"2":{"4":2,"19":1,"57":2,"61":1,"62":2}}],["last",{"2":{"34":1}}],["larger",{"2":{"34":1}}],["large",{"2":{"30":1}}],["lat",{"2":{"9":2}}],["latlong",{"2":{"9":2}}],["latitude",{"2":{"9":3,"10":1}}],["later",{"2":{"7":1}}],["latexstrings",{"2":{"61":2}}],["latex",{"0":{"61":1},"2":{"1":1,"61":1}}],["lay",{"2":{"6":1}}],["layers",{"2":{"52":1}}],["layered",{"2":{"6":1}}],["layeredlayouts",{"0":{"6":1},"2":{"6":2}}],["layer",{"2":{"4":2,"7":1,"10":2,"14":1,"28":3,"34":1,"42":2,"48":1,"57":1,"65":2,"67":2}}],["layout=pts",{"2":{"16":1}}],["layout=positions",{"2":{"11":1}}],["layout=shell",{"2":{"62":5}}],["layout=squaregrid",{"2":{"42":1,"45":2,"46":2,"69":1,"71":1}}],["layout=spring",{"2":{"10":1,"23":1,"24":1,"30":1,"36":1,"48":8,"63":1,"66":1}}],["layout=stress",{"2":{"2":1,"10":1,"33":3,"38":1,"40":1,"50":2,"52":1,"56":1,"57":1,"60":2,"62":2,"63":1,"65":2,"67":3,"68":2,"70":1}}],["layout=",{"2":{"6":1}}],["layout=buchheim",{"2":{"4":1,"44":1,"45":1}}],["layout",{"0":{"55":1,"56":1},"1":{"56":1},"2":{"1":1,"4":1,"5":1,"6":2,"7":1,"10":5,"13":1,"14":2,"15":2,"28":2,"33":2,"34":4,"35":1,"38":1,"39":1,"42":2,"43":2,"44":1,"49":1,"52":2,"53":1,"54":1,"55":13,"56":3,"62":1,"63":1,"66":3,"68":1}}],["labelling",{"2":{"60":1,"67":1}}],["labeltext",{"2":{"53":1,"71":2}}],["labelwidth",{"2":{"4":2}}],["labels",{"0":{"59":1,"61":1,"67":1},"1":{"60":1,"61":1,"62":1,"63":1},"2":{"4":9,"5":11,"11":1,"24":1,"28":1,"36":1,"52":4,"53":2,"61":1,"62":1,"63":1,"67":4}}],["label",{"2":{"4":1,"14":1,"30":2,"48":2,"53":8,"62":1,"67":3,"71":1}}],["luxor",{"2":{"1":1,"2":3,"16":4,"30":7,"44":4,"52":3,"57":1,"62":3,"63":3,"71":1}}],["operate",{"2":{"63":1}}],["operating",{"2":{"61":1}}],["options",{"0":{"64":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1},"2":{"62":1}}],["optimimi",{"2":{"26":1}}],["opticsim",{"2":{"19":2}}],["otakar",{"2":{"48":1}}],["others",{"2":{"44":1}}],["otherwise",{"2":{"31":1,"66":1}}],["other",{"2":{"26":1,"30":1,"32":1,"33":3,"35":1,"40":2,"42":1,"46":1,"47":1,"53":2,"57":1,"62":1,"65":2}}],["overrides",{"2":{"65":2}}],["overview",{"0":{"52":1}}],["over",{"2":{"35":2,"43":1,"53":1,"57":1}}],["overlapping",{"2":{"24":1,"31":1}}],["olivedrab1",{"2":{"34":1}}],["oldest",{"2":{"12":1}}],["occur",{"2":{"42":1}}],["occursin",{"2":{"4":1}}],["octahedral",{"2":{"34":2,"48":2,"50":1,"60":2}}],["obtaining",{"2":{"35":1}}],["obtained",{"2":{"22":1}}],["object",{"2":{"21":1,"46":3}}],["our",{"2":{"10":1,"31":2,"47":1}}],["outdegree",{"2":{"26":2,"52":4,"62":2}}],["outgoing",{"2":{"20":1}}],["outneighbors",{"2":{"20":2}}],["outerpts",{"2":{"16":2}}],["out",{"2":{"6":2,"19":1,"26":1,"28":2,"34":1,"52":1}}],["origin",{"2":{"44":1,"52":1,"62":1}}],["originally",{"2":{"17":1}}],["orange",{"2":{"30":2,"33":2,"34":3,"38":1,"40":1,"42":1,"43":1,"46":1,"48":1,"52":2,"63":1,"66":2,"67":4}}],["or",{"2":{"8":1,"17":1,"21":1,"30":3,"31":2,"33":1,"34":1,"44":1,"47":4,"49":1,"55":1,"58":1,"60":2,"63":2,"66":1,"69":2}}],["o",{"2":{"7":1,"10":2,"16":4,"19":1,"28":1,"30":2,"33":4,"34":1,"39":1,"42":3,"45":1,"48":1,"55":4,"62":3,"66":2,"68":1}}],["offset",{"2":{"62":3}}],["offset=5",{"2":{"71":1}}],["offset=",{"2":{"30":1}}],["offset=10",{"2":{"30":1}}],["off",{"2":{"30":1}}],["offers",{"2":{"6":1,"49":1}}],["often",{"2":{"28":1}}],["of",{"0":{"21":1,"53":1},"2":{"1":2,"2":1,"4":1,"7":5,"8":1,"10":2,"11":3,"12":1,"13":1,"14":4,"15":6,"16":1,"17":4,"18":3,"20":7,"24":3,"25":1,"26":3,"27":1,"28":2,"29":2,"30":9,"31":4,"32":2,"33":4,"34":5,"35":5,"36":2,"37":2,"38":5,"39":4,"40":6,"41":5,"42":7,"43":2,"45":4,"46":4,"47":10,"48":5,"49":7,"50":4,"52":10,"53":20,"55":4,"56":2,"60":2,"62":3,"63":2,"65":1,"66":2,"67":2,"69":4,"71":1}}],["once",{"0":{"43":1},"2":{"42":1,"43":1,"52":1,"66":2,"68":4}}],["online",{"2":{"34":1}}],["only",{"2":{"4":1,"7":1,"16":1,"22":1,"43":1,"50":1,"55":1,"66":1,"68":1}}],["ones",{"2":{"11":1,"56":1}}],["one",{"2":{"2":1,"8":1,"12":1,"15":1,"17":1,"20":1,"21":1,"24":1,"30":1,"33":2,"34":1,"38":1,"43":1,"44":2,"45":2,"46":3,"47":3,"62":1}}],["on",{"0":{"19":1,"26":1},"2":{"1":1,"11":2,"14":1,"15":1,"17":2,"18":1,"19":5,"20":3,"26":1,"28":1,"30":1,"34":1,"40":1,"46":2,"47":2,"48":1,"52":1,"55":2,"56":1,"57":2,"62":1,"63":1,"68":1}}],["f=0",{"2":{"62":1}}],["fca",{"2":{"26":1}}],["further",{"2":{"65":1}}],["furthest",{"2":{"21":1}}],["fuel",{"2":{"47":1}}],["full",{"0":{"22":1},"2":{"22":10,"23":4,"24":3,"25":1,"26":9,"27":3,"28":3}}],["functions",{"0":{"58":1},"2":{"2":1,"9":1,"15":1,"32":2,"35":3,"38":1,"39":1,"48":3,"52":1,"57":2,"58":5,"66":1}}],["function",{"2":{"2":1,"4":2,"5":3,"7":2,"11":1,"15":3,"16":3,"19":1,"20":2,"21":1,"23":1,"30":1,"33":1,"34":1,"35":2,"38":1,"40":1,"42":1,"45":4,"46":3,"47":1,"48":1,"50":2,"52":4,"53":10,"55":1,"56":2,"57":2,"60":2,"62":2,"63":2,"66":1,"67":2,"69":3}}],["features",{"2":{"41":1}}],["feature",{"2":{"16":1}}],["few",{"2":{"3":2,"20":1,"33":1,"41":1,"45":1}}],["frucht",{"2":{"34":2}}],["framerate=15",{"2":{"69":1}}],["framerate=10",{"2":{"15":1,"46":1,"56":1}}],["framerange",{"2":{"56":1,"69":3}}],["frames",{"2":{"46":1}}],["framenumber",{"2":{"15":3,"46":3,"56":3,"69":2}}],["frame",{"2":{"15":2,"46":2,"56":2,"69":2}}],["free",{"2":{"15":1}}],["front",{"2":{"11":1}}],["fromlum",{"2":{"62":1}}],["fromlum=0",{"2":{"62":1}}],["frompoint",{"2":{"58":1}}],["from",{"2":{"2":1,"5":2,"7":1,"14":3,"15":1,"21":1,"23":1,"30":1,"31":1,"34":1,"38":3,"39":1,"40":1,"41":2,"42":2,"46":1,"47":3,"52":2,"53":11,"57":3,"60":2,"65":4,"67":9,"68":1,"69":4,"70":1,"71":3}}],["flops",{"2":{"52":1}}],["float64",{"2":{"4":1,"20":1,"21":1,"22":1,"24":1,"26":1,"47":1,"53":3}}],["flux",{"2":{"20":1,"26":1}}],["flip",{"2":{"9":1,"52":1}}],["faces",{"2":{"63":1}}],["face",{"2":{"53":4}}],["fadjlist",{"2":{"40":2}}],["favourite",{"2":{"19":1}}],["fastest",{"2":{"11":1}}],["fashion",{"2":{"6":1}}],["familiar",{"2":{"11":1,"29":1,"33":1,"39":1,"41":1}}],["famous",{"2":{"10":1}}],["false",{"2":{"5":1}}],["f",{"2":{"4":2,"5":4,"7":6,"15":2,"16":6,"28":2,"30":3,"35":1,"45":1,"46":4,"47":3,"48":4,"53":17,"55":1,"56":2,"62":1,"66":6,"67":5,"69":2}}],["folder",{"2":{"61":1}}],["following",{"2":{"28":1,"46":1,"50":1,"57":1,"58":1,"63":1,"71":1}}],["follow",{"2":{"9":1,"14":1}}],["focusing",{"2":{"47":1}}],["four",{"2":{"16":1,"30":1}}],["found",{"2":{"14":2,"45":1,"48":1}}],["fonts",{"2":{"61":1}}],["fontsize",{"2":{"4":2,"5":1,"7":1,"14":1,"28":2,"30":2,"44":1,"47":1,"53":1,"61":1,"66":1,"67":3,"70":1}}],["font",{"2":{"52":2,"53":6,"61":2,"63":1}}],["fontface",{"2":{"4":1,"5":1,"7":1,"23":1,"24":1}}],["forward",{"2":{"40":1}}],["formulations",{"2":{"55":1}}],["forming",{"2":{"48":1}}],["form",{"2":{"40":1,"69":1}}],["format",{"2":{"30":1}}],["for",{"0":{"56":1},"2":{"1":4,"2":1,"4":4,"5":2,"6":2,"7":5,"10":1,"11":2,"13":1,"14":1,"15":3,"16":3,"17":2,"19":2,"20":2,"21":1,"22":1,"23":2,"24":1,"26":1,"27":2,"30":5,"31":3,"33":3,"34":3,"35":5,"38":4,"39":2,"40":2,"41":2,"42":7,"43":3,"44":1,"45":2,"46":6,"47":6,"48":5,"49":1,"50":3,"52":11,"53":13,"54":2,"55":5,"56":3,"57":3,"61":1,"62":6,"63":3,"65":1,"66":5,"67":4,"69":7}}],["five",{"2":{"67":1}}],["fiancée",{"2":{"46":1}}],["fieldnames",{"2":{"40":1}}],["fields",{"2":{"21":1,"34":1,"40":1,"46":1,"50":1}}],["firebrick",{"2":{"32":1}}],["first",{"2":{"10":2,"15":1,"18":1,"27":1,"33":1,"34":2,"39":4,"40":1,"43":2,"45":1,"46":1,"65":1}}],["financial",{"2":{"31":1}}],["finish",{"2":{"28":1}}],["finds",{"2":{"19":1,"20":2,"21":1,"26":1,"42":2,"45":1,"50":2}}],["finding",{"0":{"18":1},"2":{"41":1,"45":1,"46":1,"48":1}}],["find",{"0":{"19":1},"2":{"9":3,"10":3,"11":1,"12":1,"13":1,"14":4,"15":1,"19":3,"20":2,"22":1,"23":1,"25":1,"34":1,"41":1,"42":1,"43":2,"45":2,"48":2,"66":1}}],["findfirst",{"2":{"4":2,"7":2,"9":1,"22":1}}],["fix",{"2":{"24":1}}],["fit",{"2":{"9":1,"53":1,"54":1}}],["filter",{"2":{"19":1,"20":1,"43":1}}],["file",{"2":{"9":2,"17":1,"18":2,"19":4,"27":2}}],["files",{"2":{"7":1}}],["filled",{"2":{"62":1}}],["fillpreserve",{"2":{"4":1}}],["fill",{"2":{"4":1,"7":1,"14":1,"15":1,"16":1,"28":3,"42":1,"45":1,"46":1,"47":1,"52":1,"55":1,"56":1,"57":1,"62":2,"65":1,"66":2,"67":1,"68":1}}],["figure",{"2":{"4":2,"7":2,"30":2,"33":1,"34":3,"36":1,"44":2}}],["figures",{"2":{"1":1,"29":2,"69":1}}],["automatically",{"2":{"67":1}}],["automotivevisualization",{"2":{"20":1}}],["apart",{"2":{"52":1}}],["applies",{"2":{"69":1}}],["applied",{"2":{"35":1,"49":1}}],["appearance",{"2":{"52":1,"53":2,"67":1}}],["appears",{"2":{"15":1}}],["appropriate",{"2":{"41":1}}],["approach",{"2":{"30":1}}],["apparently",{"2":{"15":1}}],["aka",{"2":{"38":1}}],["adjust",{"2":{"56":1}}],["adjacent",{"2":{"50":1}}],["adjacency",{"0":{"38":1,"40":1},"2":{"37":2,"38":4,"39":1,"40":6,"47":2,"53":1,"55":2}}],["added",{"2":{"42":1,"48":1}}],["add",{"2":{"4":4,"5":6,"7":4,"20":4,"22":1,"30":12,"31":6,"35":3,"44":4,"47":6,"48":4,"66":6,"69":3}}],["after",{"2":{"34":1,"44":1,"46":1,"54":1}}],["aquamarine",{"2":{"33":1}}],["abs",{"2":{"69":4}}],["above",{"2":{"28":1,"31":1}}],["about",{"0":{"35":1},"1":{"36":1},"2":{"10":1,"14":1,"20":2,"34":1,"35":1,"38":1,"41":1,"46":4,"55":1,"56":1,"57":1}}],["able",{"2":{"22":1,"35":1}}],["away",{"2":{"21":1}}],["amsterdam",{"2":{"46":1}}],["amount",{"2":{"31":1}}],["amovie",{"2":{"15":3,"46":3,"56":3,"69":3}}],["amatrix",{"2":{"9":2}}],["airport",{"2":{"15":1}}],["again",{"2":{"13":1,"52":1}}],["attained",{"2":{"48":1}}],["attraction",{"2":{"47":1}}],["attempts",{"2":{"17":1}}],["at",{"2":{"10":3,"11":1,"13":1,"14":2,"15":1,"17":2,"20":2,"21":2,"26":2,"28":1,"31":3,"36":1,"40":1,"41":1,"42":1,"47":1,"53":2,"55":1,"57":2,"62":2,"65":1}}],["avoided",{"2":{"48":1}}],["avenir",{"2":{"7":1}}],["available",{"2":{"5":1,"34":1,"42":1,"46":1,"52":1,"55":1,"57":1,"61":1,"66":1}}],["accordingly",{"2":{"67":1}}],["according",{"2":{"47":1}}],["account",{"2":{"47":1}}],["accept",{"2":{"47":1,"52":2,"58":3,"60":1,"63":1,"67":1}}],["accepts",{"2":{"40":1}}],["access",{"2":{"17":1}}],["accurate",{"2":{"10":2,"41":1}}],["across",{"2":{"14":1}}],["action",{"2":{"16":2}}],["action=",{"2":{"4":1,"16":1}}],["active",{"2":{"7":6}}],["acyclic",{"2":{"6":1}}],["annotations",{"2":{"67":1}}],["animation",{"2":{"56":1,"69":1}}],["animated",{"2":{"69":1}}],["animates",{"2":{"46":1}}],["animate",{"2":{"15":1,"46":1,"56":1,"69":1}}],["angle=θ",{"2":{"67":1}}],["angle",{"2":{"53":3,"66":1}}],["answer",{"2":{"41":1}}],["another",{"2":{"18":1,"20":1,"26":1,"39":1,"40":1,"44":1}}],["analysis",{"2":{"20":1}}],["analysing",{"2":{"15":1,"30":1}}],["analyzing",{"2":{"17":1}}],["an",{"2":{"7":1,"10":1,"15":3,"20":1,"23":1,"24":1,"29":1,"30":2,"31":1,"32":1,"35":2,"37":1,"38":2,"39":4,"40":4,"42":2,"45":1,"46":2,"47":3,"50":1,"56":1,"63":2,"67":1,"69":1,"71":2}}],["anyway",{"2":{"63":1}}],["anything",{"2":{"20":1,"47":1,"65":1}}],["any",{"2":{"5":1,"10":1,"19":1,"29":1,"48":1,"57":1,"62":1}}],["and",{"0":{"21":1,"30":1,"31":1,"41":1,"42":1,"57":1,"59":1,"62":1,"63":1,"66":1,"69":1,"70":1},"1":{"42":1,"43":1,"60":1,"61":1,"62":1,"63":1},"2":{"1":2,"2":2,"4":1,"5":2,"6":3,"9":4,"10":5,"11":1,"14":1,"15":3,"17":1,"18":2,"19":1,"20":3,"21":2,"22":1,"23":1,"27":1,"28":2,"29":2,"30":6,"31":4,"32":2,"33":5,"35":5,"36":1,"37":2,"38":3,"39":5,"40":5,"41":6,"42":2,"45":4,"46":4,"47":6,"48":2,"49":1,"50":3,"52":10,"56":1,"57":4,"60":2,"62":4,"65":2,"66":1,"67":3,"68":1,"69":4}}],["arc2sagitta",{"2":{"42":1}}],["arrowheadangle",{"2":{"66":1}}],["arrowheadlength",{"2":{"66":1}}],["arrowheadfunction=",{"2":{"66":1}}],["arrow",{"2":{"53":3,"66":2,"69":1}}],["arrows",{"2":{"53":1,"66":2}}],["arrives",{"2":{"15":1}}],["arrays",{"2":{"15":1,"40":1,"42":1,"71":1}}],["array",{"2":{"15":1,"37":1,"40":4,"42":1,"45":1,"50":1,"60":1,"63":9,"71":2}}],["argmax",{"2":{"12":1}}],["args",{"2":{"5":5,"69":2}}],["arguments",{"0":{"57":1,"58":1},"2":{"52":2,"53":2,"57":1,"58":3,"63":1,"65":1,"67":1}}],["argument",{"2":{"5":1,"35":1,"52":1,"54":1,"55":1,"60":1,"62":1,"65":1,"67":1}}],["aren",{"2":{"58":1,"65":1}}],["are",{"2":{"2":1,"4":1,"6":1,"9":2,"10":2,"12":1,"17":1,"20":3,"21":1,"22":1,"28":1,"29":2,"30":3,"31":1,"33":2,"34":3,"35":3,"39":5,"40":1,"41":2,"42":2,"43":1,"46":1,"47":1,"48":2,"49":1,"50":3,"52":3,"53":1,"54":1,"55":5,"56":1,"57":1,"60":2,"61":1,"62":2,"65":1,"66":1,"67":2,"69":2}}],["ask",{"2":{"41":1}}],["astar",{"2":{"23":6,"45":6,"66":2,"68":4}}],["as",{"0":{"37":1,"58":1},"1":{"38":1,"39":1,"40":1},"2":{"5":1,"6":1,"8":1,"9":1,"10":2,"17":2,"20":1,"23":1,"28":3,"30":2,"32":1,"34":4,"37":1,"41":4,"43":1,"44":1,"50":1,"52":1,"55":1,"56":2,"65":1,"69":3,"71":1}}],["associate",{"2":{"60":1}}],["assigned",{"2":{"47":1}}],["assigning",{"2":{"22":1}}],["assign",{"2":{"4":1}}],["assets",{"2":{"1":1,"69":1}}],["always",{"2":{"30":1,"47":1,"48":1,"52":1,"60":2}}],["alternate",{"2":{"71":1}}],["alternately",{"2":{"62":1}}],["alternatively",{"2":{"55":1}}],["alternative",{"2":{"30":1}}],["although",{"2":{"28":1}}],["alongside",{"2":{"47":1,"67":1}}],["along",{"2":{"9":1}}],["algorithm",{"0":{"45":1,"46":1},"2":{"4":1,"6":1,"44":1,"45":2,"46":5,"48":1,"52":1,"55":1,"56":2}}],["algorithms",{"0":{"55":1,"56":1},"1":{"56":1},"2":{"1":1,"10":1,"48":1,"55":3,"56":2}}],["allows",{"2":{"65":1}}],["allow",{"2":{"56":1,"57":2}}],["allowing",{"2":{"54":1}}],["allpaths=true",{"2":{"46":1}}],["all",{"0":{"23":1},"2":{"2":1,"11":2,"19":1,"20":4,"21":1,"22":4,"28":3,"29":1,"42":2,"43":1,"46":1,"48":2,"52":3,"53":3,"57":1,"60":2,"65":1,"66":2,"68":1}}],["albert",{"2":{"2":1}}],["also",{"2":{"1":1,"12":1,"28":1,"30":2,"31":1,"33":1,"36":1,"38":1,"39":1,"41":2,"42":1,"48":1,"52":1,"57":1,"61":1,"66":1,"67":2}}],["a",{"0":{"10":1,"19":1,"20":1,"22":1,"45":1},"2":{"1":2,"3":2,"4":3,"5":2,"6":2,"7":2,"8":2,"9":2,"10":3,"11":4,"14":5,"15":1,"17":1,"18":1,"19":2,"20":5,"21":2,"22":1,"23":3,"24":1,"26":3,"27":1,"28":1,"30":7,"31":3,"32":4,"33":6,"34":2,"35":4,"36":1,"37":1,"38":11,"39":5,"40":7,"41":7,"42":13,"43":2,"44":6,"45":12,"46":6,"47":12,"48":6,"49":5,"50":7,"52":7,"53":4,"54":1,"55":3,"56":2,"57":3,"60":8,"62":5,"63":6,"65":6,"66":6,"67":2,"68":2,"69":5,"71":1}}],["pg1",{"2":{"35":2}}],["pg",{"2":{"34":3,"35":13,"38":4,"39":1,"42":6}}],["pixels",{"2":{"53":1,"69":1}}],["pieces",{"2":{"46":1}}],["pink",{"2":{"33":1,"34":1,"67":1}}],["picture",{"2":{"57":1}}],["pictures",{"2":{"17":1}}],["piccadilly",{"2":{"14":1}}],["peter",{"2":{"45":1}}],["petersen",{"2":{"34":5,"35":3,"38":2,"42":2,"56":1}}],["peek",{"2":{"40":1}}],["person",{"2":{"31":2}}],["people",{"2":{"10":1,"31":1}}],["pdf",{"2":{"28":2,"30":1}}],["pyplot",{"2":{"26":1}}],["p",{"2":{"19":1,"43":3,"46":3}}],["putting",{"2":{"57":1}}],["published",{"2":{"45":1}}],["purple",{"2":{"16":1,"30":1,"44":2,"52":1,"62":1,"63":1,"66":1}}],["push",{"2":{"4":2,"5":3,"7":3,"20":1,"35":1,"46":2,"65":4}}],["plum",{"2":{"34":1}}],["plum1",{"2":{"34":1}}],["plotutils",{"2":{"25":1,"26":1}}],["plots",{"2":{"1":1,"25":1,"26":2}}],["placeimage",{"2":{"57":1}}],["placed",{"2":{"54":1,"55":1,"57":1}}],["place",{"2":{"52":1,"57":1}}],["places",{"2":{"30":1}}],["plantgeom",{"2":{"20":1}}],["platform",{"2":{"11":1}}],["pkgs",{"2":{"18":1}}],["pkglist",{"2":{"7":11}}],["pkg",{"2":{"7":2,"18":5,"19":6,"20":3,"22":8}}],["pkgnames",{"2":{"7":3}}],["pkgname",{"2":{"7":4}}],["pkggraph",{"2":{"7":1}}],["pass",{"2":{"39":1,"47":1,"54":1,"55":1,"56":1,"57":1}}],["passed",{"2":{"6":1,"10":1,"33":1,"52":1,"57":1,"60":1}}],["pale",{"2":{"68":1}}],["paleturquoise",{"2":{"34":1}}],["palegreen",{"2":{"33":1,"34":1,"38":1}}],["pappus",{"2":{"34":2,"63":1}}],["pattern",{"2":{"53":1,"71":1}}],["patterns",{"2":{"34":1,"53":1,"71":1}}],["pathof",{"2":{"69":1}}],["pathcounts",{"2":{"21":1,"46":1}}],["pathname=joinpath",{"2":{"69":1}}],["pathname=",{"2":{"15":1}}],["path",{"2":{"7":2,"18":10,"19":18,"20":3,"22":1,"23":1,"32":1,"41":1,"42":6,"45":3,"46":10,"47":1,"65":1,"66":1,"68":2}}],["paths",{"0":{"21":1,"41":1,"42":1,"45":1,"46":1},"1":{"42":1,"43":1},"2":{"6":1,"18":3,"19":3,"20":3,"21":3,"22":1,"41":1,"45":1,"46":6,"66":1}}],["pages",{"2":{"29":1}}],["pagerank",{"0":{"24":1},"2":{"24":3}}],["paint",{"2":{"16":1}}],["pairs",{"2":{"30":1,"56":1}}],["pair",{"2":{"7":1}}],["pandemic",{"0":{"15":1}}],["parse",{"2":{"61":1}}],["parsefile",{"2":{"7":2,"18":1,"19":1}}],["parameters",{"2":{"34":1}}],["parents",{"2":{"21":1,"46":1}}],["partite",{"2":{"33":2}}],["particularly",{"2":{"52":1}}],["particular",{"2":{"19":1,"35":1,"37":1}}],["part",{"2":{"14":2,"17":1,"25":1,"30":1,"55":1}}],["park",{"2":{"13":1}}],["packages",{"0":{"19":1},"2":{"1":1,"7":8,"17":3,"18":3,"19":5,"20":2,"21":1,"22":7,"25":1,"26":1,"28":2,"29":1}}],["package",{"0":{"17":1,"19":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"1":1,"6":2,"7":3,"16":1,"17":3,"18":2,"19":2,"20":3,"21":2,"22":2,"23":3,"26":1,"29":1,"30":1,"47":1,"55":1,"61":1}}],["prioity",{"2":{"53":1}}],["prior",{"2":{"29":1}}],["prim",{"2":{"48":3}}],["println",{"2":{"21":1,"35":2}}],["print",{"2":{"20":1,"28":1}}],["principalmomentanalysisapp",{"2":{"19":2}}],["prepared",{"2":{"67":1}}],["present",{"2":{"53":2}}],["presented",{"2":{"17":1}}],["precise",{"2":{"41":1}}],["preceded",{"2":{"40":1}}],["predictmdextra",{"2":{"26":1}}],["predecessors",{"2":{"21":1,"46":1}}],["preview",{"2":{"1":1}}],["processing",{"2":{"65":1}}],["process",{"2":{"57":1}}],["provide",{"2":{"38":1,"45":1,"47":1,"67":1}}],["provided",{"2":{"34":1,"55":1}}],["provides",{"2":{"15":1,"30":1}}],["promise",{"2":{"33":1}}],["programming",{"2":{"29":1}}],["problem",{"2":{"24":1}}],["probability",{"2":{"15":1}}],["probably",{"2":{"5":1,"34":1,"61":1}}],["prop",{"2":{"20":7,"21":1,"22":3,"23":2,"24":1,"25":1,"26":3,"27":1,"28":1}}],["proj",{"2":{"7":2}}],["project",{"2":{"7":5,"27":2}}],["professor",{"2":{"5":1}}],["pomdpsimulators",{"2":{"27":2}}],["pomdpmodels",{"2":{"27":3}}],["pomdppolicies",{"2":{"27":1}}],["polaronmobility",{"2":{"26":1}}],["polycross",{"2":{"68":1}}],["poly",{"2":{"4":1,"46":1,"65":2}}],["positioned",{"2":{"55":1}}],["positions",{"0":{"56":1},"2":{"6":2,"9":2,"10":1,"13":1,"14":4,"15":3,"16":1,"30":1,"49":1,"55":2,"56":3,"57":1,"67":2,"69":1}}],["positive",{"2":{"47":1}}],["possibilities",{"2":{"43":1}}],["possibly",{"2":{"29":1}}],["possible",{"2":{"17":1,"20":1,"34":1,"48":1,"57":1,"63":1}}],["pos",{"2":{"34":2,"42":2,"48":2,"62":2}}],["points",{"2":{"6":1,"53":1,"55":4,"56":2,"62":1,"69":1}}],["point",{"2":{"4":5,"6":1,"9":1,"16":1,"23":1,"46":1,"53":15,"55":1,"56":1,"57":3,"62":1,"65":2,"67":2,"69":1,"71":2}}],["ptype=float64",{"2":{"55":1}}],["pts",{"2":{"16":1,"33":3,"55":3}}],["pt",{"2":{"6":1,"16":3,"56":3}}],["pt2",{"2":{"4":8,"16":2}}],["pt1",{"2":{"4":5,"16":2}}],["png",{"2":{"1":1,"30":2,"57":1}}],["skyblue",{"2":{"60":1}}],["sfdp",{"2":{"55":1}}],["sdg",{"2":{"42":2}}],["syntax",{"0":{"51":1},"1":{"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1},"2":{"52":1}}],["syntheticnetworks",{"2":{"26":1}}],["system",{"2":{"47":1,"61":1}}],["systems",{"2":{"47":1}}],["symmetrical",{"2":{"38":1}}],["symbols",{"2":{"34":1}}],["slightly",{"2":{"67":1}}],["slateblue",{"2":{"62":1,"63":1,"66":1,"68":1}}],["slope",{"2":{"28":1,"30":1,"67":3}}],["sl",{"2":{"28":2,"67":2}}],["sat",{"2":{"46":1}}],["same",{"2":{"42":1,"43":1,"50":2,"52":1,"71":1}}],["say",{"2":{"37":1,"47":1}}],["savegraph",{"2":{"22":1}}],["save",{"2":{"22":2}}],["sankey",{"2":{"6":1}}],["sanders",{"2":{"5":1}}],["squaregrid",{"2":{"53":1,"55":2,"63":1}}],["squares",{"2":{"52":1,"62":1}}],["square",{"2":{"38":1,"45":1,"52":1,"53":2,"62":4,"63":1}}],["squircle",{"2":{"16":1}}],["sqrt",{"2":{"34":1}}],["sqstate",{"2":{"20":1}}],["svgs",{"2":{"30":1}}],["svg",{"2":{"17":1,"28":2,"30":1,"61":1}}],["src",{"2":{"14":1,"23":1,"35":3,"45":2,"47":3,"48":6,"53":1,"67":2,"68":2,"69":3,"71":1}}],["scalar",{"2":{"52":1,"69":1}}],["scale",{"2":{"9":1,"13":1,"14":1,"17":1,"52":1}}],["scoring",{"2":{"48":1}}],["score",{"2":{"24":1}}],["scores",{"2":{"13":1,"48":1}}],["scene",{"2":{"15":2,"46":2,"56":3,"69":6}}],["smallgraphs",{"2":{"34":5}}],["smallgraph",{"2":{"34":4,"35":3,"36":1,"38":2,"42":2,"48":2,"49":1,"50":1,"52":1,"56":1,"60":2,"62":7,"63":3,"67":2,"68":1}}],["small",{"2":{"8":1,"30":1,"31":1}}],["sizes",{"2":{"52":3,"62":2,"69":1}}],["size",{"2":{"52":2,"53":2,"54":1}}],["sized",{"2":{"49":1}}],["signify",{"2":{"47":1}}],["similar",{"2":{"63":1}}],["simulation",{"2":{"15":1}}],["simulate",{"2":{"15":1}}],["simpleweightedgraph",{"2":{"47":4,"48":2,"67":1}}],["simpleweightedgraphs",{"2":{"29":1,"30":1,"47":2,"48":1}}],["simplecycles",{"2":{"27":1,"42":2,"43":2}}],["simplesdmlayers",{"2":{"19":2,"22":1}}],["simplegraph",{"2":{"16":1,"30":1,"32":1}}],["simple",{"0":{"7":1,"32":1},"1":{"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"8":1,"9":1,"30":1,"50":1}}],["simpledigraph",{"2":{"6":1,"31":1,"32":2,"44":1,"45":1}}],["sine",{"2":{"57":1}}],["single",{"2":{"30":1,"52":1,"60":2,"62":1,"69":1}}],["since",{"2":{"10":1,"17":1,"30":1,"43":1}}],["sin",{"2":{"5":1,"69":4}}],["shell",{"2":{"34":1,"35":1,"38":1,"53":1,"55":4}}],["shared",{"2":{"38":1}}],["shapes",{"0":{"59":1},"1":{"60":1,"61":1,"62":1,"63":1},"2":{"52":1,"53":1,"62":2,"69":1}}],["shape",{"2":{"28":1,"52":3,"53":3,"62":1}}],["shamelessly",{"2":{"5":1}}],["shopping",{"2":{"46":1}}],["shortest",{"0":{"21":1,"45":1,"46":1},"2":{"21":2,"45":2,"46":7,"47":1,"66":1}}],["should",{"2":{"6":1,"29":1,"32":1,"55":1,"56":1,"60":1,"63":1}}],["shows",{"2":{"33":1,"42":1,"47":1}}],["showed",{"2":{"15":1}}],["shown",{"2":{"11":1,"36":1,"69":1}}],["show",{"2":{"5":5,"10":1,"11":2,"28":1,"62":1}}],["showing",{"2":{"3":1,"17":1,"28":1,"56":1}}],["style",{"2":{"47":1}}],["styling",{"2":{"30":1}}],["study",{"2":{"37":1,"41":1}}],["studied",{"2":{"33":1,"34":1}}],["step",{"2":{"35":1}}],["steps",{"2":{"21":1}}],["stick",{"2":{"28":1}}],["stop",{"2":{"56":1,"69":1}}],["stoppinginterface",{"2":{"22":1}}],["stores",{"2":{"30":1}}],["stored",{"2":{"9":1,"38":1,"39":2,"47":1}}],["story",{"2":{"20":1}}],["stolen",{"2":{"5":1,"7":1}}],["statespaceroutines",{"2":{"27":1}}],["statisticalrethinking",{"2":{"26":1}}],["station",{"2":{"9":3,"11":2,"12":1,"13":1,"15":1}}],["stations",{"2":{"8":1,"9":3,"10":1,"13":1,"41":1}}],["stage",{"2":{"15":3}}],["starlight",{"2":{"19":2}}],["star",{"2":{"14":3,"23":2,"33":4,"45":4,"62":2,"65":1,"66":3,"68":1}}],["startpoint",{"2":{"69":2}}],["starts",{"2":{"15":1}}],["starting",{"2":{"15":1,"20":1,"56":1}}],["start",{"0":{"2":1},"2":{"5":4,"26":1,"30":1,"42":2,"44":1,"45":1,"69":2}}],["struct",{"2":{"19":2}}],["structure",{"2":{"14":1}}],["street",{"2":{"12":1,"13":1,"14":1}}],["stress",{"2":{"7":1,"10":1,"28":1,"34":1,"42":2,"53":1,"55":3,"56":2,"62":1,"66":3,"68":1}}],["str",{"2":{"9":2}}],["strokepath",{"2":{"4":1,"5":1}}],["stroke",{"2":{"4":1,"16":1,"28":2,"42":1,"46":1,"52":2,"65":2,"67":1}}],["strings",{"2":{"53":1,"60":1}}],["string",{"2":{"4":3,"5":1,"7":5,"13":1,"15":1,"18":2,"19":2,"20":2,"22":1,"23":1,"25":1,"26":3,"34":1,"36":1,"42":3,"47":1,"48":2,"49":1,"53":5,"60":3,"63":1,"66":1,"67":4}}],["sure",{"2":{"61":1}}],["supplied",{"2":{"56":1,"62":1,"66":1,"69":1}}],["supplying",{"2":{"66":1}}],["supply",{"2":{"34":1,"52":1,"55":1,"58":1,"60":1,"62":1,"71":1}}],["suggested",{"2":{"55":1}}],["summary",{"0":{"53":1}}],["sum",{"2":{"38":2}}],["successful",{"2":{"35":1}}],["such",{"2":{"17":1,"28":2,"32":1,"34":2,"40":1,"41":2,"42":1,"43":1,"50":1}}],["subjected",{"2":{"45":1}}],["subgraph",{"0":{"22":1}}],["subtypes",{"2":{"4":1}}],["sufficiently",{"2":{"50":1}}],["sufficient",{"2":{"4":1,"41":1}}],["spot",{"2":{"68":1}}],["spectral",{"2":{"53":1,"55":2}}],["specified",{"2":{"66":1}}],["specifies",{"2":{"39":1,"53":2}}],["specific",{"0":{"19":1},"2":{"19":1,"46":1,"52":1}}],["specify",{"2":{"31":2,"63":1}}],["spmgrids",{"2":{"25":1}}],["spanning",{"0":{"48":1},"2":{"48":5}}],["sparsematrixcsc",{"2":{"38":1,"39":2,"47":1}}],["sparsearrays",{"2":{"38":1,"39":2,"47":1}}],["spath",{"2":{"21":5}}],["space",{"2":{"4":1,"71":1}}],["sphere",{"2":{"16":2}}],["spreading",{"2":{"15":2}}],["spring",{"2":{"10":1,"28":1,"34":1,"43":2,"49":1,"55":2,"56":1}}],["sprawling",{"2":{"10":1}}],["splash",{"2":{"1":1}}],["solution",{"2":{"28":1}}],["solve",{"2":{"6":1}}],["sorted",{"2":{"25":1,"26":5}}],["sorting",{"2":{"25":1}}],["sort",{"2":{"23":1,"25":1,"26":3}}],["soilwater",{"2":{"19":2}}],["something",{"2":{"40":1,"62":1}}],["sometimes",{"2":{"28":1,"35":1}}],["some",{"0":{"28":1,"35":1},"1":{"36":1},"2":{"15":1,"17":1,"19":1,"20":1,"23":1,"25":1,"30":2,"32":1,"34":1,"37":1,"42":3,"45":1,"47":1,"48":1,"52":2,"55":1,"56":1,"69":1}}],["south",{"2":{"10":1}}],["sourcevertex",{"2":{"58":1}}],["sources",{"2":{"42":1,"67":1}}],["source",{"0":{"5":1},"2":{"19":2,"35":1,"67":1}}],["so",{"2":{"2":1,"8":1,"15":1,"32":1,"33":1,"39":1,"40":1,"43":1,"44":1,"50":2,"61":1}}],["social",{"2":{"1":1,"47":1,"49":1}}],["se",{"2":{"71":1}}],["self",{"2":{"69":1}}],["selected",{"2":{"66":1}}],["selection",{"2":{"1":1}}],["separate",{"2":{"47":1}}],["series",{"2":{"46":1}}],["sedgewick",{"2":{"34":1}}],["sedgewickmaze",{"2":{"34":1}}],["second",{"2":{"33":1}}],["section",{"2":{"7":1,"27":2,"29":1,"49":1}}],["sequence",{"2":{"32":1,"42":1,"66":1}}],["sent",{"2":{"31":1}}],["seven",{"2":{"21":1}}],["sets",{"2":{"55":1,"69":1}}],["settings",{"2":{"31":1}}],["setcolor",{"2":{"28":1,"47":1}}],["set",{"2":{"20":4,"22":1,"37":1,"47":1,"48":1,"52":2,"53":1,"62":2}}],["setmesh",{"2":{"16":1}}],["setup",{"0":{"9":1},"2":{"9":1,"17":1}}],["setopacity",{"2":{"7":1,"16":1,"28":2,"56":1}}],["setlinejoin",{"2":{"46":1,"65":1}}],["setlinecap",{"2":{"45":1}}],["setline",{"2":{"4":1,"16":1,"28":2,"32":1,"33":3,"34":1,"46":1,"62":1,"65":2}}],["sethue",{"2":{"2":1,"4":4,"5":1,"6":1,"7":2,"10":2,"11":1,"13":1,"14":2,"15":2,"16":2,"23":1,"24":1,"28":6,"30":4,"31":1,"32":2,"33":6,"34":5,"36":1,"38":2,"40":1,"42":5,"43":2,"44":1,"45":3,"46":3,"47":4,"48":9,"49":1,"50":2,"52":2,"56":1,"57":2,"60":2,"61":1,"62":9,"63":4,"65":3,"66":8,"67":4,"68":1,"69":2,"70":1,"71":1}}],["seed",{"2":{"45":1}}],["seen",{"2":{"34":1}}],["seeing",{"2":{"10":1,"26":1}}],["see",{"2":{"2":1,"10":1,"21":1,"30":2,"31":2,"35":1,"40":1}}],["sgtsnepi",{"2":{"1":1,"20":1}}],["s",{"0":{"46":1},"2":{"1":2,"4":1,"5":1,"7":2,"10":1,"11":1,"13":2,"15":3,"16":1,"17":1,"19":3,"20":3,"21":1,"22":1,"27":1,"28":3,"30":7,"31":1,"33":1,"34":3,"35":3,"37":1,"38":1,"39":2,"43":2,"44":1,"45":2,"46":6,"47":5,"48":1,"49":2,"52":3,"53":1,"54":1,"55":1,"56":3,"57":1,"61":1,"62":3,"63":2,"66":3,"69":2}}],["ignored",{"2":{"57":1}}],["icosahedral",{"2":{"34":2,"63":1}}],["illustrated",{"2":{"29":1}}],["ie",{"2":{"17":1,"35":1,"57":1,"71":1}}],["immortality",{"2":{"48":1}}],["improves",{"2":{"56":1}}],["impressionistic",{"2":{"23":1}}],["implemented",{"2":{"20":1}}],["implot",{"2":{"18":2}}],["importance",{"2":{"49":3}}],["important",{"2":{"10":1,"17":1}}],["imposed",{"2":{"14":1}}],["imageio",{"2":{"26":1}}],["imagesegmentation",{"2":{"27":1}}],["images",{"2":{"26":3,"27":1,"28":1,"57":1}}],["imagecore",{"2":{"25":1,"26":1,"27":3}}],["imagemetadata",{"2":{"20":1}}],["image",{"2":{"1":1,"39":1}}],["ideas",{"2":{"28":1}}],["idx",{"2":{"21":3,"22":3}}],["id",{"2":{"9":1}}],["i",{"2":{"5":4,"7":1,"15":3,"16":2,"18":1,"20":7,"21":2,"25":1,"26":6,"33":4,"42":6,"46":5,"55":4,"56":3,"62":4,"63":1,"67":2}}],["if",{"2":{"4":1,"5":2,"7":5,"9":1,"14":1,"15":2,"18":1,"20":1,"21":1,"22":1,"27":1,"28":1,"30":1,"31":1,"35":2,"38":1,"40":1,"43":1,"47":1,"52":2,"53":2,"57":3,"58":1,"60":1,"61":1,"66":1,"67":1,"71":1}}],["iteration",{"2":{"56":1}}],["iterations=i",{"2":{"56":1}}],["iterations",{"2":{"7":1,"20":1,"55":2}}],["iterating",{"2":{"35":1}}],["iterator",{"2":{"35":2,"56":1}}],["iterate",{"2":{"35":1}}],["itself",{"2":{"21":1}}],["its",{"2":{"12":1,"18":1,"20":1,"21":1,"27":2,"38":1,"40":1,"46":1}}],["it",{"2":{"1":1,"5":1,"10":2,"11":1,"16":1,"17":1,"19":1,"20":3,"22":1,"24":1,"26":1,"28":2,"30":3,"34":2,"35":1,"42":1,"43":1,"44":1,"46":1,"47":3,"49":1,"52":1,"57":1,"60":1,"62":1,"63":2,"66":1,"67":1}}],["issue",{"2":{"24":1,"69":1}}],["isfile",{"2":{"19":1}}],["isempty",{"2":{"15":1,"20":1}}],["isequal",{"2":{"4":2,"7":2,"9":1}}],["isn",{"2":{"14":1,"24":1,"60":1}}],["isa",{"2":{"5":1}}],["is",{"0":{"27":1},"2":{"1":1,"6":1,"7":1,"8":1,"9":2,"10":1,"11":1,"12":1,"13":1,"14":2,"15":1,"18":4,"20":2,"21":2,"24":1,"26":1,"27":1,"29":1,"30":6,"32":3,"33":3,"36":2,"37":1,"38":4,"39":3,"40":4,"42":5,"43":1,"44":3,"45":4,"46":4,"47":4,"48":2,"49":1,"50":3,"52":5,"53":1,"54":1,"55":3,"61":1,"62":3,"63":1,"66":1,"68":1,"69":2}}],["inventing",{"2":{"48":1}}],["investigation",{"2":{"7":1}}],["inspiration",{"2":{"46":1}}],["inside",{"2":{"40":1,"53":1,"54":1}}],["install",{"2":{"47":1}}],["installed",{"2":{"7":1}}],["instead",{"2":{"16":1}}],["innerpts",{"2":{"16":2}}],["initialpos=initialpositions",{"2":{"56":1}}],["initialpositions",{"2":{"56":2}}],["initialtemp",{"2":{"55":1}}],["initial",{"0":{"56":1},"2":{"15":1,"56":3}}],["increasing",{"2":{"52":1}}],["incidence",{"0":{"39":1},"2":{"37":1,"39":5}}],["incident",{"2":{"15":1}}],["include",{"2":{"35":1}}],["included",{"2":{"29":1,"48":1}}],["including",{"2":{"6":1,"48":1}}],["influencers",{"2":{"49":1}}],["infected",{"2":{"15":3}}],["infections=",{"2":{"15":1}}],["infection",{"2":{"15":2}}],["informal",{"2":{"41":2}}],["information",{"0":{"35":1},"1":{"36":1},"2":{"14":1,"20":1,"35":1,"46":2,"55":1}}],["info",{"2":{"7":2,"18":2,"27":1,"28":1}}],["individual",{"2":{"34":1}}],["indicate",{"2":{"39":1}}],["indicators",{"2":{"11":1}}],["indices",{"2":{"25":2,"26":6,"38":1}}],["independently",{"2":{"69":1}}],["indegree",{"2":{"26":2}}],["indeed",{"2":{"21":1}}],["index",{"0":{"0":1}}],["in",{"0":{"61":1},"2":{"4":2,"5":1,"6":2,"7":11,"8":1,"9":3,"10":2,"11":1,"13":1,"14":1,"15":2,"16":1,"17":2,"18":2,"19":3,"20":4,"21":3,"22":4,"23":3,"24":1,"25":1,"26":1,"27":3,"29":2,"30":5,"31":3,"32":1,"33":7,"34":4,"35":6,"36":2,"38":1,"40":1,"41":2,"42":8,"43":1,"44":3,"45":2,"46":5,"47":2,"48":4,"49":5,"50":2,"52":3,"53":2,"55":4,"56":2,"57":1,"60":1,"61":3,"62":7,"63":3,"67":3,"68":2,"69":6,"71":2}}],["integers",{"2":{"50":2}}],["integer",{"2":{"47":1}}],["interesting",{"2":{"66":1}}],["interpreted",{"2":{"47":1}}],["interpretation",{"2":{"7":1}}],["internally",{"2":{"40":1}}],["interactbase",{"2":{"20":1}}],["interactiveutils",{"2":{"4":1,"7":1}}],["int",{"2":{"34":1,"35":1,"53":15}}],["int64",{"2":{"9":2,"15":1,"20":1,"22":1,"25":1,"26":3,"30":1,"35":1,"38":2,"39":4,"42":1,"47":1}}],["into",{"2":{"9":1,"47":1,"52":1,"65":1}}],["introduction",{"0":{"1":1},"1":{"2":1},"2":{"29":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/VPLocalSearchBox.CHDqaqhP.js b/dev/assets/chunks/VPLocalSearchBox.CHDqaqhP.js new file mode 100644 index 0000000..dd90835 --- /dev/null +++ b/dev/assets/chunks/VPLocalSearchBox.CHDqaqhP.js @@ -0,0 +1,13 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +var It=Object.defineProperty;var Dt=(o,e,t)=>e in o?It(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>(Dt(o,typeof e!="symbol"?e+"":e,t),t);import{Y as yt,h as oe,y as $e,al as kt,am as Ot,d as _t,H as xe,an as tt,k as Fe,ao as Rt,ap as Mt,z as Lt,aq as zt,l as _e,U as de,S as Ee,ar as Pt,as as Vt,Z as Bt,j as $t,at as Wt,o as ee,b as Kt,m as k,a2 as Jt,p as j,au as Ut,av as jt,aw as Gt,c as re,n as rt,e as Se,G as at,F as nt,a as ve,t as pe,ax as qt,q as Ht,s as Qt,ay as it,az as Yt,ab as Zt,ah as Xt,aA as er,_ as tr}from"./framework.BHs3sUaM.js";import{u as rr,c as ar}from"./theme.y-s9L4ZZ.js";const nr={root:()=>yt(()=>import("./@localSearchIndexroot.Da2ssDEu.js"),__vite__mapDeps([]))};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["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=mt.join(","),gt=typeof Element>"u",ue=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!gt&&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"},bt=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},wt=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},xt=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))&&!xt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!xt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},Ft=function(e){return e.tagName==="INPUT"},ur=function(e){return Ft(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=wt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=bt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=bt(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=mt.concat("iframe").join(","),Re=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(V){var U=V.firstTabbableNode;return f===U});if(m<0&&(P.container===f||Re(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(V){var U=V.lastTabbableNode;return f===U});if(K<0&&(P.container===f||Re(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!P.nextTabbableNode(f))&&(K=z),K>=0){var q=K===i.tabbableGroups.length-1?0:K+1,H=i.tabbableGroups[q];M=se(f)>=0?H.firstTabbableNode:H.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))},R=function(c){var f=Ae(c);l(f,c)>=0||ye(a.clickOutsideDeactivates,c)||ye(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},B=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",R,{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",R,!0),r.removeEventListener("keydown",L,!0),s},_=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(_):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(),B(),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(),B(),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 _r(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",Et="KEYS",St="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 St:return this.value();case Et: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}At(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,Et)},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,St)},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 Rr(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,R,B,N,_,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=(_=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){_={error:f}}finally{try{y&&!y.done&&(A=v.return)&&A.call(v)}finally{if(_)throw _.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 R=c.sent(),B={error:R},[3,9];case 8:try{u&&!u.done&&(N=s.return)&&N.call(s)}finally{if(B)throw B.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||Be.minDirtCount,r=r||Be.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){r={error:R}}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(R){a={error:R}}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(Ve.hasOwnProperty(e))return Pe(Ve,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),R=L.next();!R.done;R=L.next()){var B=J(R.value,2),N=B[0],_=B[1];F._idToShortId.set(_,N)}}catch(P){r={error:P}}finally{try{R&&!R.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,R=L<1?Math.min(d,Math.round(e.term.length*L)):L;R&&(F=this._index.fuzzyGet(e.term,R))}if(T)try{for(var B=D(T),N=B.next();!N.done;N=B.next()){var _=J(N.value,2),A=_[0],O=_[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=B.return)&&n.call(B)}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,R=this._avgFieldLength[T];try{for(var B=(d=void 0,D(F.keys())),N=B.next();!N.done;N=B.next()){var _=N.value;if(!this._documentIds.has(_)){this.removeTerm(T,_,t),L-=1;continue}var A=i?i(this._documentIds.get(_),t,this._storedFields.get(_)):1;if(A){var O=F.get(_),w=this._fieldLength.get(_)[T],c=Kr(O,L,this._documentCount,w,R,s),f=r*S*A*c,p=u.get(_);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(_,{score:f,terms:[e],match:(y={},y[t]=[g],y)})}}}catch(I){d={error:I}}finally{try{N&&!N.done&&(v=B.return)&&v.call(B)}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(Ht("data-v-f5c68218"),o=o(),Qt(),o),Hr=["aria-owns"],Qr={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)),_a=[Oa],Ra=["aria-label"],Ma=Y(()=>k("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),La=[Ma],za=["aria-label"],Pa=_t({__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,H,V,U,Z;return it(Br.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"&&((H=(q=l.value.search.options)==null?void 0:q.miniSearch)==null?void 0:H.searchOptions)},...((V=l.value.search)==null?void 0:V.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(""):Rt("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,H,V,U;const m=((x=l.value.search)==null?void 0:x.options)??l.value.algolia;return((H=(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:H.buttonText)||((U=(V=m==null?void 0:m.translations)==null?void 0:V.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 _r(n.value))},null),F=new qr(16);zt(()=>[h.value,v.value,y.value],async([m,x,$],K,q)=>{var be,qe,He,Qe;(K==null?void 0:K[0])!==m&&F.clear();let H=!1;if(q(()=>{H=!0}),!m)return;g.value=m.search(x).slice(0,16),S.value=!0;const V=$?await Promise.all(g.value.map(Q=>L(Q.id))):[];if(H)return;for(const{id:Q,mod:ae}of V){const ne=Q.slice(0,Q.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(H)return}const U=new Set;if(g.value=g.value.map(Q=>{const[ae,ne]=Q.id.split("#"),te=F.get(ae),X=(te==null?void 0:te.get(ne))??"";for(const ie in Q.match)U.add(ie);return{...Q,text:X}}),await de(),H)return;await new Promise(Q=>{var ae;(ae=T.value)==null||ae.unmark({done:()=>{var ne;(ne=T.value)==null||ne.markRegExp(M(U),{done:Q})}})});const Z=((be=r.value)==null?void 0:be.querySelectorAll(".result .excerpt"))??[];for(const Q of Z)(qe=Q.querySelector('mark[data-markjs="true"]'))==null||qe.scrollIntoView({block:"center"});(Qe=(He=n.value)==null?void 0:He.firstElementChild)==null||Qe.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 yt(()=>import(x),__vite__mapDeps([]))}}catch($){return console.error($),{id:m,mod:{}}}}const R=oe(),B=Fe(()=>{var m;return((m=v.value)==null?void 0:m.length)<=0});function N(m=!0){var x,$;(x=R.value)==null||x.focus(),m&&(($=R.value)==null||$.select())}_e(()=>{N()});function _(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&&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"}}});_e(()=>{window.history.pushState(null,"",null)}),Vt("popstate",m=>{m.preventDefault(),t("close")});const C=Bt($t?document.body:null);_e(()=>{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,H;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]=V=>m.$emit("close"))}),k("div",Qr,[k("form",{class:"search-bar",onPointerup:x[4]||(x[4]=V=>_(V)),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]=V=>m.$emit("close"))},aa,8,ta)]),Ut(k("input",{ref_key:"searchInput",ref:R,"onUpdate:modelValue":x[2]||(x[2]=V=>Gt(v)?v.value=V: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]=V=>A.value>-1&&(y.value=!j(y)))},ua,10,oa)),k("button",{class:"clear-button",type:"reset",disabled:B.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":(H=g.value)!=null&&H.length?"localsearch-label":void 0,class:"results",onMousemove:x[7]||(x[7]=V=>O.value=!1)},[(ee(!0),re(nt,null,at(g.value,(V,U)=>(ee(),re("li",{key:V.id,role:"option","aria-selected":A.value===U?"true":"false"},[k("a",{href:V.id,class:rt(["result",{selected:A.value===U}]),"aria-label":[...V.titles,V.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(V.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:V.title},null,8,wa)])]),j(y)?(ee(),re("div",xa,[V.text?(ee(),re("div",Fa,[k("div",{class:"vp-doc",innerHTML:V.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")},_a,8,ka),ve(" "+pe(j(p)("modal.footer.navigateText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.selectKeyAriaLabel")},La,8,Ra),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,Hr)])}}}),Ja=tr(Pa,[["__scopeId","data-v-f5c68218"]]);export{Ja as default}; diff --git a/dev/assets/chunks/framework.BHs3sUaM.js b/dev/assets/chunks/framework.BHs3sUaM.js new file mode 100644 index 0000000..622932a --- /dev/null +++ b/dev/assets/chunks/framework.BHs3sUaM.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Sr(e,t){const n=new Set(e.split(","));return t?r=>n.has(r.toLowerCase()):r=>n.has(r)}const ee={},_t=[],xe=()=>{},Ti=()=>!1,Wt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Tr=e=>e.startsWith("onUpdate:"),ce=Object.assign,Ar=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ai=Object.prototype.hasOwnProperty,Y=(e,t)=>Ai.call(e,t),k=Array.isArray,vt=e=>Rn(e)==="[object Map]",eo=e=>Rn(e)==="[object Set]",q=e=>typeof e=="function",ne=e=>typeof e=="string",At=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",to=e=>(Z(e)||q(e))&&q(e.then)&&q(e.catch),no=Object.prototype.toString,Rn=e=>no.call(e),Ri=e=>Rn(e).slice(8,-1),ro=e=>Rn(e)==="[object Object]",Rr=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=Sr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ln=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Li=/-(\w)/g,Fe=Ln(e=>e.replace(Li,(t,n)=>n?n.toUpperCase():"")),Oi=/\B([A-Z])/g,ft=Ln(e=>e.replace(Oi,"-$1").toLowerCase()),On=Ln(e=>e.charAt(0).toUpperCase()+e.slice(1)),hn=Ln(e=>e?`on${On(e)}`:""),Ze=(e,t)=>!Object.is(e,t),pn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},ur=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ii=e=>{const t=ne(e)?Number(e):NaN;return isNaN(t)?e:t};let rs;const so=()=>rs||(rs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Lr(e){if(k(e)){const t={};for(let n=0;n{if(n){const r=n.split(Pi);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Or(e){let t="";if(ne(e))t=e;else if(k(e))for(let n=0;nne(e)?e:e==null?"":k(e)||Z(e)&&(e.toString===no||!q(e.toString))?JSON.stringify(e,io,2):String(e),io=(e,t)=>t&&t.__v_isRef?io(e,t.value):vt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Gn(r,o)+" =>"]=s,n),{})}:eo(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Gn(n))}:At(t)?Gn(t):Z(t)&&!k(t)&&!ro(t)?String(t):t,Gn=(e,t="")=>{var n;return At(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let ve;class ji{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ve,!t&&ve&&(this.index=(ve.scopes||(ve.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=ve;try{return ve=this,t()}finally{ve=n}}}on(){ve=this}off(){ve=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),ht()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ye,n=ct;try{return Ye=!0,ct=this,this._runnings++,ss(this),this.fn()}finally{os(this),this._runnings--,ct=n,Ye=t}}stop(){var t;this.active&&(ss(this),os(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Ui(e){return e.value}function ss(e){e._trackId++,e._depsLength=0}function os(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},vn=new WeakMap,at=Symbol(""),hr=Symbol("");function ye(e,t,n){if(Ye&&ct){let r=vn.get(e);r||vn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=ho(()=>r.delete(n))),uo(ct,s)}}function je(e,t,n,r,s,o){const i=vn.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"||!At(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":k(e)?Rr(n)&&l.push(i.get("length")):(l.push(i.get(at)),vt(e)&&l.push(i.get(hr)));break;case"delete":k(e)||(l.push(i.get(at)),vt(e)&&l.push(i.get(hr)));break;case"set":vt(e)&&l.push(i.get(at));break}Mr();for(const c of l)c&&fo(c,4);Pr()}function ki(e,t){var n;return(n=vn.get(e))==null?void 0:n.get(t)}const Bi=Sr("__proto__,__v_isRef,__isVue"),po=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(At)),is=Ki();function Ki(){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){dt(),Mr();const r=J(this)[t].apply(this,n);return Pr(),ht(),r}}),e}function Wi(e){const t=J(this);return ye(t,"has",e),t.hasOwnProperty(e)}class go{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?sl:vo:o?_o:yo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=k(t);if(!s){if(i&&Y(is,n))return Reflect.get(is,n,r);if(n==="hasOwnProperty")return Wi}const l=Reflect.get(t,n,r);return(At(n)?po.has(n):Bi(n))||(s||ye(t,"get",n),o)?l:de(l)?i&&Rr(n)?l:l.value:Z(l)?s?Pn(l):Mn(l):l}}class mo extends go{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=St(o);if(!bn(r)&&!St(r)&&(o=J(o),r=J(r)),!k(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=k(t)&&Rr(n)?Number(n)e,In=e=>Reflect.getPrototypeOf(e);function Qt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(Ze(t,o)&&ye(s,"get",t),ye(s,"get",o));const{has:i}=In(s),l=r?Nr:n?Hr:Dt;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 Zt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(Ze(e,s)&&ye(r,"has",e),ye(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function en(e,t=!1){return e=e.__v_raw,!t&&ye(J(e),"iterate",at),Reflect.get(e,"size",e)}function ls(e){e=J(e);const t=J(this);return In(t).has.call(t,e)||(t.add(e),je(t,"add",e,e)),this}function cs(e,t){t=J(t);const n=J(this),{has:r,get:s}=In(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?Ze(t,i)&&je(n,"set",e,t):je(n,"add",e,t),this}function as(e){const t=J(this),{has:n,get:r}=In(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&&je(t,"delete",e,void 0),o}function us(){const e=J(this),t=e.size!==0,n=e.clear();return t&&je(e,"clear",void 0,void 0),n}function tn(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Nr:e?Hr:Dt;return!e&&ye(l,"iterate",at),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function nn(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=vt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Nr:t?Hr:Dt;return!t&&ye(o,"iterate",c?hr:at),{next(){const{value:h,done:p}=a.next();return p?{value:h,done:p}:{value:l?[f(h[0]),f(h[1])]:f(h),done:p}},[Symbol.iterator](){return this}}}}function ke(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Yi(){const e={get(o){return Qt(this,o)},get size(){return en(this)},has:Zt,add:ls,set:cs,delete:as,clear:us,forEach:tn(!1,!1)},t={get(o){return Qt(this,o,!1,!0)},get size(){return en(this)},has:Zt,add:ls,set:cs,delete:as,clear:us,forEach:tn(!1,!0)},n={get(o){return Qt(this,o,!0)},get size(){return en(this,!0)},has(o){return Zt.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:tn(!0,!1)},r={get(o){return Qt(this,o,!0,!0)},get size(){return en(this,!0)},has(o){return Zt.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:tn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=nn(o,!1,!1),n[o]=nn(o,!0,!1),t[o]=nn(o,!1,!0),r[o]=nn(o,!0,!0)}),[e,n,t,r]}const[Ji,Qi,Zi,el]=Yi();function Fr(e,t){const n=t?e?el:Zi:e?Qi:Ji;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 tl={get:Fr(!1,!1)},nl={get:Fr(!1,!0)},rl={get:Fr(!0,!1)},yo=new WeakMap,_o=new WeakMap,vo=new WeakMap,sl=new WeakMap;function ol(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function il(e){return e.__v_skip||!Object.isExtensible(e)?0:ol(Ri(e))}function Mn(e){return St(e)?e:$r(e,!1,Gi,tl,yo)}function ll(e){return $r(e,!1,Xi,nl,_o)}function Pn(e){return $r(e,!0,zi,rl,vo)}function $r(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=il(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function wt(e){return St(e)?wt(e.__v_raw):!!(e&&e.__v_isReactive)}function St(e){return!!(e&&e.__v_isReadonly)}function bn(e){return!!(e&&e.__v_isShallow)}function bo(e){return wt(e)||St(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Mt(e){return Object.isExtensible(e)&&_n(e,"__v_skip",!0),e}const Dt=e=>Z(e)?Mn(e):e,Hr=e=>Z(e)?Pn(e):e;class wo{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 Ir(()=>t(this._value),()=>Pt(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())&&Pt(t,4),jr(t),t.effect._dirtyLevel>=2&&Pt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function cl(e,t,n=!1){let r,s;const o=q(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new wo(r,s,o||!s,n)}function jr(e){var t;Ye&&ct&&(e=J(e),uo(ct,(t=e.dep)!=null?t:e.dep=ho(()=>e.dep=void 0,e instanceof wo?e:void 0)))}function Pt(e,t=4,n){e=J(e);const r=e.dep;r&&fo(r,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function se(e){return Eo(e,!1)}function Vr(e){return Eo(e,!0)}function Eo(e,t){return de(e)?e:new al(e,t)}class al{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:Dt(t)}get value(){return jr(this),this._value}set value(t){const n=this.__v_isShallow||bn(t)||St(t);t=n?t:J(t),Ze(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Dt(t),Pt(this,4))}}function Co(e){return de(e)?e.value:e}const ul={get:(e,t,n)=>Co(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 xo(e){return wt(e)?e:new Proxy(e,ul)}class fl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>jr(this),()=>Pt(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function dl(e){return new fl(e)}class hl{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 ki(J(this._object),this._key)}}class pl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function gl(e,t,n){return de(e)?e:q(e)?new pl(e):Z(e)&&arguments.length>1?ml(e,t,n):se(e)}function ml(e,t,n){const r=e[t];return de(r)?r:new hl(e,t,n)}/** +* @vue/runtime-core v3.4.21 +* (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){qt(s,t,n)}}function Se(e,t,n,r){if(q(e)){const o=Je(e,t,n,r);return o&&to(o)&&o.catch(i=>{qt(i,t,n)}),o}const s=[];for(let o=0;o>>1,s=he[r],o=kt(s);oPe&&he.splice(t,1)}function bl(e){k(e)?Et.push(...e):(!qe||!qe.includes(e,e.allowRecurse?ot+1:ot))&&Et.push(e),To()}function fs(e,t,n=Ut?Pe+1:0){for(;nkt(n)-kt(r));if(Et.length=0,qe){qe.push(...t);return}for(qe=t,ot=0;ote.id==null?1/0:e.id,wl=(e,t)=>{const n=kt(e)-kt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ao(e){pr=!1,Ut=!0,he.sort(wl);try{for(Pe=0;Pene(y)?y.trim():y)),h&&(s=n.map(ur))}let l,c=r[l=hn(t)]||r[l=hn(Fe(t))];!c&&o&&(c=r[l=hn(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 Ro(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(!q(e)){const c=a=>{const f=Ro(a,t,!0);f&&(l=!0,ce(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):ce(i,o),Z(e)&&r.set(e,i),i)}function $n(e,t){return!e||!Wt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,ft(t))||Y(e,t))}let le=null,Hn=null;function En(e){const t=le;return le=e,Hn=e&&e.type.__scopeId||null,t}function Za(e){Hn=e}function eu(){Hn=null}function Cl(e,t=le,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&Ss(-1);const o=En(t);let i;try{i=e(...s)}finally{En(o),r._d&&Ss(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function zn(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:f,renderCache:h,data:p,setupState:y,ctx:w,inheritAttrs:I}=e;let N,K;const B=En(e);try{if(n.shapeFlag&4){const _=s||r,M=_;N=Re(f.call(M,_,h,o,y,p,w)),K=c}else{const _=t;N=Re(_.length>1?_(o,{attrs:c,slots:l,emit:a}):_(o,null)),K=t.props?c:xl(c)}}catch(_){jt.length=0,qt(_,e,1),N=oe(be)}let g=N;if(K&&I!==!1){const _=Object.keys(K),{shapeFlag:M}=g;_.length&&M&7&&(i&&_.some(Tr)&&(K=Sl(K,i)),g=et(g,K))}return n.dirs&&(g=et(g),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),N=g,En(B),N}const xl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Wt(n))&&((t||(t={}))[n]=e[n]);return t},Sl=(e,t)=>{const n={};for(const r in e)(!Tr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Tl(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?ds(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Io(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):bl(e)}const Ll=Symbol.for("v-scx"),Ol=()=>xt(Ll);function kr(e,t){return jn(e,null,t)}function ru(e,t){return jn(e,null,{flush:"post"})}const rn={};function Ve(e,t,n){return jn(e,t,n)}function jn(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ee){if(t&&o){const L=t;t=(...F)=>{L(...F),M()}}const c=ue,a=L=>r===!0?L:lt(L,r===!1?1:void 0);let f,h=!1,p=!1;if(de(e)?(f=()=>e.value,h=bn(e)):wt(e)?(f=()=>a(e),h=!0):k(e)?(p=!0,h=e.some(L=>wt(L)||bn(L)),f=()=>e.map(L=>{if(de(L))return L.value;if(wt(L))return a(L);if(q(L))return Je(L,c,2)})):q(e)?t?f=()=>Je(e,c,2):f=()=>(y&&y(),Se(e,c,3,[w])):f=xe,t&&r){const L=f;f=()=>lt(L())}let y,w=L=>{y=g.onStop=()=>{Je(L,c,4),y=g.onStop=void 0}},I;if(Xt)if(w=xe,t?n&&Se(t,c,3,[f(),p?[]:void 0,w]):f(),s==="sync"){const L=Ol();I=L.__watcherHandles||(L.__watcherHandles=[])}else return xe;let N=p?new Array(e.length).fill(rn):rn;const K=()=>{if(!(!g.active||!g.dirty))if(t){const L=g.run();(r||h||(p?L.some((F,T)=>Ze(F,N[T])):Ze(L,N)))&&(y&&y(),Se(t,c,3,[L,N===rn?void 0:p&&N[0]===rn?[]:N,w]),N=L)}else g.run()};K.allowRecurse=!!t;let B;s==="sync"?B=K:s==="post"?B=()=>ge(K,c&&c.suspense):(K.pre=!0,c&&(K.id=c.uid),B=()=>Fn(K));const g=new Ir(f,xe,B),_=lo(),M=()=>{g.stop(),_&&Ar(_.effects,g)};return t?n?K():N=g.run():s==="post"?ge(g.run.bind(g),c&&c.suspense):g.run(),I&&I.push(M),M}function Il(e,t,n){const r=this.proxy,s=ne(e)?e.includes(".")?Mo(r,e):()=>r[e]:e.bind(r,r);let o;q(t)?o=t:(o=t.handler,n=t);const i=zt(this),l=jn(s,o.bind(r),n);return i(),l}function Mo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),de(e))lt(e.value,t,n,r);else if(k(e))for(let s=0;s{lt(s,t,n,r)});else if(ro(e))for(const s in e)lt(e[s],t,n,r);return e}function su(e,t){if(le===null)return e;const n=Bn(le)||le.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Ho(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],Po={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},Pl={name:"BaseTransition",props:Po,setup(e,{slots:t}){const n=kn(),r=Ml();return()=>{const s=t.default&&Fo(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const p of s)if(p.type!==be){o=p;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return Xn(o);const c=ps(o);if(!c)return Xn(o);const a=gr(c,i,r,n);mr(c,a);const f=n.subTree,h=f&&ps(f);if(h&&h.type!==be&&!it(c,h)){const p=gr(h,i,r,n);if(mr(h,p),l==="out-in")return r.isLeaving=!0,p.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Xn(o);l==="in-out"&&c.type!==be&&(p.delayLeave=(y,w,I)=>{const N=No(r,h);N[String(h.key)]=h,y[Ge]=()=>{w(),y[Ge]=void 0,delete a.delayedLeave},a.delayedLeave=I})}return o}}},Nl=Pl;function No(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 gr(e,t,n,r){const{appear:s,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:f,onBeforeLeave:h,onLeave:p,onAfterLeave:y,onLeaveCancelled:w,onBeforeAppear:I,onAppear:N,onAfterAppear:K,onAppearCancelled:B}=t,g=String(e.key),_=No(n,e),M=(T,$)=>{T&&Se(T,r,9,$)},L=(T,$)=>{const E=$[1];M(T,$),k(T)?T.every(j=>j.length<=1)&&E():T.length<=1&&E()},F={mode:o,persisted:i,beforeEnter(T){let $=l;if(!n.isMounted)if(s)$=I||l;else return;T[Ge]&&T[Ge](!0);const E=_[g];E&&it(e,E)&&E.el[Ge]&&E.el[Ge](),M($,[T])},enter(T){let $=c,E=a,j=f;if(!n.isMounted)if(s)$=N||c,E=K||a,j=B||f;else return;let A=!1;const G=T[sn]=ie=>{A||(A=!0,ie?M(j,[T]):M(E,[T]),F.delayedLeave&&F.delayedLeave(),T[sn]=void 0)};$?L($,[T,G]):G()},leave(T,$){const E=String(e.key);if(T[sn]&&T[sn](!0),n.isUnmounting)return $();M(h,[T]);let j=!1;const A=T[Ge]=G=>{j||(j=!0,$(),G?M(w,[T]):M(y,[T]),T[Ge]=void 0,_[E]===e&&delete _[E])};_[E]=e,p?L(p,[T,A]):A()},clone(T){return gr(T,t,n,r)}};return F}function Xn(e){if(Gt(e))return e=et(e),e.children=null,e}function ps(e){return Gt(e)?e.children?e.children[0]:void 0:e}function mr(e,t){e.shapeFlag&6&&e.component?mr(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 Fo(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 ou(e){q(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,p()),p=()=>{let y;return c||(y=c=t().catch(w=>{if(w=w instanceof Error?w:new Error(String(w)),l)return new Promise((I,N)=>{l(w,()=>I(h()),()=>N(w),f+1)});throw w}).then(w=>y!==c&&c?c:(w&&(w.__esModule||w[Symbol.toStringTag]==="Module")&&(w=w.default),a=w,w)))};return Br({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return a},setup(){const y=ue;if(a)return()=>Yn(a,y);const w=B=>{c=null,qt(B,y,13,!r)};if(i&&y.suspense||Xt)return p().then(B=>()=>Yn(B,y)).catch(B=>(w(B),()=>r?oe(r,{error:B}):null));const I=se(!1),N=se(),K=se(!!s);return s&&setTimeout(()=>{K.value=!1},s),o!=null&&setTimeout(()=>{if(!I.value&&!N.value){const B=new Error(`Async component timed out after ${o}ms.`);w(B),N.value=B}},o),p().then(()=>{I.value=!0,y.parent&&Gt(y.parent.vnode)&&(y.parent.effect.dirty=!0,Fn(y.parent.update))}).catch(B=>{w(B),N.value=B}),()=>{if(I.value&&a)return Yn(a,y);if(N.value&&r)return oe(r,{error:N.value});if(n&&!K.value)return oe(n)}}})}function Yn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=oe(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const Gt=e=>e.type.__isKeepAlive;function Fl(e,t){$o(e,"a",t)}function $l(e,t){$o(e,"da",t)}function $o(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(Vn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Gt(s.parent.vnode)&&Hl(r,t,n,s),s=s.parent}}function Hl(e,t,n,r){const s=Vn(t,e,r,!0);Dn(()=>{Ar(r[t],s)},n)}function Vn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;dt();const l=zt(n),c=Se(t,n,e,i);return l(),ht(),c});return r?s.unshift(o):s.push(o),o}}const Ue=e=>(t,n=ue)=>(!Xt||e==="sp")&&Vn(e,(...r)=>t(...r),n),jl=Ue("bm"),Rt=Ue("m"),Vl=Ue("bu"),Dl=Ue("u"),Ho=Ue("bum"),Dn=Ue("um"),Ul=Ue("sp"),kl=Ue("rtg"),Bl=Ue("rtc");function Kl(e,t=ue){Vn("ec",e,t)}function iu(e,t,n,r){let s;const o=n&&n[r];if(k(e)||ne(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lSn(t)?!(t.type===be||t.type===me&&!jo(t.children)):!0)?e:null}function cu(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:hn(r)]=e[r];return n}const yr=e=>e?ni(e)?Bn(e)||e.proxy:yr(e.parent):null,Nt=ce(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=>yr(e.parent),$root:e=>yr(e.root),$emit:e=>e.emit,$options:e=>Kr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Fn(e.update)}),$nextTick:e=>e.n||(e.n=Nn.bind(e.proxy)),$watch:e=>Il.bind(e)}),Jn=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),Wl={get({_:e},t){const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const y=i[t];if(y!==void 0)switch(y){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(Jn(r,t))return i[t]=1,r[t];if(s!==ee&&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!==ee&&Y(n,t))return i[t]=4,n[t];_r&&(i[t]=0)}}const f=Nt[t];let h,p;if(f)return t==="$attrs"&&ye(e,"get",t),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(p=c.config.globalProperties,Y(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return Jn(s,t)?(s[t]=n,!0):r!==ee&&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!==ee&&Y(e,i)||Jn(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(Nt,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 au(){return ql().slots}function ql(){const e=kn();return e.setupContext||(e.setupContext=si(e))}function gs(e){return k(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let _r=!0;function Gl(e){const t=Kr(e),n=e.proxy,r=e.ctx;_r=!1,t.beforeCreate&&ms(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:p,beforeUpdate:y,updated:w,activated:I,deactivated:N,beforeDestroy:K,beforeUnmount:B,destroyed:g,unmounted:_,render:M,renderTracked:L,renderTriggered:F,errorCaptured:T,serverPrefetch:$,expose:E,inheritAttrs:j,components:A,directives:G,filters:ie}=t;if(a&&zl(a,r,null),i)for(const X in i){const V=i[X];q(V)&&(r[X]=V.bind(n))}if(s){const X=s.call(n,n);Z(X)&&(e.data=Mn(X))}if(_r=!0,o)for(const X in o){const V=o[X],$e=q(V)?V.bind(n,n):q(V.get)?V.get.bind(n,n):xe,Yt=!q(V)&&q(V.set)?V.set.bind(n):xe,tt=re({get:$e,set:Yt});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Oe=>tt.value=Oe})}if(l)for(const X in l)Vo(l[X],r,n,X);if(c){const X=q(c)?c.call(n):c;Reflect.ownKeys(X).forEach(V=>{ec(V,X[V])})}f&&ms(f,e,"c");function D(X,V){k(V)?V.forEach($e=>X($e.bind(n))):V&&X(V.bind(n))}if(D(jl,h),D(Rt,p),D(Vl,y),D(Dl,w),D(Fl,I),D($l,N),D(Kl,T),D(Bl,L),D(kl,F),D(Ho,B),D(Dn,_),D(Ul,$),k(E))if(E.length){const X=e.exposed||(e.exposed={});E.forEach(V=>{Object.defineProperty(X,V,{get:()=>n[V],set:$e=>n[V]=$e})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),j!=null&&(e.inheritAttrs=j),A&&(e.components=A),G&&(e.directives=G)}function zl(e,t,n=xe){k(e)&&(e=vr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=xt(s.from||r,s.default,!0):o=xt(s.from||r):o=xt(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ms(e,t,n){Se(k(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Vo(e,t,n,r){const s=r.includes(".")?Mo(n,r):()=>n[r];if(ne(e)){const o=t[e];q(o)&&Ve(s,o)}else if(q(e))Ve(s,e.bind(n));else if(Z(e))if(k(e))e.forEach(o=>Vo(o,t,n,r));else{const o=q(e.handler)?e.handler.bind(n):t[e.handler];q(o)&&Ve(s,o,e)}}function Kr(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=>Cn(c,a,i,!0)),Cn(c,t,i)),Z(t)&&o.set(t,c),c}function Cn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Cn(e,o,n,!0),s&&s.forEach(i=>Cn(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:ys,props:_s,emits:_s,methods:It,computed:It,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:It,directives:It,watch:Jl,provide:ys,inject:Yl};function ys(e,t){return t?e?function(){return ce(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Yl(e,t){return It(vr(e),vr(t))}function vr(e){if(k(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}function tc(e,t,n,r=!1){const s={},o={};_n(o,Un,1),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:ll(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function nc(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[p,y]=ko(h,t,!0);ce(i,p),y&&l.push(...y)};!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,_t),_t;if(k(o))for(let f=0;f-1,y[1]=I<0||w-1||Y(y,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function vs(e){return e[0]!=="$"&&!bt(e)}function bs(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function ws(e,t){return bs(e)===bs(t)}function Es(e,t){return k(t)?t.findIndex(n=>ws(n,e)):q(t)&&ws(t,e)?0:-1}const Bo=e=>e[0]==="_"||e==="$stable",Wr=e=>k(e)?e.map(Re):[Re(e)],rc=(e,t,n)=>{if(t._n)return t;const r=Cl((...s)=>Wr(t(...s)),n);return r._c=!1,r},Ko=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Bo(s))continue;const o=e[s];if(q(o))t[s]=rc(s,o,r);else if(o!=null){const i=Wr(o);t[s]=()=>i}}},Wo=(e,t)=>{const n=Wr(t);e.slots.default=()=>n},sc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),_n(t,"_",n)):Ko(t,e.slots={})}else e.slots={},t&&Wo(e,t);_n(e.slots,Un,1)},oc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ce(s,t),!n&&l===1&&delete s._):(o=!t.$stable,Ko(t,s)),i=t}else t&&(Wo(e,t),i={default:1});if(o)for(const l in s)!Bo(l)&&i[l]==null&&delete s[l]};function xn(e,t,n,r,s=!1){if(k(e)){e.forEach((p,y)=>xn(p,t&&(k(t)?t[y]:t),n,r,s));return}if(Ct(r)&&!s)return;const o=r.shapeFlag&4?Bn(r.component)||r.component.proxy:r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(ne(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),q(c))Je(c,l,12,[i,f]);else{const p=ne(c),y=de(c);if(p||y){const w=()=>{if(e.f){const I=p?Y(h,c)?h[c]:f[c]:c.value;s?k(I)&&Ar(I,o):k(I)?I.includes(o)||I.push(o):p?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else p?(f[c]=i,Y(h,c)&&(h[c]=i)):y&&(c.value=i,e.k&&(f[e.k]=i))};i?(w.id=-1,ge(w,n)):w()}}}let Be=!1;const ic=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",lc=e=>e.namespaceURI.includes("MathML"),on=e=>{if(ic(e))return"svg";if(lc(e))return"mathml"},ln=e=>e.nodeType===8;function cc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(g,_)=>{if(!_.hasChildNodes()){n(null,g,_),wn(),_._vnode=g;return}Be=!1,h(_.firstChild,g,null,null,null),wn(),_._vnode=g,Be&&console.error("Hydration completed but contains mismatches.")},h=(g,_,M,L,F,T=!1)=>{const $=ln(g)&&g.data==="[",E=()=>I(g,_,M,L,F,$),{type:j,ref:A,shapeFlag:G,patchFlag:ie}=_;let fe=g.nodeType;_.el=g,ie===-2&&(T=!1,_.dynamicChildren=null);let D=null;switch(j){case Tt:fe!==3?_.children===""?(c(_.el=s(""),i(g),g),D=g):D=E():(g.data!==_.children&&(Be=!0,g.data=_.children),D=o(g));break;case be:B(g)?(D=o(g),K(_.el=g.content.firstChild,g,M)):fe!==8||$?D=E():D=o(g);break;case Ht:if($&&(g=o(g),fe=g.nodeType),fe===1||fe===3){D=g;const X=!_.children.length;for(let V=0;V<_.staticCount;V++)X&&(_.children+=D.nodeType===1?D.outerHTML:D.data),V===_.staticCount-1&&(_.anchor=D),D=o(D);return $?o(D):D}else E();break;case me:$?D=w(g,_,M,L,F,T):D=E();break;default:if(G&1)(fe!==1||_.type.toLowerCase()!==g.tagName.toLowerCase())&&!B(g)?D=E():D=p(g,_,M,L,F,T);else if(G&6){_.slotScopeIds=F;const X=i(g);if($?D=N(g):ln(g)&&g.data==="teleport start"?D=N(g,g.data,"teleport end"):D=o(g),t(_,X,null,M,L,on(X),T),Ct(_)){let V;$?(V=oe(me),V.anchor=D?D.previousSibling:X.lastChild):V=g.nodeType===3?ti(""):oe("div"),V.el=g,_.component.subTree=V}}else G&64?fe!==8?D=E():D=_.type.hydrate(g,_,M,L,F,T,e,y):G&128&&(D=_.type.hydrate(g,_,M,L,on(i(g)),F,T,e,h))}return A!=null&&xn(A,null,L,_),D},p=(g,_,M,L,F,T)=>{T=T||!!_.dynamicChildren;const{type:$,props:E,patchFlag:j,shapeFlag:A,dirs:G,transition:ie}=_,fe=$==="input"||$==="option";if(fe||j!==-1){G&&Me(_,null,M,"created");let D=!1;if(B(g)){D=Go(L,ie)&&M&&M.vnode.props&&M.vnode.props.appear;const V=g.content.firstChild;D&&ie.beforeEnter(V),K(V,g,M),_.el=g=V}if(A&16&&!(E&&(E.innerHTML||E.textContent))){let V=y(g.firstChild,_,g,M,L,F,T);for(;V;){Be=!0;const $e=V;V=V.nextSibling,l($e)}}else A&8&&g.textContent!==_.children&&(Be=!0,g.textContent=_.children);if(E)if(fe||!T||j&48)for(const V in E)(fe&&(V.endsWith("value")||V==="indeterminate")||Wt(V)&&!bt(V)||V[0]===".")&&r(g,V,null,E[V],void 0,void 0,M);else E.onClick&&r(g,"onClick",null,E.onClick,void 0,void 0,M);let X;(X=E&&E.onVnodeBeforeMount)&&Ee(X,M,_),G&&Me(_,null,M,"beforeMount"),((X=E&&E.onVnodeMounted)||G||D)&&Io(()=>{X&&Ee(X,M,_),D&&ie.enter(g),G&&Me(_,null,M,"mounted")},L)}return g.nextSibling},y=(g,_,M,L,F,T,$)=>{$=$||!!_.dynamicChildren;const E=_.children,j=E.length;for(let A=0;A{const{slotScopeIds:$}=_;$&&(F=F?F.concat($):$);const E=i(g),j=y(o(g),_,E,M,L,F,T);return j&&ln(j)&&j.data==="]"?o(_.anchor=j):(Be=!0,c(_.anchor=a("]"),E,j),j)},I=(g,_,M,L,F,T)=>{if(Be=!0,_.el=null,T){const j=N(g);for(;;){const A=o(g);if(A&&A!==j)l(A);else break}}const $=o(g),E=i(g);return l(g),n(null,_,E,$,M,L,on(E),F),$},N=(g,_="[",M="]")=>{let L=0;for(;g;)if(g=o(g),g&&ln(g)&&(g.data===_&&L++,g.data===M)){if(L===0)return o(g);L--}return g},K=(g,_,M)=>{const L=_.parentNode;L&&L.replaceChild(g,_);let F=M;for(;F;)F.vnode.el===_&&(F.vnode.el=F.subTree.el=g),F=F.parent},B=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[f,h]}const ge=Io;function ac(e){return qo(e)}function uc(e){return qo(e,cc)}function qo(e,t){const n=so();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:p,setScopeId:y=xe,insertStaticContent:w}=e,I=(u,d,m,v=null,b=null,S=null,O=void 0,x=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!it(u,d)&&(v=Jt(u),Oe(u,b,S,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:C,ref:P,shapeFlag:U}=d;switch(C){case Tt:N(u,d,m,v);break;case be:K(u,d,m,v);break;case Ht:u==null&&B(d,m,v,O);break;case me:A(u,d,m,v,b,S,O,x,R);break;default:U&1?M(u,d,m,v,b,S,O,x,R):U&6?G(u,d,m,v,b,S,O,x,R):(U&64||U&128)&&C.process(u,d,m,v,b,S,O,x,R,pt)}P!=null&&b&&xn(P,u&&u.ref,S,d||u,!d)},N=(u,d,m,v)=>{if(u==null)r(d.el=l(d.children),m,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},K=(u,d,m,v)=>{u==null?r(d.el=c(d.children||""),m,v):d.el=u.el},B=(u,d,m,v)=>{[u.el,u.anchor]=w(u.children,d,m,v,u.el,u.anchor)},g=({el:u,anchor:d},m,v)=>{let b;for(;u&&u!==d;)b=p(u),r(u,m,v),u=b;r(d,m,v)},_=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=p(u),s(u),u=m;s(d)},M=(u,d,m,v,b,S,O,x,R)=>{d.type==="svg"?O="svg":d.type==="math"&&(O="mathml"),u==null?L(d,m,v,b,S,O,x,R):$(u,d,b,S,O,x,R)},L=(u,d,m,v,b,S,O,x)=>{let R,C;const{props:P,shapeFlag:U,transition:H,dirs:W}=u;if(R=u.el=i(u.type,S,P&&P.is,P),U&8?f(R,u.children):U&16&&T(u.children,R,null,v,b,Qn(u,S),O,x),W&&Me(u,null,v,"created"),F(R,u,u.scopeId,O,v),P){for(const Q in P)Q!=="value"&&!bt(Q)&&o(R,Q,null,P[Q],S,u.children,v,b,He);"value"in P&&o(R,"value",null,P.value,S),(C=P.onVnodeBeforeMount)&&Ee(C,v,u)}W&&Me(u,null,v,"beforeMount");const z=Go(b,H);z&&H.beforeEnter(R),r(R,d,m),((C=P&&P.onVnodeMounted)||z||W)&&ge(()=>{C&&Ee(C,v,u),z&&H.enter(R),W&&Me(u,null,v,"mounted")},b)},F=(u,d,m,v,b)=>{if(m&&y(u,m),v)for(let S=0;S{for(let C=R;C{const x=d.el=u.el;let{patchFlag:R,dynamicChildren:C,dirs:P}=d;R|=u.patchFlag&16;const U=u.props||ee,H=d.props||ee;let W;if(m&&nt(m,!1),(W=H.onVnodeBeforeUpdate)&&Ee(W,m,d,u),P&&Me(d,u,m,"beforeUpdate"),m&&nt(m,!0),C?E(u.dynamicChildren,C,x,m,v,Qn(d,b),S):O||V(u,d,x,null,m,v,Qn(d,b),S,!1),R>0){if(R&16)j(x,d,U,H,m,v,b);else if(R&2&&U.class!==H.class&&o(x,"class",null,H.class,b),R&4&&o(x,"style",U.style,H.style,b),R&8){const z=d.dynamicProps;for(let Q=0;Q{W&&Ee(W,m,d,u),P&&Me(d,u,m,"updated")},v)},E=(u,d,m,v,b,S,O)=>{for(let x=0;x{if(m!==v){if(m!==ee)for(const x in m)!bt(x)&&!(x in v)&&o(u,x,m[x],null,O,d.children,b,S,He);for(const x in v){if(bt(x))continue;const R=v[x],C=m[x];R!==C&&x!=="value"&&o(u,x,C,R,O,d.children,b,S,He)}"value"in v&&o(u,"value",m.value,v.value,O)}},A=(u,d,m,v,b,S,O,x,R)=>{const C=d.el=u?u.el:l(""),P=d.anchor=u?u.anchor:l("");let{patchFlag:U,dynamicChildren:H,slotScopeIds:W}=d;W&&(x=x?x.concat(W):W),u==null?(r(C,m,v),r(P,m,v),T(d.children||[],m,P,b,S,O,x,R)):U>0&&U&64&&H&&u.dynamicChildren?(E(u.dynamicChildren,H,m,b,S,O,x),(d.key!=null||b&&d===b.subTree)&&qr(u,d,!0)):V(u,d,m,P,b,S,O,x,R)},G=(u,d,m,v,b,S,O,x,R)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?b.ctx.activate(d,m,v,O,R):ie(d,m,v,b,S,O,R):fe(u,d,R)},ie=(u,d,m,v,b,S,O)=>{const x=u.component=wc(u,v,b);if(Gt(u)&&(x.ctx.renderer=pt),Ec(x),x.asyncDep){if(b&&b.registerDep(x,D),!u.el){const R=x.subTree=oe(be);K(null,R,d,m)}}else D(x,u,d,m,b,S,O)},fe=(u,d,m)=>{const v=d.component=u.component;if(Tl(u,d,m))if(v.asyncDep&&!v.asyncResolved){X(v,d,m);return}else v.next=d,vl(v.update),v.effect.dirty=!0,v.update();else d.el=u.el,v.vnode=d},D=(u,d,m,v,b,S,O)=>{const x=()=>{if(u.isMounted){let{next:P,bu:U,u:H,parent:W,vnode:z}=u;{const gt=zo(u);if(gt){P&&(P.el=z.el,X(u,P,O)),gt.asyncDep.then(()=>{u.isUnmounted||x()});return}}let Q=P,te;nt(u,!1),P?(P.el=z.el,X(u,P,O)):P=z,U&&pn(U),(te=P.props&&P.props.onVnodeBeforeUpdate)&&Ee(te,W,P,z),nt(u,!0);const ae=zn(u),Ae=u.subTree;u.subTree=ae,I(Ae,ae,h(Ae.el),Jt(Ae),u,b,S),P.el=ae.el,Q===null&&Al(u,ae.el),H&&ge(H,b),(te=P.props&&P.props.onVnodeUpdated)&&ge(()=>Ee(te,W,P,z),b)}else{let P;const{el:U,props:H}=d,{bm:W,m:z,parent:Q}=u,te=Ct(d);if(nt(u,!1),W&&pn(W),!te&&(P=H&&H.onVnodeBeforeMount)&&Ee(P,Q,d),nt(u,!0),U&&qn){const ae=()=>{u.subTree=zn(u),qn(U,u.subTree,u,b,null)};te?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=zn(u);I(null,ae,m,v,u,b,S),d.el=ae.el}if(z&&ge(z,b),!te&&(P=H&&H.onVnodeMounted)){const ae=d;ge(()=>Ee(P,Q,ae),b)}(d.shapeFlag&256||Q&&Ct(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&ge(u.a,b),u.isMounted=!0,d=m=v=null}},R=u.effect=new Ir(x,xe,()=>Fn(C),u.scope),C=u.update=()=>{R.dirty&&R.run()};C.id=u.uid,nt(u,!0),C()},X=(u,d,m)=>{d.component=u;const v=u.vnode.props;u.vnode=d,u.next=null,nc(u,d.props,v,m),oc(u,d.children,m),dt(),fs(u),ht()},V=(u,d,m,v,b,S,O,x,R=!1)=>{const C=u&&u.children,P=u?u.shapeFlag:0,U=d.children,{patchFlag:H,shapeFlag:W}=d;if(H>0){if(H&128){Yt(C,U,m,v,b,S,O,x,R);return}else if(H&256){$e(C,U,m,v,b,S,O,x,R);return}}W&8?(P&16&&He(C,b,S),U!==C&&f(m,U)):P&16?W&16?Yt(C,U,m,v,b,S,O,x,R):He(C,b,S,!0):(P&8&&f(m,""),W&16&&T(U,m,v,b,S,O,x,R))},$e=(u,d,m,v,b,S,O,x,R)=>{u=u||_t,d=d||_t;const C=u.length,P=d.length,U=Math.min(C,P);let H;for(H=0;HP?He(u,b,S,!0,!1,U):T(d,m,v,b,S,O,x,R,U)},Yt=(u,d,m,v,b,S,O,x,R)=>{let C=0;const P=d.length;let U=u.length-1,H=P-1;for(;C<=U&&C<=H;){const W=u[C],z=d[C]=R?ze(d[C]):Re(d[C]);if(it(W,z))I(W,z,m,null,b,S,O,x,R);else break;C++}for(;C<=U&&C<=H;){const W=u[U],z=d[H]=R?ze(d[H]):Re(d[H]);if(it(W,z))I(W,z,m,null,b,S,O,x,R);else break;U--,H--}if(C>U){if(C<=H){const W=H+1,z=WH)for(;C<=U;)Oe(u[C],b,S,!0),C++;else{const W=C,z=C,Q=new Map;for(C=z;C<=H;C++){const _e=d[C]=R?ze(d[C]):Re(d[C]);_e.key!=null&&Q.set(_e.key,C)}let te,ae=0;const Ae=H-z+1;let gt=!1,es=0;const Lt=new Array(Ae);for(C=0;C=Ae){Oe(_e,b,S,!0);continue}let Ie;if(_e.key!=null)Ie=Q.get(_e.key);else for(te=z;te<=H;te++)if(Lt[te-z]===0&&it(_e,d[te])){Ie=te;break}Ie===void 0?Oe(_e,b,S,!0):(Lt[Ie-z]=C+1,Ie>=es?es=Ie:gt=!0,I(_e,d[Ie],m,null,b,S,O,x,R),ae++)}const ts=gt?fc(Lt):_t;for(te=ts.length-1,C=Ae-1;C>=0;C--){const _e=z+C,Ie=d[_e],ns=_e+1{const{el:S,type:O,transition:x,children:R,shapeFlag:C}=u;if(C&6){tt(u.component.subTree,d,m,v);return}if(C&128){u.suspense.move(d,m,v);return}if(C&64){O.move(u,d,m,pt);return}if(O===me){r(S,d,m);for(let U=0;Ux.enter(S),b);else{const{leave:U,delayLeave:H,afterLeave:W}=x,z=()=>r(S,d,m),Q=()=>{U(S,()=>{z(),W&&W()})};H?H(S,z,Q):Q()}else r(S,d,m)},Oe=(u,d,m,v=!1,b=!1)=>{const{type:S,props:O,ref:x,children:R,dynamicChildren:C,shapeFlag:P,patchFlag:U,dirs:H}=u;if(x!=null&&xn(x,null,m,u,!0),P&256){d.ctx.deactivate(u);return}const W=P&1&&H,z=!Ct(u);let Q;if(z&&(Q=O&&O.onVnodeBeforeUnmount)&&Ee(Q,d,u),P&6)Si(u.component,m,v);else{if(P&128){u.suspense.unmount(m,v);return}W&&Me(u,null,d,"beforeUnmount"),P&64?u.type.remove(u,d,m,b,pt,v):C&&(S!==me||U>0&&U&64)?He(C,d,m,!1,!0):(S===me&&U&384||!b&&P&16)&&He(R,d,m),v&&Qr(u)}(z&&(Q=O&&O.onVnodeUnmounted)||W)&&ge(()=>{Q&&Ee(Q,d,u),W&&Me(u,null,d,"unmounted")},m)},Qr=u=>{const{type:d,el:m,anchor:v,transition:b}=u;if(d===me){xi(m,v);return}if(d===Ht){_(u);return}const S=()=>{s(m),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:O,delayLeave:x}=b,R=()=>O(m,S);x?x(u.el,S,R):R()}else S()},xi=(u,d)=>{let m;for(;u!==d;)m=p(u),s(u),u=m;s(d)},Si=(u,d,m)=>{const{bum:v,scope:b,update:S,subTree:O,um:x}=u;v&&pn(v),b.stop(),S&&(S.active=!1,Oe(O,u,d,m)),x&&ge(x,d),ge(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},He=(u,d,m,v=!1,b=!1,S=0)=>{for(let O=S;Ou.shapeFlag&6?Jt(u.component.subTree):u.shapeFlag&128?u.suspense.next():p(u.anchor||u.el);let Kn=!1;const Zr=(u,d,m)=>{u==null?d._vnode&&Oe(d._vnode,null,null,!0):I(d._vnode||null,u,d,null,null,null,m),Kn||(Kn=!0,fs(),wn(),Kn=!1),d._vnode=u},pt={p:I,um:Oe,m:tt,r:Qr,mt:ie,mc:T,pc:V,pbc:E,n:Jt,o:e};let Wn,qn;return t&&([Wn,qn]=t(pt)),{render:Zr,hydrate:Wn,createApp:Zl(Zr,Wn)}}function Qn({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 nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Go(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function qr(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 zo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:zo(t)}const dc=e=>e.__isTeleport,$t=e=>e&&(e.disabled||e.disabled===""),Cs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,xs=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,wr=(e,t)=>{const n=e&&e.to;return ne(n)?t?t(n):null:n},hc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:p,o:{insert:y,querySelector:w,createText:I,createComment:N}}=a,K=$t(t.props);let{shapeFlag:B,children:g,dynamicChildren:_}=t;if(e==null){const M=t.el=I(""),L=t.anchor=I("");y(M,n,r),y(L,n,r);const F=t.target=wr(t.props,w),T=t.targetAnchor=I("");F&&(y(T,F),i==="svg"||Cs(F)?i="svg":(i==="mathml"||xs(F))&&(i="mathml"));const $=(E,j)=>{B&16&&f(g,E,j,s,o,i,l,c)};K?$(n,L):F&&$(F,T)}else{t.el=e.el;const M=t.anchor=e.anchor,L=t.target=e.target,F=t.targetAnchor=e.targetAnchor,T=$t(e.props),$=T?n:L,E=T?M:F;if(i==="svg"||Cs(L)?i="svg":(i==="mathml"||xs(L))&&(i="mathml"),_?(p(e.dynamicChildren,_,$,s,o,i,l),qr(e,t,!0)):c||h(e,t,$,E,s,o,i,l,!1),K)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):cn(t,n,M,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const j=t.target=wr(t.props,w);j&&cn(t,j,null,a,0)}else T&&cn(t,L,F,a,1)}Xo(t)},remove(e,t,n,r,{um:s,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:f,target:h,props:p}=e;if(h&&o(f),i&&o(a),l&16){const y=i||!$t(p);for(let w=0;w0?Le||_t:null,gc(),Bt>0&&Le&&Le.push(e),e}function fu(e,t,n,r,s,o){return Jo(ei(e,t,n,r,s,o,!0))}function Qo(e,t,n,r,s){return Jo(oe(e,t,n,r,s,!0))}function Sn(e){return e?e.__v_isVNode===!0:!1}function it(e,t){return e.type===t.type&&e.key===t.key}const Un="__vInternal",Zo=({key:e})=>e??null,gn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ne(e)||de(e)||q(e)?{i:le,r:e,k:t,f:!!n}:e:null);function ei(e,t=null,n=null,r=0,s=null,o=e===me?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Zo(t),ref:t&&gn(t),scopeId:Hn,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:le};return l?(Gr(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ne(n)?8:16),Bt>0&&!i&&Le&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Le.push(c),c}const oe=mc;function mc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Lo)&&(e=be),Sn(e)){const l=et(e,t,!0);return n&&Gr(l,n),Bt>0&&!o&&Le&&(l.shapeFlag&6?Le[Le.indexOf(e)]=l:Le.push(l)),l.patchFlag|=-2,l}if(Tc(e)&&(e=e.__vccOpts),t){t=yc(t);let{class:l,style:c}=t;l&&!ne(l)&&(t.class=Or(l)),Z(c)&&(bo(c)&&!k(c)&&(c=ce({},c)),t.style=Lr(c))}const i=ne(e)?1:Rl(e)?128:dc(e)?64:Z(e)?4:q(e)?2:0;return ei(e,t,n,r,s,i,o,!0)}function yc(e){return e?bo(e)||Un in e?ce({},e):e:null}function et(e,t,n=!1){const{props:r,ref:s,patchFlag:o,children:i}=e,l=t?_c(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Zo(l),ref:t&&t.ref?n&&s?k(s)?s.concat(gn(t)):[s,gn(t)]:gn(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==me?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&et(e.ssContent),ssFallback:e.ssFallback&&et(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ti(e=" ",t=0){return oe(Tt,null,e,t)}function du(e,t){const n=oe(Ht,null,e);return n.staticCount=t,n}function hu(e="",t=!1){return t?(Yo(),Qo(be,null,e)):oe(be,null,e)}function Re(e){return e==null||typeof e=="boolean"?oe(be):k(e)?oe(me,null,e.slice()):typeof e=="object"?ze(e):oe(Tt,null,String(e))}function ze(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:et(e)}function Gr(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),Gr(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Un in t)?t._ctx=le:s===3&&le&&(le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:le},n=32):(t=String(t),r&64?(n=16,t=[ti(t)]):n=8);e.children=t,e.shapeFlag|=n}function _c(...e){const t={};for(let n=0;nue||le;let Tn,Er;{const e=so(),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)}};Tn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Er=t("__VUE_SSR_SETTERS__",n=>Xt=n)}const zt=e=>{const t=ue;return Tn(e),e.scope.on(),()=>{e.scope.off(),Tn(t)}},Ts=()=>{ue&&ue.scope.off(),Tn(null)};function ni(e){return e.vnode.shapeFlag&4}let Xt=!1;function Ec(e,t=!1){t&&Er(t);const{props:n,children:r}=e.vnode,s=ni(e);tc(e,n,s,t),sc(e,r);const o=s?Cc(e,t):void 0;return t&&Er(!1),o}function Cc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Mt(new Proxy(e.ctx,Wl));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?si(e):null,o=zt(e);dt();const i=Je(r,e,0,[e.props,s]);if(ht(),o(),to(i)){if(i.then(Ts,Ts),t)return i.then(l=>{As(e,l,t)}).catch(l=>{qt(l,e,0)});e.asyncDep=i}else As(e,i,t)}else ri(e,t)}function As(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=xo(t)),ri(e,n)}let Rs;function ri(e,t,n){const r=e.type;if(!e.render){if(!t&&Rs&&!r.render){const s=r.template||Kr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=ce(ce({isCustomElement:o,delimiters:l},i),c);r.render=Rs(s,a)}}e.render=r.render||xe}{const s=zt(e);dt();try{Gl(e)}finally{ht(),s()}}}function xc(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ye(e,"get","$attrs"),t[n]}}))}function si(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return xc(e)},slots:e.slots,emit:e.emit,expose:t}}function Bn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(xo(Mt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Nt)return Nt[n](e)},has(t,n){return n in t||n in Nt}}))}function Sc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Tc(e){return q(e)&&"__vccOpts"in e}const re=(e,t)=>cl(e,t,Xt);function Cr(e,t,n){const r=arguments.length;return r===2?Z(t)&&!k(t)?Sn(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Sn(n)&&(n=[n]),oe(e,t,n))}const Ac="3.4.21";/** +* @vue/runtime-dom v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Rc="http://www.w3.org/2000/svg",Lc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,Ls=Xe&&Xe.createElement("template"),Oc={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"?Xe.createElementNS(Rc,e):t==="mathml"?Xe.createElementNS(Lc,e):Xe.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.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{Ls.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Ls.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",Ot="animation",Kt=Symbol("_vtc"),oi=(e,{slots:t})=>Cr(Nl,Ic(e),t);oi.displayName="Transition";const ii={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};oi.props=ce({},Po,ii);const rt=(e,t=[])=>{k(e)?e.forEach(n=>n(...t)):e&&e(...t)},Os=e=>e?k(e)?e.some(t=>t.length>1):e.length>1:!1;function Ic(e){const t={};for(const A in e)A in ii||(t[A]=e[A]);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:p=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,w=Mc(s),I=w&&w[0],N=w&&w[1],{onBeforeEnter:K,onEnter:B,onEnterCancelled:g,onLeave:_,onLeaveCancelled:M,onBeforeAppear:L=K,onAppear:F=B,onAppearCancelled:T=g}=t,$=(A,G,ie)=>{st(A,G?f:l),st(A,G?a:i),ie&&ie()},E=(A,G)=>{A._isLeaving=!1,st(A,h),st(A,y),st(A,p),G&&G()},j=A=>(G,ie)=>{const fe=A?F:B,D=()=>$(G,A,ie);rt(fe,[G,D]),Is(()=>{st(G,A?c:o),We(G,A?f:l),Os(fe)||Ms(G,r,I,D)})};return ce(t,{onBeforeEnter(A){rt(K,[A]),We(A,o),We(A,i)},onBeforeAppear(A){rt(L,[A]),We(A,c),We(A,a)},onEnter:j(!1),onAppear:j(!0),onLeave(A,G){A._isLeaving=!0;const ie=()=>E(A,G);We(A,h),Fc(),We(A,p),Is(()=>{A._isLeaving&&(st(A,h),We(A,y),Os(_)||Ms(A,r,N,ie))}),rt(_,[A,ie])},onEnterCancelled(A){$(A,!1),rt(g,[A])},onAppearCancelled(A){$(A,!0),rt(T,[A])},onLeaveCancelled(A){E(A),rt(M,[A])}})}function Mc(e){if(e==null)return null;if(Z(e))return[Zn(e.enter),Zn(e.leave)];{const t=Zn(e);return[t,t]}}function Zn(e){return Ii(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Kt]||(e[Kt]=new Set)).add(t)}function st(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Kt];n&&(n.delete(t),n.size||(e[Kt]=void 0))}function Is(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Pc=0;function Ms(e,t,n,r){const s=e._endId=++Pc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Nc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,p),o()},p=y=>{y.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[w]||"").split(", "),s=r(`${Ke}Delay`),o=r(`${Ke}Duration`),i=Ps(s,o),l=r(`${Ot}Delay`),c=r(`${Ot}Duration`),a=Ps(l,c);let f=null,h=0,p=0;t===Ke?i>0&&(f=Ke,h=i,p=o.length):t===Ot?a>0&&(f=Ot,h=a,p=c.length):(h=Math.max(i,a),f=h>0?i>a?Ke:Ot:null,p=f?f===Ke?o.length:c.length:0);const y=f===Ke&&/\b(transform|all)(,|$)/.test(r(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:p,hasTransform:y}}function Ps(e,t){for(;e.lengthNs(n)+Ns(e[r])))}function Ns(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Fc(){return document.body.offsetHeight}function $c(e,t,n){const r=e[Kt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Fs=Symbol("_vod"),Hc=Symbol("_vsh"),jc=Symbol(""),Vc=/(^|;)\s*display\s*:/;function Dc(e,t,n){const r=e.style,s=ne(n);let o=!1;if(n&&!s){if(t)if(ne(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&mn(r,l,"")}else for(const i in t)n[i]==null&&mn(r,i,"");for(const i in n)i==="display"&&(o=!0),mn(r,i,n[i])}else if(s){if(t!==n){const i=r[jc];i&&(n+=";"+i),r.cssText=n,o=Vc.test(n)}}else t&&e.removeAttribute("style");Fs in e&&(e[Fs]=o?r.display:"",e[Hc]&&(r.display="none"))}const $s=/\s*!important$/;function mn(e,t,n){if(k(n))n.forEach(r=>mn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Uc(e,t);$s.test(n)?e.setProperty(ft(r),n.replace($s,""),"important"):e[r]=n}}const Hs=["Webkit","Moz","ms"],er={};function Uc(e,t){const n=er[t];if(n)return n;let r=Fe(t);if(r!=="filter"&&r in e)return er[t]=r;r=On(r);for(let s=0;str||(Gc.then(()=>tr=0),tr=Date.now());function Xc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Se(Yc(r,n.value),t,5,[r])};return n.value=e,n.attached=zc(),n}function Yc(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 Us=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Jc=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?$c(e,r,a):t==="style"?Dc(e,n,r):Wt(t)?Tr(t)||Wc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qc(e,t,r,a))?Bc(e,t,r,o,i,l,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),kc(e,t,r,a))};function Qc(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Us(t)&&q(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 Us(t)&&ne(n)?!1:t in e}const ks=e=>{const t=e.props["onUpdate:modelValue"]||!1;return k(t)?n=>pn(t,n):t};function Zc(e){e.target.composing=!0}function Bs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const nr=Symbol("_assign"),pu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[nr]=ks(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=ur(l)),e[nr](l)}),n&&mt(e,"change",()=>{e.value=e.value.trim()}),t||(mt(e,"compositionstart",Zc),mt(e,"compositionend",Bs),mt(e,"change",Bs))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:s}},o){if(e[nr]=ks(o),e.composing)return;const i=s||e.type==="number"?ur(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===l)||(e.value=l))}},ea=["ctrl","shift","alt","meta"],ta={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)=>ea.some(n=>e[`${n}Key`]&&!t.includes(n))},gu=(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||na[i]===o))return e(s)})},li=ce({patchProp:Jc},Oc);let Vt,Ks=!1;function ra(){return Vt||(Vt=ac(li))}function sa(){return Vt=Ks?Vt:uc(li),Ks=!0,Vt}const yu=(...e)=>{const t=ra().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ai(r);if(!s)return;const o=t._component;!q(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,ci(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},_u=(...e)=>{const t=sa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ai(r);if(s)return n(s,!0,ci(s))},t};function ci(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ai(e){return ne(e)?document.querySelector(e):e}const vu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},oa="modulepreload",ia=function(e){return"/cormullion.github.io/Karnak.jl/dev/"+e},Ws={},bu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link");s=Promise.all(n.map(i=>{if(i=ia(i),i in Ws)return;Ws[i]=!0;const l=i.endsWith(".css"),c=l?'[rel="stylesheet"]':"";if(!!r)for(let h=o.length-1;h>=0;h--){const p=o[h];if(p.href===i&&(!l||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${c}`))return;const f=document.createElement("link");if(f.rel=l?"stylesheet":oa,l||(f.as="script",f.crossOrigin=""),f.href=i,document.head.appendChild(f),l)return new Promise((h,p)=>{f.addEventListener("load",h),f.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${i}`)))})}))}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})},la=window.__VP_SITE_DATA__;function zr(e){return lo()?(Di(e),!0):!1}function Ne(e){return typeof e=="function"?e():Co(e)}const ui=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ca=Object.prototype.toString,aa=e=>ca.call(e)==="[object Object]",Qe=()=>{},xr=ua();function ua(){var e,t;return ui&&((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 fa(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 fi=e=>e();function da(e,t={}){let n,r,s=Qe;const o=l=>{clearTimeout(l),s(),s=Qe};return l=>{const c=Ne(e),a=Ne(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 ha(e=fi){const t=se(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Pn(t),pause:n,resume:r,eventFilter:s}}function pa(e){return e||kn()}function di(...e){if(e.length!==1)return gl(...e);const t=e[0];return typeof t=="function"?Pn(dl(()=>({get:t,set:Qe}))):se(t)}function hi(e,t,n={}){const{eventFilter:r=fi,...s}=n;return Ve(e,fa(r,t),s)}function ga(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=ha(r);return{stop:hi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Xr(e,t=!0,n){pa()?Rt(e,n):t?e():Nn(e)}function wu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return hi(e,t,{...o,eventFilter:da(r,{maxWait:s})})}function Eu(e,t,n){let r;de(n)?r={evaluating:n}:r=n||{};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Qe}=r,c=se(!s),a=i?Vr(t):se(t);let f=0;return kr(async h=>{if(!c.value)return;f++;const p=f;let y=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const w=await e(I=>{h(()=>{o&&(o.value=!1),y||I()})});p===f&&(a.value=w)}catch(w){l(w)}finally{o&&p===f&&(o.value=!1),y=!0}}),s?re(()=>(c.value=!0,a.value)):a}function yt(e){var t;const n=Ne(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Te=ui?window:void 0;function De(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Te):[t,n,r,s]=e,!t)return Qe;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,p,y)=>(f.addEventListener(h,p,y),()=>f.removeEventListener(h,p,y)),c=Ve(()=>[yt(t),Ne(s)],([f,h])=>{if(i(),!f)return;const p=aa(h)?{...h}:h;o.push(...n.flatMap(y=>r.map(w=>l(f,y,w,p))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return zr(a),a}let qs=!1;function Cu(e,t,n={}){const{window:r=Te,ignore:s=[],capture:o=!0,detectIframe:i=!1}=n;if(!r)return Qe;xr&&!qs&&(qs=!0,Array.from(r.document.body.children).forEach(p=>p.addEventListener("click",Qe)),r.document.documentElement.addEventListener("click",Qe));let l=!0;const c=p=>s.some(y=>{if(typeof y=="string")return Array.from(r.document.querySelectorAll(y)).some(w=>w===p.target||p.composedPath().includes(w));{const w=yt(y);return w&&(p.target===w||p.composedPath().includes(w))}}),f=[De(r,"click",p=>{const y=yt(e);if(!(!y||y===p.target||p.composedPath().includes(y))){if(p.detail===0&&(l=!c(p)),!l){l=!0;return}t(p)}},{passive:!0,capture:o}),De(r,"pointerdown",p=>{const y=yt(e);l=!c(p)&&!!(y&&!p.composedPath().includes(y))},{passive:!0}),i&&De(r,"blur",p=>{setTimeout(()=>{var y;const w=yt(e);((y=r.document.activeElement)==null?void 0:y.tagName)==="IFRAME"&&!(w!=null&&w.contains(r.document.activeElement))&&t(p)},0)})].filter(Boolean);return()=>f.forEach(p=>p())}function ma(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function xu(...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=Te,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=ma(t);return De(s,o,f=>{f.repeat&&Ne(l)||c(f)&&n(f)},i)}function ya(){const e=se(!1),t=kn();return t&&Rt(()=>{e.value=!0},t),e}function _a(e){const t=ya();return re(()=>(t.value,!!e()))}function pi(e,t={}){const{window:n=Te}=t,r=_a(()=>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=kr(()=>{r.value&&(l(),s=n.matchMedia(Ne(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return zr(()=>{c(),l(),s=void 0}),o}const an=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},un="__vueuse_ssr_handlers__",va=ba();function ba(){return un in an||(an[un]=an[un]||{}),an[un]}function gi(e,t){return va[e]||t}function wa(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 Ea={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()}},Gs="vueuse-storage";function Yr(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=Te,eventFilter:p,onError:y=E=>{console.error(E)},initOnMounted:w}=r,I=(f?Vr:se)(typeof t=="function"?t():t);if(!n)try{n=gi("getDefaultStorage",()=>{var E;return(E=Te)==null?void 0:E.localStorage})()}catch(E){y(E)}if(!n)return I;const N=Ne(t),K=wa(N),B=(s=r.serializer)!=null?s:Ea[K],{pause:g,resume:_}=ga(I,()=>L(I.value),{flush:o,deep:i,eventFilter:p});h&&l&&Xr(()=>{De(h,"storage",T),De(h,Gs,$),w&&T()}),w||T();function M(E,j){h&&h.dispatchEvent(new CustomEvent(Gs,{detail:{key:e,oldValue:E,newValue:j,storageArea:n}}))}function L(E){try{const j=n.getItem(e);if(E==null)M(j,null),n.removeItem(e);else{const A=B.write(E);j!==A&&(n.setItem(e,A),M(j,A))}}catch(j){y(j)}}function F(E){const j=E?E.newValue:n.getItem(e);if(j==null)return c&&N!=null&&n.setItem(e,B.write(N)),N;if(!E&&a){const A=B.read(j);return typeof a=="function"?a(A,N):K==="object"&&!Array.isArray(A)?{...N,...A}:A}else return typeof j!="string"?j:B.read(j)}function T(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){I.value=N;return}if(!(E&&E.key!==e)){g();try{(E==null?void 0:E.newValue)!==B.write(I.value)&&(I.value=F(E))}catch(j){y(j)}finally{E?Nn(_):_()}}}}function $(E){T(E.detail)}return I}function mi(e){return pi("(prefers-color-scheme: dark)",e)}function Ca(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Te,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||{}},p=mi({window:s}),y=re(()=>p.value?"dark":"light"),w=c||(i==null?di(r):Yr(i,r,o,{window:s,listenToStorageChanges:l})),I=re(()=>w.value==="auto"?y.value:w.value),N=gi("updateHTMLAttrs",(_,M,L)=>{const F=typeof _=="string"?s==null?void 0:s.document.querySelector(_):yt(_);if(!F)return;let T;if(f&&(T=s.document.createElement("style"),T.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(T)),M==="class"){const $=L.split(/\s/g);Object.values(h).flatMap(E=>(E||"").split(/\s/g)).filter(Boolean).forEach(E=>{$.includes(E)?F.classList.add(E):F.classList.remove(E)})}else F.setAttribute(M,L);f&&(s.getComputedStyle(T).opacity,document.head.removeChild(T))});function K(_){var M;N(t,n,(M=h[_])!=null?M:_)}function B(_){e.onChanged?e.onChanged(_,K):K(_)}Ve(I,B,{flush:"post",immediate:!0}),Xr(()=>B(I.value));const g=re({get(){return a?w.value:I.value},set(_){w.value=_}});try{return Object.assign(g,{store:w,system:y,state:I})}catch{return g}}function xa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Te}=e,s=Ca({...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:mi({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 rr(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Su(e,t,n={}){const{window:r=Te}=n;return Yr(e,t,r==null?void 0:r.localStorage,n)}function yi(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 fn=new WeakMap;function Tu(e,t=!1){const n=se(t);let r=null;Ve(di(e),i=>{const l=rr(Ne(i));if(l){const c=l;fn.get(c)||fn.set(c,c.style.overflow),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const s=()=>{const i=rr(Ne(e));!i||n.value||(xr&&(r=De(i,"touchmove",l=>{Sa(l)},{passive:!1})),i.style.overflow="hidden",n.value=!0)},o=()=>{var i;const l=rr(Ne(e));!l||!n.value||(xr&&(r==null||r()),l.style.overflow=(i=fn.get(l))!=null?i:"",fn.delete(l),n.value=!1)};return zr(o),re({get(){return n.value},set(i){i?s():o()}})}function Au(e,t,n={}){const{window:r=Te}=n;return Yr(e,t,r==null?void 0:r.sessionStorage,n)}function Ru(e={}){const{window:t=Te,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 De(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Lu(e={}){const{window:t=Te,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(),Xr(c),De("resize",c,{passive:!0}),s){const a=pi("(orientation: portrait)");Ve(a,()=>c())}return{width:i,height:l}}var sr={BASE_URL:"/cormullion.github.io/Karnak.jl/dev/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},or={};const _i=/^(?:[a-z]+:|\/\/)/i,Ta="vitepress-theme-appearance",Aa=/#.*$/,Ra=/[?#].*$/,La=/(?:(^|\/)index)?\.(?:md|html)$/,Ce=typeof document<"u",vi={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Oa(e,t,n=!1){if(t===void 0)return!1;if(e=zs(`/${e}`),n)return new RegExp(t).test(e);if(zs(t)!==e)return!1;const r=t.match(Aa);return r?(Ce?location.hash:"")===r[0]:!0}function zs(e){return decodeURI(e).replace(Ra,"").replace(La,"$1")}function Ia(e){return _i.test(e)}function Ma(e,t){var r,s,o,i,l,c,a;const n=Object.keys(e.locales).find(f=>f!=="root"&&!Ia(f)&&Oa(t,`/${f}/`,!0))||"root";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:wi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function bi(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=Pa(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Pa(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Na(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 wi(e,t){return[...e.filter(n=>!Na(t,n)),...t]}const Fa=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,$a=/^[a-z]:/i;function Xs(e){const t=$a.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Fa,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ir=new Set;function Ha(e){if(ir.size===0){const n=typeof process=="object"&&(or==null?void 0:or.VITE_EXTRA_EXTENSIONS)||(sr==null?void 0:sr.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=>ir.add(r))}const t=e.split(".").pop();return t==null||!ir.has(t.toLowerCase())}function Ou(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const ja=Symbol(),ut=Vr(la);function Iu(e){const t=re(()=>Ma(ut.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?se(!0):n?xa({storageKey:Ta,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):se(!1);return{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(()=>bi(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:r}}function Va(){const e=xt(ja);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Da(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ys(e){return _i.test(e)||!e.startsWith("/")?e:Da(ut.value.base,e)}function Ua(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/cormullion.github.io/Karnak.jl/dev/";t=Xs(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=`./${Xs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let yn=[];function Mu(e){yn.push(e),Dn(()=>{yn=yn.filter(t=>t!==e)})}function ka(){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=Js(e,n);else if(Array.isArray(e))for(const r of e){const s=Js(r,n);if(s){t=s;break}}return t}function Js(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ba=Symbol(),Jr="http://a.com",Ka=()=>({path:"/",component:null,data:vi});function Pu(e,t){const n=Mn(Ka()),r={route:n,go:s};async function s(l=Ce?location.href:"/"){var c,a;l=An(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(Zs(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 p;if(await((p=r.onBeforePageLoad)==null?void 0:p.call(r,l))===!1)return;const f=new URL(l,Jr),h=o=f.pathname;try{let y=await e(h);if(!y)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:w,__pageData:I}=y;if(!w)throw new Error(`Invalid route component: ${w}`);n.path=Ce?h:Ys(h),n.component=Mt(w),n.data=Mt(I),Ce&&Nn(()=>{let N=ut.value.base+I.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==f.pathname&&(f.pathname=N,l=N+f.search+f.hash,history.replaceState(null,"",l)),f.hash&&!c){let K=null;try{K=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(B){console.warn(B)}if(K){Qs(K,f.hash);return}}window.scrollTo(0,c)})}}catch(y){if(!/fetch|Page not found/.test(y.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(y),!a)try{const w=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await w.json(),await i(l,c,!0);return}catch{}o===h&&(o=null,n.path=Ce?h:Ys(h),n.component=t?Mt(t):null,n.data=vi)}}return Ce&&(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:p,pathname:y,hash:w,search:I}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),N=new URL(window.location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&p===N.origin&&Ha(y)&&(l.preventDefault(),y===N.pathname&&I===N.search?(w!==N.hash&&(history.pushState(null,"",w),window.dispatchEvent(new Event("hashchange"))),w?Qs(a,w,a.classList.contains("header-anchor")):(Zs(h,!1),window.scrollTo(0,0))):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;await i(An(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 Wa(){const e=xt(Ba);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ei(){return Wa().route}function Qs(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-ka()+o;requestAnimationFrame(s)}}function Zs(e,t=!0){if(Ce&&An(e)!==An(location.href)){const n=location.hash;history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e),t&&new URL(e,Jr).hash!==n&&window.dispatchEvent(new Event("hashchange"))}}function An(e){const t=new URL(e,Jr);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 lr=()=>yn.forEach(e=>e()),Nu=Br({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ei(),{site:n}=Va();return()=>Cr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Cr(t.component,{onVnodeMounted:lr,onVnodeUpdated:lr,onVnodeUnmounted:lr}):"404 Page Not Found"])}}),Fu=Br({setup(e,{slots:t}){const n=se(!1);return Rt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function $u(){Ce&&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 Hu(){if(Ce){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()),qa(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 qa(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 ju(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=cr(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(cr);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)};kr(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=bi(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):cr(["meta",{name:"description",content:f}]),s(wi(i.head,za(c)))})}function cr([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 Ga(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function za(e){return e.filter(t=>!Ga(t))}const ar=new Set,Ci=()=>document.createElement("link"),Xa=e=>{const t=Ci();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ya=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let dn;const Ja=Ce&&(dn=Ci())&&dn.relList&&dn.relList.supports&&dn.relList.supports("prefetch")?Xa:Ya;function Vu(){if(!Ce||!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(!ar.has(c)){ar.add(c);const a=Ua(c);a&&Ja(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):ar.add(l))})})};Rt(r);const s=Ei();Ve(()=>s.path,r),Dn(()=>{n&&n.disconnect()})}export{ec as $,Dn as A,ru as B,Dl as C,ka as D,tu as E,me as F,iu as G,Vr as H,Mu as I,oe as J,nu as K,_i as L,Ei as M,_c as N,xt as O,Lu as P,Lr as Q,Cu as R,xu as S,oi as T,Nn as U,Ru as V,Pn as W,ou as X,bu as Y,Tu as Z,vu as _,ti as a,mu as a0,cu as a1,gu as a2,au as a3,Mn as a4,gl as a5,Cr as a6,du as a7,ju as a8,Ba as a9,Ou as aA,Iu as aa,ja as ab,Nu as ac,Fu as ad,ut as ae,_u as af,Pu as ag,Ua as ah,Vu as ai,Hu as aj,$u as ak,yt as al,zr as am,Eu as an,Au as ao,Su as ap,wu as aq,Wa as ar,De as as,Ho as at,su as au,pu as av,de as aw,uu as ax,Mt as ay,yu as az,Qo as b,fu as c,Br as d,hu as e,Ha as f,Ys as g,se as h,Ia as i,Ce as j,re as k,Rt as l,ei as m,Or as n,Yo as o,Co as p,Za as q,lu as r,eu as s,Qa as t,Va as u,Oa as v,Cl as w,pi as x,Ve as y,kr as z}; diff --git a/dev/assets/chunks/theme.y-s9L4ZZ.js b/dev/assets/chunks/theme.y-s9L4ZZ.js new file mode 100644 index 0000000..6c479a2 --- /dev/null +++ b/dev/assets/chunks/theme.y-s9L4ZZ.js @@ -0,0 +1,7 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/chunks/VPLocalSearchBox.CHDqaqhP.js","assets/chunks/framework.BHs3sUaM.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +import{d as _,o as a,c as u,r as c,n as N,a as D,t as T,b as y,w as p,T as pe,e as f,_ as $,u as Ye,i as Xe,f as Qe,g as he,h as w,j as q,k as g,l as j,m as h,p as r,q as B,s as H,v as z,x as le,y as G,z as te,A as fe,B as Te,C as Ze,D as xe,E as K,F as M,G as E,H as we,I as se,J as b,K as W,L as Ie,M as oe,N as Z,O as J,P as et,Q as Ne,R as tt,S as ce,U as Me,V as Ae,W as st,X as ot,Y as nt,Z as Ce,$ as _e,a0 as at,a1 as rt,a2 as it,a3 as Be,a4 as lt,a5 as ct,a6 as ut}from"./framework.BHs3sUaM.js";const dt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(t,e)=>(a(),u("span",{class:N(["VPBadge",t.type])},[c(t.$slots,"default",{},()=>[D(T(t.text),1)])],2))}}),vt={key:0,class:"VPBackdrop"},pt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(t,e)=>(a(),y(pe,{name:"fade"},{default:p(()=>[t.show?(a(),u("div",vt)):f("",!0)]),_:1}))}}),ht=$(pt,[["__scopeId","data-v-b06cdb19"]]),L=Ye;function ft(s,t){let e,o=!1;return()=>{e&&clearTimeout(e),o?e=setTimeout(s,t):(s(),(o=!0)&&setTimeout(()=>o=!1,t))}}function ue(s){return/^\//.test(s)?s:`/${s}`}function me(s){const{pathname:t,search:e,hash:o,protocol:n}=new URL(s,"http://a.com");if(Xe(s)||s.startsWith("#")||!n.startsWith("http")||!Qe(t))return s;const{site:i}=L(),l=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${e}${o}`);return he(l)}const be=w(q?location.hash:"");q&&window.addEventListener("hashchange",()=>{be.value=location.hash});function X({removeCurrent:s=!0,correspondingLink:t=!1}={}){const{site:e,localeIndex:o,page:n,theme:i}=L(),l=g(()=>{var d,m;return{label:(d=e.value.locales[o.value])==null?void 0:d.label,link:((m=e.value.locales[o.value])==null?void 0:m.link)||(o.value==="root"?"/":`/${o.value}/`)}});return{localeLinks:g(()=>Object.entries(e.value.locales).flatMap(([d,m])=>s&&l.value.label===m.label?[]:{text:m.label,link:_t(m.link||(d==="root"?"/":`/${d}/`),i.value.i18nRouting!==!1&&t,n.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+be.value})),currentLang:l}}function _t(s,t,e,o){return t?s.replace(/\/$/,"")+ue(e.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const mt=s=>(B("data-v-792811ca"),s=s(),H(),s),bt={class:"NotFound"},kt={class:"code"},$t={class:"title"},gt=mt(()=>h("div",{class:"divider"},null,-1)),yt={class:"quote"},Pt={class:"action"},St=["href","aria-label"],Vt=_({__name:"NotFound",setup(s){const{site:t,theme:e}=L(),{localeLinks:o}=X({removeCurrent:!1}),n=w("/");return j(()=>{var l;const i=window.location.pathname.replace(t.value.base,"").replace(/(^.*?\/).*$/,"/$1");o.value.length&&(n.value=((l=o.value.find(({link:v})=>v.startsWith(i)))==null?void 0:l.link)||o.value[0].link)}),(i,l)=>{var v,d,m,P,k;return a(),u("div",bt,[h("p",kt,T(((v=r(e).notFound)==null?void 0:v.code)??"404"),1),h("h1",$t,T(((d=r(e).notFound)==null?void 0:d.title)??"PAGE NOT FOUND"),1),gt,h("blockquote",yt,T(((m=r(e).notFound)==null?void 0:m.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),h("div",Pt,[h("a",{class:"link",href:r(he)(n.value),"aria-label":((P=r(e).notFound)==null?void 0:P.linkLabel)??"go to home"},T(((k=r(e).notFound)==null?void 0:k.linkText)??"Take me home"),9,St)])])}}}),Lt=$(Vt,[["__scopeId","data-v-792811ca"]]);function He(s,t){if(Array.isArray(s))return x(s);if(s==null)return[];t=ue(t);const e=Object.keys(s).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>t.startsWith(ue(n))),o=e?s[e]:[];return Array.isArray(o)?x(o):x(o.items,o.base)}function Tt(s){const t=[];let e=0;for(const o in s){const n=s[o];if(n.items){e=t.push(n);continue}t[e]||t.push({items:[]}),t[e].items.push(n)}return t}function wt(s){const t=[];function e(o){for(const n of o)n.text&&n.link&&t.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&e(n.items)}return e(s),t}function de(s,t){return Array.isArray(t)?t.some(e=>de(s,e)):z(s,t.link)?!0:t.items?de(s,t.items):!1}function x(s,t){return[...s].map(e=>{const o={...e},n=o.base||t;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=x(o.items,n)),o})}function O(){const{frontmatter:s,page:t,theme:e}=L(),o=le("(min-width: 960px)"),n=w(!1),i=g(()=>{const C=e.value.sidebar,I=t.value.relativePath;return C?He(C,I):[]}),l=w(i.value);G(i,(C,I)=>{JSON.stringify(C)!==JSON.stringify(I)&&(l.value=i.value)});const v=g(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),d=g(()=>m?s.value.aside==null?e.value.aside==="left":s.value.aside==="left":!1),m=g(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:e.value.aside!==!1),P=g(()=>v.value&&o.value),k=g(()=>v.value?Tt(l.value):[]);function V(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():V()}return{isOpen:n,sidebar:l,sidebarGroups:k,hasSidebar:v,hasAside:m,leftAside:d,isSidebarEnabled:P,open:V,close:S,toggle:A}}function It(s,t){let e;te(()=>{e=s.value?document.activeElement:void 0}),j(()=>{window.addEventListener("keyup",o)}),fe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(t(),e==null||e.focus())}}function Nt(s){const{page:t}=L(),e=w(!1),o=g(()=>s.value.collapsed!=null),n=g(()=>!!s.value.link),i=w(!1),l=()=>{i.value=z(t.value.relativePath,s.value.link)};G([t,s,be],l),j(l);const v=g(()=>i.value?!0:s.value.items?de(t.value.relativePath,s.value.items):!1),d=g(()=>!!(s.value.items&&s.value.items.length));te(()=>{e.value=!!(o.value&&s.value.collapsed)}),Te(()=>{(i.value||v.value)&&(e.value=!1)});function m(){o.value&&(e.value=!e.value)}return{collapsed:e,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:v,hasChildren:d,toggle:m}}function Mt(){const{hasSidebar:s}=O(),t=le("(min-width: 960px)"),e=le("(min-width: 1280px)");return{isAsideEnabled:g(()=>!e.value&&!t.value?!1:s.value?e.value:t.value)}}const ve=[];function Ee(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function ke(s){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(e=>e.id&&e.hasChildNodes()).map(e=>{const o=Number(e.tagName[1]);return{element:e,title:At(e),link:"#"+e.id,level:o}});return Ct(t,s)}function At(s){let t="";for(const e of s.childNodes)if(e.nodeType===1){if(e.classList.contains("VPBadge")||e.classList.contains("header-anchor")||e.classList.contains("ignore-header"))continue;t+=e.textContent}else e.nodeType===3&&(t+=e.textContent);return t.trim()}function Ct(s,t){if(t===!1)return[];const e=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[o,n]=typeof e=="number"?[e,e]:e==="deep"?[2,6]:e;s=s.filter(l=>l.level>=o&&l.level<=n),ve.length=0;for(const{element:l,link:v}of s)ve.push({element:l,link:v});const i=[];e:for(let l=0;l=0;d--){const m=s[d];if(m.level{requestAnimationFrame(i),window.addEventListener("scroll",o)}),Ze(()=>{l(location.hash)}),fe(()=>{window.removeEventListener("scroll",o)});function i(){if(!e.value)return;const v=window.scrollY,d=window.innerHeight,m=document.body.offsetHeight,P=Math.abs(v+d-m)<1,k=ve.map(({element:S,link:A})=>({link:A,top:Ht(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!k.length){l(null);return}if(v<1){l(null);return}if(P){l(k[k.length-1].link);return}let V=null;for(const{link:S,top:A}of k){if(A>v+xe()+4)break;V=S}l(V)}function l(v){n&&n.classList.remove("active"),v==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const d=n;d?(d.classList.add("active"),t.value.style.top=d.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function Ht(s){let t=0;for(;s!==document.body;){if(s===null)return NaN;t+=s.offsetTop,s=s.offsetParent}return t}const Et=["href","title"],Dt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function t({target:e}){const o=e.href.split("#")[1],n=document.getElementById(decodeURIComponent(o));n==null||n.focus({preventScroll:!0})}return(e,o)=>{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:N(["VPDocOutlineItem",e.root?"root":"nested"])},[(a(!0),u(M,null,E(e.headers,({children:i,link:l,title:v})=>(a(),u("li",null,[h("a",{class:"outline-link",href:l,onClick:t,title:v},T(v),9,Et),i!=null&&i.length?(a(),y(n,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),De=$(Dt,[["__scopeId","data-v-3f927ebe"]]),Ft=s=>(B("data-v-c14bfc45"),s=s(),H(),s),Ot={class:"content"},Ut={class:"outline-title",role:"heading","aria-level":"2"},jt={"aria-labelledby":"doc-outline-aria-label"},Gt=Ft(()=>h("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),zt=_({__name:"VPDocAsideOutline",setup(s){const{frontmatter:t,theme:e}=L(),o=we([]);se(()=>{o.value=ke(t.value.outline??e.value.outline)});const n=w(),i=w();return Bt(n,i),(l,v)=>(a(),u("div",{class:N(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n,role:"navigation"},[h("div",Ot,[h("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),h("div",Ut,T(r(Ee)(r(e))),1),h("nav",jt,[Gt,b(De,{headers:o.value,root:!0},null,8,["headers"])])])],2))}}),Kt=$(zt,[["__scopeId","data-v-c14bfc45"]]),Rt={class:"VPDocAsideCarbonAds"},Wt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const t=()=>null;return(e,o)=>(a(),u("div",Rt,[b(r(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),qt=s=>(B("data-v-6d7b3c46"),s=s(),H(),s),Jt={class:"VPDocAside"},Yt=qt(()=>h("div",{class:"spacer"},null,-1)),Xt=_({__name:"VPDocAside",setup(s){const{theme:t}=L();return(e,o)=>(a(),u("div",Jt,[c(e.$slots,"aside-top",{},void 0,!0),c(e.$slots,"aside-outline-before",{},void 0,!0),b(Kt),c(e.$slots,"aside-outline-after",{},void 0,!0),Yt,c(e.$slots,"aside-ads-before",{},void 0,!0),r(t).carbonAds?(a(),y(Wt,{key:0,"carbon-ads":r(t).carbonAds},null,8,["carbon-ads"])):f("",!0),c(e.$slots,"aside-ads-after",{},void 0,!0),c(e.$slots,"aside-bottom",{},void 0,!0)]))}}),Qt=$(Xt,[["__scopeId","data-v-6d7b3c46"]]);function Zt(){const{theme:s,page:t}=L();return g(()=>{const{text:e="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(t.value):n=o.replace(/:path/g,t.value.filePath),{url:n,text:e}})}function xt(){const{page:s,theme:t,frontmatter:e}=L();return g(()=>{var d,m,P,k,V,S,A,C;const o=He(t.value.sidebar,s.value.relativePath),n=wt(o),i=n.findIndex(I=>z(s.value.relativePath,I.link)),l=((d=t.value.docFooter)==null?void 0:d.prev)===!1&&!e.value.prev||e.value.prev===!1,v=((m=t.value.docFooter)==null?void 0:m.next)===!1&&!e.value.next||e.value.next===!1;return{prev:l?void 0:{text:(typeof e.value.prev=="string"?e.value.prev:typeof e.value.prev=="object"?e.value.prev.text:void 0)??((P=n[i-1])==null?void 0:P.docFooterText)??((k=n[i-1])==null?void 0:k.text),link:(typeof e.value.prev=="object"?e.value.prev.link:void 0)??((V=n[i-1])==null?void 0:V.link)},next:v?void 0:{text:(typeof e.value.next=="string"?e.value.next:typeof e.value.next=="object"?e.value.next.text:void 0)??((S=n[i+1])==null?void 0:S.docFooterText)??((A=n[i+1])==null?void 0:A.text),link:(typeof e.value.next=="object"?e.value.next.link:void 0)??((C=n[i+1])==null?void 0:C.link)}}})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const t=s,e=g(()=>t.tag??(t.href?"a":"span")),o=g(()=>t.href&&Ie.test(t.href));return(n,i)=>(a(),y(W(e.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?r(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"]))}}),es={class:"VPLastUpdated"},ts=["datetime"],ss=_({__name:"VPDocFooterLastUpdated",setup(s){const{theme:t,page:e,frontmatter:o,lang:n}=L(),i=g(()=>new Date(o.value.lastUpdated??e.value.lastUpdated)),l=g(()=>i.value.toISOString()),v=w("");return j(()=>{te(()=>{var d,m,P;v.value=new Intl.DateTimeFormat((m=(d=t.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&m.forceLocale?n.value:void 0,((P=t.value.lastUpdated)==null?void 0:P.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(d,m)=>{var P;return a(),u("p",es,[D(T(((P=r(t).lastUpdated)==null?void 0:P.text)||r(t).lastUpdatedText||"Last updated")+": ",1),h("time",{datetime:l.value},T(v.value),9,ts)])}}}),os=$(ss,[["__scopeId","data-v-9da12f1d"]]),ns=s=>(B("data-v-87be45d1"),s=s(),H(),s),as={key:0,class:"VPDocFooter"},rs={key:0,class:"edit-info"},is={key:0,class:"edit-link"},ls=ns(()=>h("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),cs={key:1,class:"last-updated"},us={key:1,class:"prev-next"},ds={class:"pager"},vs=["innerHTML"],ps=["innerHTML"],hs={class:"pager"},fs=["innerHTML"],_s=["innerHTML"],ms=_({__name:"VPDocFooter",setup(s){const{theme:t,page:e,frontmatter:o}=L(),n=Zt(),i=xt(),l=g(()=>t.value.editLink&&o.value.editLink!==!1),v=g(()=>e.value.lastUpdated&&o.value.lastUpdated!==!1),d=g(()=>l.value||v.value||i.value.prev||i.value.next);return(m,P)=>{var k,V,S,A;return d.value?(a(),u("footer",as,[c(m.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(a(),u("div",rs,[l.value?(a(),u("div",is,[b(F,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:p(()=>[ls,D(" "+T(r(n).text),1)]),_:1},8,["href"])])):f("",!0),v.value?(a(),u("div",cs,[b(os)])):f("",!0)])):f("",!0),(k=r(i).prev)!=null&&k.link||(V=r(i).next)!=null&&V.link?(a(),u("nav",us,[h("div",ds,[(S=r(i).prev)!=null&&S.link?(a(),y(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:p(()=>{var C;return[h("span",{class:"desc",innerHTML:((C=r(t).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,vs),h("span",{class:"title",innerHTML:r(i).prev.text},null,8,ps)]}),_:1},8,["href"])):f("",!0)]),h("div",hs,[(A=r(i).next)!=null&&A.link?(a(),y(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:p(()=>{var C;return[h("span",{class:"desc",innerHTML:((C=r(t).docFooter)==null?void 0:C.next)||"Next page"},null,8,fs),h("span",{class:"title",innerHTML:r(i).next.text},null,8,_s)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),bs=$(ms,[["__scopeId","data-v-87be45d1"]]),ks=s=>(B("data-v-83890dd9"),s=s(),H(),s),$s={class:"container"},gs=ks(()=>h("div",{class:"aside-curtain"},null,-1)),ys={class:"aside-container"},Ps={class:"aside-content"},Ss={class:"content"},Vs={class:"content-container"},Ls={class:"main"},Ts=_({__name:"VPDoc",setup(s){const{theme:t}=L(),e=oe(),{hasSidebar:o,hasAside:n,leftAside:i}=O(),l=g(()=>e.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,d)=>{const m=K("Content");return a(),u("div",{class:N(["VPDoc",{"has-sidebar":r(o),"has-aside":r(n)}])},[c(v.$slots,"doc-top",{},void 0,!0),h("div",$s,[r(n)?(a(),u("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[gs,h("div",ys,[h("div",Ps,[b(Qt,null,{"aside-top":p(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),h("div",Ss,[h("div",Vs,[c(v.$slots,"doc-before",{},void 0,!0),h("main",Ls,[b(m,{class:N(["vp-doc",[l.value,r(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),b(bs,null,{"doc-footer-before":p(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(v.$slots,"doc-after",{},void 0,!0)])])]),c(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),ws=$(Ts,[["__scopeId","data-v-83890dd9"]]),Is=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const t=s,e=g(()=>t.href&&Ie.test(t.href)),o=g(()=>t.tag||t.href?"a":"button");return(n,i)=>(a(),y(W(o.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?r(me)(n.href):void 0,target:t.target??(e.value?"_blank":void 0),rel:t.rel??(e.value?"noreferrer":void 0)},{default:p(()=>[D(T(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),Ns=$(Is,[["__scopeId","data-v-14206e74"]]),Ms=["src","alt"],As=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(t,e)=>{const o=K("VPImage",!0);return t.image?(a(),u(M,{key:0},[typeof t.image=="string"||"src"in t.image?(a(),u("img",Z({key:0,class:"VPImage"},typeof t.image=="string"?t.$attrs:{...t.image,...t.$attrs},{src:r(he)(typeof t.image=="string"?t.image:t.image.src),alt:t.alt??(typeof t.image=="string"?"":t.image.alt||"")}),null,16,Ms)):(a(),u(M,{key:1},[b(o,Z({class:"dark",image:t.image.dark,alt:t.image.alt},t.$attrs),null,16,["image","alt"]),b(o,Z({class:"light",image:t.image.light,alt:t.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),ee=$(As,[["__scopeId","data-v-35a7d0b8"]]),Cs=s=>(B("data-v-955009fc"),s=s(),H(),s),Bs={class:"container"},Hs={class:"main"},Es={key:0,class:"name"},Ds=["innerHTML"],Fs=["innerHTML"],Os=["innerHTML"],Us={key:0,class:"actions"},js={key:0,class:"image"},Gs={class:"image-container"},zs=Cs(()=>h("div",{class:"image-bg"},null,-1)),Ks=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const t=J("hero-image-slot-exists");return(e,o)=>(a(),u("div",{class:N(["VPHero",{"has-image":e.image||r(t)}])},[h("div",Bs,[h("div",Hs,[c(e.$slots,"home-hero-info-before",{},void 0,!0),c(e.$slots,"home-hero-info",{},()=>[e.name?(a(),u("h1",Es,[h("span",{innerHTML:e.name,class:"clip"},null,8,Ds)])):f("",!0),e.text?(a(),u("p",{key:1,innerHTML:e.text,class:"text"},null,8,Fs)):f("",!0),e.tagline?(a(),u("p",{key:2,innerHTML:e.tagline,class:"tagline"},null,8,Os)):f("",!0)],!0),c(e.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(a(),u("div",Us,[(a(!0),u(M,null,E(e.actions,n=>(a(),u("div",{key:n.link,class:"action"},[b(Ns,{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(e.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||r(t)?(a(),u("div",js,[h("div",Gs,[zs,c(e.$slots,"home-hero-image",{},()=>[e.image?(a(),y(ee,{key:0,class:"image-src",image:e.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Rs=$(Ks,[["__scopeId","data-v-955009fc"]]),Ws=_({__name:"VPHomeHero",setup(s){const{frontmatter:t}=L();return(e,o)=>r(t).hero?(a(),y(Rs,{key:0,class:"VPHomeHero",name:r(t).hero.name,text:r(t).hero.text,tagline:r(t).hero.tagline,image:r(t).hero.image,actions:r(t).hero.actions},{"home-hero-info-before":p(()=>[c(e.$slots,"home-hero-info-before")]),"home-hero-info":p(()=>[c(e.$slots,"home-hero-info")]),"home-hero-info-after":p(()=>[c(e.$slots,"home-hero-info-after")]),"home-hero-actions-after":p(()=>[c(e.$slots,"home-hero-actions-after")]),"home-hero-image":p(()=>[c(e.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),qs=s=>(B("data-v-f5e9645b"),s=s(),H(),s),Js={class:"box"},Ys={key:0,class:"icon"},Xs=["innerHTML"],Qs=["innerHTML"],Zs=["innerHTML"],xs={key:4,class:"link-text"},eo={class:"link-text-value"},to=qs(()=>h("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),so=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(t,e)=>(a(),y(F,{class:"VPFeature",href:t.link,rel:t.rel,target:t.target,"no-icon":!0,tag:t.link?"a":"div"},{default:p(()=>[h("article",Js,[typeof t.icon=="object"&&t.icon.wrap?(a(),u("div",Ys,[b(ee,{image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])])):typeof t.icon=="object"?(a(),y(ee,{key:1,image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])):t.icon?(a(),u("div",{key:2,class:"icon",innerHTML:t.icon},null,8,Xs)):f("",!0),h("h2",{class:"title",innerHTML:t.title},null,8,Qs),t.details?(a(),u("p",{key:3,class:"details",innerHTML:t.details},null,8,Zs)):f("",!0),t.linkText?(a(),u("div",xs,[h("p",eo,[D(T(t.linkText)+" ",1),to])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),oo=$(so,[["__scopeId","data-v-f5e9645b"]]),no={key:0,class:"VPFeatures"},ao={class:"container"},ro={class:"items"},io=_({__name:"VPFeatures",props:{features:{}},setup(s){const t=s,e=g(()=>{const o=t.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",no,[h("div",ao,[h("div",ro,[(a(!0),u(M,null,E(o.features,i=>(a(),u("div",{key:i.title,class:N(["item",[e.value]])},[b(oo,{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))])])])):f("",!0)}}),lo=$(io,[["__scopeId","data-v-d0a190d7"]]),co=_({__name:"VPHomeFeatures",setup(s){const{frontmatter:t}=L();return(e,o)=>r(t).features?(a(),y(lo,{key:0,class:"VPHomeFeatures",features:r(t).features},null,8,["features"])):f("",!0)}}),uo=_({__name:"VPHomeContent",setup(s){const{width:t}=et({includeScrollbar:!1});return(e,o)=>(a(),u("div",{class:"vp-doc container",style:Ne(r(t)?{"--vp-offset":`calc(50% - ${r(t)/2}px)`}:{})},[c(e.$slots,"default",{},void 0,!0)],4))}}),vo=$(uo,[["__scopeId","data-v-c43247eb"]]),po={class:"VPHome"},ho=_({__name:"VPHome",setup(s){const{frontmatter:t}=L();return(e,o)=>{const n=K("Content");return a(),u("div",po,[c(e.$slots,"home-hero-before",{},void 0,!0),b(Ws,null,{"home-hero-info-before":p(()=>[c(e.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(e.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(e.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(e.$slots,"home-hero-after",{},void 0,!0),c(e.$slots,"home-features-before",{},void 0,!0),b(co),c(e.$slots,"home-features-after",{},void 0,!0),r(t).markdownStyles!==!1?(a(),y(vo,{key:0},{default:p(()=>[b(n)]),_:1})):(a(),y(n,{key:1}))])}}}),fo=$(ho,[["__scopeId","data-v-cbb6ec48"]]),_o={},mo={class:"VPPage"};function bo(s,t){const e=K("Content");return a(),u("div",mo,[c(s.$slots,"page-top"),b(e),c(s.$slots,"page-bottom")])}const ko=$(_o,[["render",bo]]),$o=_({__name:"VPContent",setup(s){const{page:t,frontmatter:e}=L(),{hasSidebar:o}=O();return(n,i)=>(a(),u("div",{class:N(["VPContent",{"has-sidebar":r(o),"is-home":r(e).layout==="home"}]),id:"VPContent"},[r(t).isNotFound?c(n.$slots,"not-found",{key:0},()=>[b(Lt)],!0):r(e).layout==="page"?(a(),y(ko,{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})):r(e).layout==="home"?(a(),y(fo,{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})):r(e).layout&&r(e).layout!=="doc"?(a(),y(W(r(e).layout),{key:3})):(a(),y(ws,{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))}}),go=$($o,[["__scopeId","data-v-91765379"]]),yo={class:"container"},Po=["innerHTML"],So=["innerHTML"],Vo=_({__name:"VPFooter",setup(s){const{theme:t,frontmatter:e}=L(),{hasSidebar:o}=O();return(n,i)=>r(t).footer&&r(e).footer!==!1?(a(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(o)}])},[h("div",yo,[r(t).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(t).footer.message},null,8,Po)):f("",!0),r(t).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(t).footer.copyright},null,8,So)):f("",!0)])],2)):f("",!0)}}),Lo=$(Vo,[["__scopeId","data-v-c970a860"]]);function Fe(){const{theme:s,frontmatter:t}=L(),e=we([]),o=g(()=>e.value.length>0);return se(()=>{e.value=ke(t.value.outline??s.value.outline)}),{headers:e,hasLocalNav:o}}const To=s=>(B("data-v-c9ba27ad"),s=s(),H(),s),wo=To(()=>h("span",{class:"vpi-chevron-right icon"},null,-1)),Io={class:"header"},No={class:"outline"},Mo=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const t=s,{theme:e}=L(),o=w(!1),n=w(0),i=w(),l=w();tt(i,()=>{o.value=!1}),ce("Escape",()=>{o.value=!1}),se(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function d(P){P.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Me(()=>{o.value=!1}))}function m(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(P,k)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ne({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[P.headers.length>0?(a(),u("button",{key:0,onClick:v,class:N({open:o.value})},[D(T(r(Ee)(r(e)))+" ",1),wo],2)):(a(),u("button",{key:1,onClick:m},T(r(e).returnToTopLabel||"Return to top"),1)),b(pe,{name:"flyout"},{default:p(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:d},[h("div",Io,[h("a",{class:"top-link",href:"#",onClick:m},T(r(e).returnToTopLabel||"Return to top"),1)]),h("div",No,[b(De,{headers:P.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Ao=$(Mo,[["__scopeId","data-v-c9ba27ad"]]),Co=s=>(B("data-v-070ab83d"),s=s(),H(),s),Bo={class:"container"},Ho=["aria-expanded"],Eo=Co(()=>h("span",{class:"vpi-align-left menu-icon"},null,-1)),Do={class:"menu-text"},Fo=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:t,frontmatter:e}=L(),{hasSidebar:o}=O(),{headers:n}=Fe(),{y:i}=Ae(),l=w(0);j(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),se(()=>{n.value=ke(e.value.outline??t.value.outline)});const v=g(()=>n.value.length===0),d=g(()=>v.value&&!o.value),m=g(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:v.value,fixed:d.value}));return(P,k)=>r(e).layout!=="home"&&(!d.value||r(i)>=l.value)?(a(),u("div",{key:0,class:N(m.value)},[h("div",Bo,[r(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":P.open,"aria-controls":"VPSidebarNav",onClick:k[0]||(k[0]=V=>P.$emit("open-menu"))},[Eo,h("span",Do,T(r(t).sidebarMenuLabel||"Menu"),1)],8,Ho)):f("",!0),b(Ao,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Oo=$(Fo,[["__scopeId","data-v-070ab83d"]]);function Uo(){const s=w(!1);function t(){s.value=!0,window.addEventListener("resize",n)}function e(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?e():t()}function n(){window.outerWidth>=768&&e()}const i=oe();return G(()=>i.path,e),{isScreenOpen:s,openScreen:t,closeScreen:e,toggleScreen:o}}const jo={},Go={class:"VPSwitch",type:"button",role:"switch"},zo={class:"check"},Ko={key:0,class:"icon"};function Ro(s,t){return a(),u("button",Go,[h("span",zo,[s.$slots.default?(a(),u("span",Ko,[c(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Wo=$(jo,[["render",Ro],["__scopeId","data-v-4a1c76db"]]),Oe=s=>(B("data-v-b79b56d4"),s=s(),H(),s),qo=Oe(()=>h("span",{class:"vpi-sun sun"},null,-1)),Jo=Oe(()=>h("span",{class:"vpi-moon moon"},null,-1)),Yo=_({__name:"VPSwitchAppearance",setup(s){const{isDark:t,theme:e}=L(),o=J("toggle-appearance",()=>{t.value=!t.value}),n=g(()=>t.value?e.value.lightModeSwitchTitle||"Switch to light theme":e.value.darkModeSwitchTitle||"Switch to dark theme");return(i,l)=>(a(),y(Wo,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(t),onClick:r(o)},{default:p(()=>[qo,Jo]),_:1},8,["title","aria-checked","onClick"]))}}),$e=$(Yo,[["__scopeId","data-v-b79b56d4"]]),Xo={key:0,class:"VPNavBarAppearance"},Qo=_({__name:"VPNavBarAppearance",setup(s){const{site:t}=L();return(e,o)=>r(t).appearance&&r(t).appearance!=="force-dark"?(a(),u("div",Xo,[b($e)])):f("",!0)}}),Zo=$(Qo,[["__scopeId","data-v-ead91a81"]]),ge=w();let Ue=!1,ie=0;function xo(s){const t=w(!1);if(q){!Ue&&en(),ie++;const e=G(ge,o=>{var n,i,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(t.value=!0,(i=s.onFocus)==null||i.call(s)):(t.value=!1,(l=s.onBlur)==null||l.call(s))});fe(()=>{e(),ie--,ie||tn()})}return st(t)}function en(){document.addEventListener("focusin",je),Ue=!0,ge.value=document.activeElement}function tn(){document.removeEventListener("focusin",je)}function je(){ge.value=document.activeElement}const sn={class:"VPMenuLink"},on=_({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:t}=L();return(e,o)=>(a(),u("div",sn,[b(F,{class:N({active:r(z)(r(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel},{default:p(()=>[D(T(e.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=$(on,[["__scopeId","data-v-8b74d055"]]),nn={class:"VPMenuGroup"},an={key:0,class:"title"},rn=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(t,e)=>(a(),u("div",nn,[t.text?(a(),u("p",an,T(t.text),1)):f("",!0),(a(!0),u(M,null,E(t.items,o=>(a(),u(M,null,["link"in o?(a(),y(ne,{key:0,item:o},null,8,["item"])):f("",!0)],64))),256))]))}}),ln=$(rn,[["__scopeId","data-v-48c802d0"]]),cn={class:"VPMenu"},un={key:0,class:"items"},dn=_({__name:"VPMenu",props:{items:{}},setup(s){return(t,e)=>(a(),u("div",cn,[t.items?(a(),u("div",un,[(a(!0),u(M,null,E(t.items,o=>(a(),u(M,{key:o.text},["link"in o?(a(),y(ne,{key:0,item:o},null,8,["item"])):(a(),y(ln,{key:1,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),vn=$(dn,[["__scopeId","data-v-97491713"]]),pn=s=>(B("data-v-e5380155"),s=s(),H(),s),hn=["aria-expanded","aria-label"],fn={key:0,class:"text"},_n=["innerHTML"],mn=pn(()=>h("span",{class:"vpi-chevron-down text-icon"},null,-1)),bn={key:1,class:"vpi-more-horizontal icon"},kn={class:"menu"},$n=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const t=w(!1),e=w();xo({el:e,onBlur:o});function o(){t.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:e,onMouseenter:i[1]||(i[1]=l=>t.value=!0),onMouseleave:i[2]||(i[2]=l=>t.value=!1)},[h("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>t.value=!t.value)},[n.button||n.icon?(a(),u("span",fn,[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,_n)):f("",!0),mn])):(a(),u("span",bn))],8,hn),h("div",kn,[b(vn,{items:n.items},{default:p(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ye=$($n,[["__scopeId","data-v-e5380155"]]),gn=["href","aria-label","innerHTML"],yn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const t=s,e=g(()=>typeof t.icon=="object"?t.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:e.value},null,8,gn))}}),Pn=$(yn,[["__scopeId","data-v-717b8b75"]]),Sn={class:"VPSocialLinks"},Vn=_({__name:"VPSocialLinks",props:{links:{}},setup(s){return(t,e)=>(a(),u("div",Sn,[(a(!0),u(M,null,E(t.links,({link:o,icon:n,ariaLabel:i})=>(a(),y(Pn,{key:o,icon:n,link:o,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Pe=$(Vn,[["__scopeId","data-v-ee7a9424"]]),Ln={key:0,class:"group translations"},Tn={class:"trans-title"},wn={key:1,class:"group"},In={class:"item appearance"},Nn={class:"label"},Mn={class:"appearance-action"},An={key:2,class:"group"},Cn={class:"item social-links"},Bn=_({__name:"VPNavBarExtra",setup(s){const{site:t,theme:e}=L(),{localeLinks:o,currentLang:n}=X({correspondingLink:!0}),i=g(()=>o.value.length&&n.value.label||t.value.appearance||e.value.socialLinks);return(l,v)=>i.value?(a(),y(ye,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[r(o).length&&r(n).label?(a(),u("div",Ln,[h("p",Tn,T(r(n).label),1),(a(!0),u(M,null,E(r(o),d=>(a(),y(ne,{key:d.link,item:d},null,8,["item"]))),128))])):f("",!0),r(t).appearance&&r(t).appearance!=="force-dark"?(a(),u("div",wn,[h("div",In,[h("p",Nn,T(r(e).darkModeSwitchLabel||"Appearance"),1),h("div",Mn,[b($e)])])])):f("",!0),r(e).socialLinks?(a(),u("div",An,[h("div",Cn,[b(Pe,{class:"social-links-list",links:r(e).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Hn=$(Bn,[["__scopeId","data-v-9b536d0b"]]),En=s=>(B("data-v-5dea55bf"),s=s(),H(),s),Dn=["aria-expanded"],Fn=En(()=>h("span",{class:"container"},[h("span",{class:"top"}),h("span",{class:"middle"}),h("span",{class:"bottom"})],-1)),On=[Fn],Un=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(t,e)=>(a(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:t.active}]),"aria-label":"mobile navigation","aria-expanded":t.active,"aria-controls":"VPNavScreen",onClick:e[0]||(e[0]=o=>t.$emit("click"))},On,10,Dn))}}),jn=$(Un,[["__scopeId","data-v-5dea55bf"]]),Gn=["innerHTML"],zn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:t}=L();return(e,o)=>(a(),y(F,{class:N({VPNavBarMenuLink:!0,active:r(z)(r(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,tabindex:"0"},{default:p(()=>[h("span",{innerHTML:e.item.text},null,8,Gn)]),_:1},8,["class","href","target","rel"]))}}),Kn=$(zn,[["__scopeId","data-v-2781b5e7"]]),Rn=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const t=s,{page:e}=L(),o=i=>"link"in i?z(e.value.relativePath,i.link,!!t.item.activeMatch):i.items.some(o),n=g(()=>o(t.item));return(i,l)=>(a(),y(ye,{class:N({VPNavBarMenuGroup:!0,active:r(z)(r(e).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Wn=s=>(B("data-v-492ea56d"),s=s(),H(),s),qn={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Jn=Wn(()=>h("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Yn=_({__name:"VPNavBarMenu",setup(s){const{theme:t}=L();return(e,o)=>r(t).nav?(a(),u("nav",qn,[Jn,(a(!0),u(M,null,E(r(t).nav,n=>(a(),u(M,{key:n.text},["link"in n?(a(),y(Kn,{key:0,item:n},null,8,["item"])):(a(),y(Rn,{key:1,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),Xn=$(Yn,[["__scopeId","data-v-492ea56d"]]);function Qn(s){const{localeIndex:t,theme:e}=L();function o(n){var A,C,I;const i=n.split("."),l=(A=e.value.search)==null?void 0:A.options,v=l&&typeof l=="object",d=v&&((I=(C=l.locales)==null?void 0:C[t.value])==null?void 0:I.translations)||null,m=v&&l.translations||null;let P=d,k=m,V=s;const S=i.pop();for(const Q of i){let U=null;const R=V==null?void 0:V[Q];R&&(U=V=R);const ae=k==null?void 0:k[Q];ae&&(U=k=ae);const re=P==null?void 0:P[Q];re&&(U=P=re),R||(V=U),ae||(k=U),re||(P=U)}return(P==null?void 0:P[S])??(k==null?void 0:k[S])??(V==null?void 0:V[S])??""}return o}const Zn=["aria-label"],xn={class:"DocSearch-Button-Container"},ea=h("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),ta={class:"DocSearch-Button-Placeholder"},sa=h("span",{class:"DocSearch-Button-Keys"},[h("kbd",{class:"DocSearch-Button-Key"}),h("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Se=_({__name:"VPNavBarSearchButton",setup(s){const e=Qn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(e)("button.buttonAriaLabel")},[h("span",xn,[ea,h("span",ta,T(r(e)("button.buttonText")),1)]),sa],8,Zn))}}),oa={class:"VPNavBarSearch"},na={id:"local-search"},aa={key:1,id:"docsearch"},ra=_({__name:"VPNavBarSearch",setup(s){const t=ot(()=>nt(()=>import("./VPLocalSearchBox.CHDqaqhP.js"),__vite__mapDeps([0,1]))),e=()=>null,{theme:o}=L(),n=w(!1),i=w(!1);j(()=>{});function l(){n.value||(n.value=!0,setTimeout(v,16))}function v(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function d(k){const V=k.target,S=V.tagName;return V.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const m=w(!1);ce("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),m.value=!0)}),ce("/",k=>{d(k)||(k.preventDefault(),m.value=!0)});const P="local";return(k,V)=>{var S;return a(),u("div",oa,[r(P)==="local"?(a(),u(M,{key:0},[m.value?(a(),y(r(t),{key:0,onClose:V[0]||(V[0]=A=>m.value=!1)})):f("",!0),h("div",na,[b(Se,{onClick:V[1]||(V[1]=A=>m.value=!0)})])],64)):r(P)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),y(r(e),{key:0,algolia:((S=r(o).search)==null?void 0:S.options)??r(o).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),u("div",aa,[b(Se,{onClick:l})]))],64)):f("",!0)])}}}),ia=_({__name:"VPNavBarSocialLinks",setup(s){const{theme:t}=L();return(e,o)=>r(t).socialLinks?(a(),y(Pe,{key:0,class:"VPNavBarSocialLinks",links:r(t).socialLinks},null,8,["links"])):f("",!0)}}),la=$(ia,[["__scopeId","data-v-164c457f"]]),ca=["href","rel","target"],ua={key:1},da={key:2},va=_({__name:"VPNavBarTitle",setup(s){const{site:t,theme:e}=L(),{hasSidebar:o}=O(),{currentLang:n}=X(),i=g(()=>{var d;return typeof e.value.logoLink=="string"?e.value.logoLink:(d=e.value.logoLink)==null?void 0:d.link}),l=g(()=>{var d;return typeof e.value.logoLink=="string"||(d=e.value.logoLink)==null?void 0:d.rel}),v=g(()=>{var d;return typeof e.value.logoLink=="string"||(d=e.value.logoLink)==null?void 0:d.target});return(d,m)=>(a(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(o)}])},[h("a",{class:"title",href:i.value??r(me)(r(n).link),rel:l.value,target:v.value},[c(d.$slots,"nav-bar-title-before",{},void 0,!0),r(e).logo?(a(),y(ee,{key:0,class:"logo",image:r(e).logo},null,8,["image"])):f("",!0),r(e).siteTitle?(a(),u("span",ua,T(r(e).siteTitle),1)):r(e).siteTitle===void 0?(a(),u("span",da,T(r(t).title),1)):f("",!0),c(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,ca)],2))}}),pa=$(va,[["__scopeId","data-v-28a961f9"]]),ha={class:"items"},fa={class:"title"},_a=_({__name:"VPNavBarTranslations",setup(s){const{theme:t}=L(),{localeLinks:e,currentLang:o}=X({correspondingLink:!0});return(n,i)=>r(e).length&&r(o).label?(a(),y(ye,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(t).langMenuLabel||"Change language"},{default:p(()=>[h("div",ha,[h("p",fa,T(r(o).label),1),(a(!0),u(M,null,E(r(e),l=>(a(),y(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ma=$(_a,[["__scopeId","data-v-c80d9ad0"]]),ba=s=>(B("data-v-b9c8b02d"),s=s(),H(),s),ka={class:"wrapper"},$a={class:"container"},ga={class:"title"},ya={class:"content"},Pa={class:"content-body"},Sa=ba(()=>h("div",{class:"divider"},[h("div",{class:"divider-line"})],-1)),Va=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:t}=Ae(),{hasSidebar:e}=O(),{hasLocalNav:o}=Fe(),{frontmatter:n}=L(),i=w({});return Te(()=>{i.value={"has-sidebar":e.value,"has-local-nav":o.value,top:n.value.layout==="home"&&t.value===0}}),(l,v)=>(a(),u("div",{class:N(["VPNavBar",i.value])},[h("div",ka,[h("div",$a,[h("div",ga,[b(pa,null,{"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)]),_:3})]),h("div",ya,[h("div",Pa,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),b(ra,{class:"search"}),b(Xn,{class:"menu"}),b(ma,{class:"translations"}),b(Zo,{class:"appearance"}),b(la,{class:"social-links"}),b(Hn,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),b(jn,{class:"hamburger",active:l.isScreenOpen,onClick:v[0]||(v[0]=d=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),Sa],2))}}),La=$(Va,[["__scopeId","data-v-b9c8b02d"]]),Ta={key:0,class:"VPNavScreenAppearance"},wa={class:"text"},Ia=_({__name:"VPNavScreenAppearance",setup(s){const{site:t,theme:e}=L();return(o,n)=>r(t).appearance&&r(t).appearance!=="force-dark"?(a(),u("div",Ta,[h("p",wa,T(r(e).darkModeSwitchLabel||"Appearance"),1),b($e)])):f("",!0)}}),Na=$(Ia,[["__scopeId","data-v-2b89f08b"]]),Ma=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const t=J("close-screen");return(e,o)=>(a(),y(F,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,onClick:r(t)},{default:p(()=>[D(T(e.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Aa=$(Ma,[["__scopeId","data-v-d45ba3e8"]]),Ca=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const t=J("close-screen");return(e,o)=>(a(),y(F,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,onClick:r(t)},{default:p(()=>[D(T(e.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ge=$(Ca,[["__scopeId","data-v-7179dbb7"]]),Ba={class:"VPNavScreenMenuGroupSection"},Ha={key:0,class:"title"},Ea=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(t,e)=>(a(),u("div",Ba,[t.text?(a(),u("p",Ha,T(t.text),1)):f("",!0),(a(!0),u(M,null,E(t.items,o=>(a(),y(Ge,{key:o.text,item:o},null,8,["item"]))),128))]))}}),Da=$(Ea,[["__scopeId","data-v-4b8941ac"]]),Fa=s=>(B("data-v-c9df2649"),s=s(),H(),s),Oa=["aria-controls","aria-expanded"],Ua=["innerHTML"],ja=Fa(()=>h("span",{class:"vpi-plus button-icon"},null,-1)),Ga=["id"],za={key:1,class:"group"},Ka=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const t=s,e=w(!1),o=g(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function n(){e.value=!e.value}return(i,l)=>(a(),u("div",{class:N(["VPNavScreenMenuGroup",{open:e.value}])},[h("button",{class:"button","aria-controls":o.value,"aria-expanded":e.value,onClick:n},[h("span",{class:"button-text",innerHTML:i.text},null,8,Ua),ja],8,Oa),h("div",{id:o.value,class:"items"},[(a(!0),u(M,null,E(i.items,v=>(a(),u(M,{key:v.text},["link"in v?(a(),u("div",{key:v.text,class:"item"},[b(Ge,{item:v},null,8,["item"])])):(a(),u("div",za,[b(Da,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Ga)],2))}}),Ra=$(Ka,[["__scopeId","data-v-c9df2649"]]),Wa={key:0,class:"VPNavScreenMenu"},qa=_({__name:"VPNavScreenMenu",setup(s){const{theme:t}=L();return(e,o)=>r(t).nav?(a(),u("nav",Wa,[(a(!0),u(M,null,E(r(t).nav,n=>(a(),u(M,{key:n.text},["link"in n?(a(),y(Aa,{key:0,item:n},null,8,["item"])):(a(),y(Ra,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ja=_({__name:"VPNavScreenSocialLinks",setup(s){const{theme:t}=L();return(e,o)=>r(t).socialLinks?(a(),y(Pe,{key:0,class:"VPNavScreenSocialLinks",links:r(t).socialLinks},null,8,["links"])):f("",!0)}}),ze=s=>(B("data-v-362991c2"),s=s(),H(),s),Ya=ze(()=>h("span",{class:"vpi-languages icon lang"},null,-1)),Xa=ze(()=>h("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Qa={class:"list"},Za=_({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:t,currentLang:e}=X({correspondingLink:!0}),o=w(!1);function n(){o.value=!o.value}return(i,l)=>r(t).length&&r(e).label?(a(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:o.value}])},[h("button",{class:"title",onClick:n},[Ya,D(" "+T(r(e).label)+" ",1),Xa]),h("ul",Qa,[(a(!0),u(M,null,E(r(t),v=>(a(),u("li",{key:v.link,class:"item"},[b(F,{class:"link",href:v.link},{default:p(()=>[D(T(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),xa=$(Za,[["__scopeId","data-v-362991c2"]]),er={class:"container"},tr=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const t=w(null),e=Ce(q?document.body:null);return(o,n)=>(a(),y(pe,{name:"fade",onEnter:n[0]||(n[0]=i=>e.value=!0),onAfterLeave:n[1]||(n[1]=i=>e.value=!1)},{default:p(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[h("div",er,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),b(qa,{class:"menu"}),b(xa,{class:"translations"}),b(Na,{class:"appearance"}),b(Ja,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),sr=$(tr,[["__scopeId","data-v-382f42e9"]]),or={key:0,class:"VPNav"},nr=_({__name:"VPNav",setup(s){const{isScreenOpen:t,closeScreen:e,toggleScreen:o}=Uo(),{frontmatter:n}=L(),i=g(()=>n.value.navbar!==!1);return _e("close-screen",e),te(()=>{q&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,v)=>i.value?(a(),u("header",or,[b(La,{"is-screen-open":r(t),onToggleScreen:r(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"]),b(sr,{open:r(t)},{"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)}}),ar=$(nr,[["__scopeId","data-v-f1e365da"]]),Ke=s=>(B("data-v-f24171a4"),s=s(),H(),s),rr=["role","tabindex"],ir=Ke(()=>h("div",{class:"indicator"},null,-1)),lr=Ke(()=>h("span",{class:"vpi-chevron-right caret-icon"},null,-1)),cr=[lr],ur={key:1,class:"items"},dr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const t=s,{collapsed:e,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:v,toggle:d}=Nt(g(()=>t.item)),m=g(()=>v.value?"section":"div"),P=g(()=>n.value?"a":"div"),k=g(()=>v.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),V=g(()=>n.value?void 0:"button"),S=g(()=>[[`level-${t.depth}`],{collapsible:o.value},{collapsed:e.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function A(I){"key"in I&&I.key!=="Enter"||!t.item.link&&d()}function C(){t.item.link&&d()}return(I,Q)=>{const U=K("VPSidebarItem",!0);return a(),y(W(m.value),{class:N(["VPSidebarItem",S.value])},{default:p(()=>[I.item.text?(a(),u("div",Z({key:0,class:"item",role:V.value},rt(I.item.items?{click:A,keydown:A}:{},!0),{tabindex:I.item.items&&0}),[ir,I.item.link?(a(),y(F,{key:0,tag:P.value,class:"link",href:I.item.link,rel:I.item.rel,target:I.item.target},{default:p(()=>[(a(),y(W(k.value),{class:"text",innerHTML:I.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),y(W(k.value),{key:1,class:"text",innerHTML:I.item.text},null,8,["innerHTML"])),I.item.collapsed!=null?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:at(C,["enter"]),tabindex:"0"},cr,32)):f("",!0)],16,rr)):f("",!0),I.item.items&&I.item.items.length?(a(),u("div",ur,[I.depth<5?(a(!0),u(M,{key:0},E(I.item.items,R=>(a(),y(U,{key:R.text,item:R,depth:I.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),vr=$(dr,[["__scopeId","data-v-f24171a4"]]),Re=s=>(B("data-v-ec846e01"),s=s(),H(),s),pr=Re(()=>h("div",{class:"curtain"},null,-1)),hr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},fr=Re(()=>h("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),_r=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:t,hasSidebar:e}=O(),o=s,n=w(null),i=Ce(q?document.body:null);return G([o,n],()=>{var l;o.open?(i.value=!0,(l=n.value)==null||l.focus()):i.value=!1},{immediate:!0,flush:"post"}),(l,v)=>r(e)?(a(),u("aside",{key:0,class:N(["VPSidebar",{open:l.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=it(()=>{},["stop"]))},[pr,h("nav",hr,[fr,c(l.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),u(M,null,E(r(t),d=>(a(),u("div",{key:d.text,class:"group"},[b(vr,{item:d,depth:0},null,8,["item"])]))),128)),c(l.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),mr=$(_r,[["__scopeId","data-v-ec846e01"]]),br=_({__name:"VPSkipLink",setup(s){const t=oe(),e=w();G(()=>t.path,()=>e.value.focus());function o({target:n}){const i=document.getElementById(decodeURIComponent(n.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(n,i)=>(a(),u(M,null,[h("span",{ref_key:"backToTop",ref:e,tabindex:"-1"},null,512),h("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),kr=$(br,[["__scopeId","data-v-c3508ec8"]]),$r=_({__name:"Layout",setup(s){const{isOpen:t,open:e,close:o}=O(),n=oe();G(()=>n.path,o),It(t,o);const{frontmatter:i}=L(),l=Be(),v=g(()=>!!l["home-hero-image"]);return _e("hero-image-slot-exists",v),(d,m)=>{const P=K("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:N(["Layout",r(i).pageClass])},[c(d.$slots,"layout-top",{},void 0,!0),b(kr),b(ht,{class:"backdrop",show:r(t),onClick:r(o)},null,8,["show","onClick"]),b(ar,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}),b(Oo,{open:r(t),onOpenMenu:r(e)},null,8,["open","onOpenMenu"]),b(mr,{open:r(t)},{"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"]),b(go,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}),b(Lo),c(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),y(P,{key:1}))}}}),gr=$($r,[["__scopeId","data-v-a9a9e638"]]),Ve={Layout:gr,enhanceApp:({app:s})=>{s.component("Badge",dt)}},yr=s=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...i)=>n(...i)};const t=document.documentElement;return{stabilizeScrollPosition:o=>async(...n)=>{const i=o(...n),l=s.value;if(!l)return i;const v=l.offsetTop-t.scrollTop;return await Me(),t.scrollTop=l.offsetTop-v,i}}},We="vitepress:tabSharedState",Y=typeof localStorage<"u"?localStorage:null,qe="vitepress:tabsSharedState",Pr=()=>{const s=Y==null?void 0:Y.getItem(qe);if(s)try{return JSON.parse(s)}catch{}return{}},Sr=s=>{Y&&Y.setItem(qe,JSON.stringify(s))},Vr=s=>{const t=lt({});G(()=>t.content,(e,o)=>{e&&o&&Sr(e)},{deep:!0}),s.provide(We,t)},Lr=(s,t)=>{const e=J(We);if(!e)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");j(()=>{e.content||(e.content=Pr())});const o=w(),n=g({get(){var d;const l=t.value,v=s.value;if(l){const m=(d=e.content)==null?void 0:d[l];if(m&&v.includes(m))return m}else{const m=o.value;if(m)return m}return v[0]},set(l){const v=t.value;v?e.content&&(e.content[v]=l):o.value=l}});return{selected:n,select:l=>{n.value=l}}};let Le=0;const Tr=()=>(Le++,""+Le);function wr(){const s=Be();return g(()=>{var o;const e=(o=s.default)==null?void 0:o.call(s);return e?e.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var i;return(i=n.props)==null?void 0:i.label}):[]})}const Je="vitepress:tabSingleState",Ir=s=>{_e(Je,s)},Nr=()=>{const s=J(Je);if(!s)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return s},Mr={class:"plugin-tabs"},Ar=["id","aria-selected","aria-controls","tabindex","onClick"],Cr=_({__name:"PluginTabs",props:{sharedStateKey:{}},setup(s){const t=s,e=wr(),{selected:o,select:n}=Lr(e,ct(t,"sharedStateKey")),i=w(),{stabilizeScrollPosition:l}=yr(i),v=l(n),d=w([]),m=k=>{var A;const V=e.value.indexOf(o.value);let S;k.key==="ArrowLeft"?S=V>=1?V-1:e.value.length-1:k.key==="ArrowRight"&&(S=V(a(),u("div",Mr,[h("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:m},[(a(!0),u(M,null,E(r(e),S=>(a(),u("button",{id:`tab-${S}-${r(P)}`,ref_for:!0,ref_key:"buttonRefs",ref:d,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(o),"aria-controls":`panel-${S}-${r(P)}`,tabindex:S===r(o)?0:-1,onClick:()=>r(v)(S)},T(S),9,Ar))),128))],544),c(k.$slots,"default")]))}}),Br=["id","aria-labelledby"],Hr=_({__name:"PluginTabsTab",props:{label:{}},setup(s){const{uid:t,selected:e}=Nr();return(o,n)=>r(e)===o.label?(a(),u("div",{key:0,id:`panel-${o.label}-${r(t)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${o.label}-${r(t)}`},[c(o.$slots,"default",{},void 0,!0)],8,Br)):f("",!0)}}),Er=$(Hr,[["__scopeId","data-v-9b0d03d2"]]),Dr=s=>{Vr(s),s.component("PluginTabs",Cr),s.component("PluginTabsTab",Er)},Or={extends:Ve,Layout(){return ut(Ve.Layout,null,{})},enhanceApp({app:s,router:t,siteData:e}){Dr(s)}};export{Or as R,Qn as c,L as u}; diff --git a/dev/assets/figures/dep_chain.svg b/dev/assets/dep_chain.Bn8ThLyI.svg similarity index 100% rename from dev/assets/figures/dep_chain.svg rename to dev/assets/dep_chain.Bn8ThLyI.svg diff --git a/dev/assets/figures/diffusion.gif b/dev/assets/diffusion.D35y6Nd5.gif similarity index 100% rename from dev/assets/figures/diffusion.gif rename to dev/assets/diffusion.D35y6Nd5.gif diff --git a/dev/assets/figures/dijkstra.gif b/dev/assets/dijkstra.ajbtxkHI.gif similarity index 100% rename from dev/assets/figures/dijkstra.gif rename to dev/assets/dijkstra.ajbtxkHI.gif diff --git a/dev/assets/documenter.js b/dev/assets/documenter.js deleted file mode 100644 index 7002e25..0000000 --- a/dev/assets/documenter.js +++ /dev/null @@ -1,874 +0,0 @@ -// Generated by Documenter.jl -requirejs.config({ - paths: { - 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/julia.min', - 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/headroom.min', - 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min', - 'minisearch': 'https://cdn.jsdelivr.net/npm/minisearch@6.1.0/dist/umd/index.min', - 'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/contrib/auto-render.min', - 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min', - 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/jQuery.headroom.min', - 'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min', - 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min', - 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/julia-repl.min', - }, - shim: { - "highlight-julia": { - "deps": [ - "highlight" - ] - }, - "katex-auto-render": { - "deps": [ - "katex" - ] - }, - "headroom-jquery": { - "deps": [ - "jquery", - "headroom" - ] - }, - "highlight-julia-repl": { - "deps": [ - "highlight" - ] - } -} -}); -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) { -$(document).ready(function() { - renderMathInElement( - document.body, - { - "delimiters": [ - { - "left": "$", - "right": "$", - "display": false - }, - { - "left": "$$", - "right": "$$", - "display": true - }, - { - "left": "\\[", - "right": "\\]", - "display": true - } - ] -} - - ); -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($) { -$(document).ready(function() { - hljs.highlightAll(); -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -var isExpanded = true; - -$(document).on("click", ".docstring header", function () { - let articleToggleTitle = "Expand docstring"; - - if ($(this).siblings("section").is(":visible")) { - $(this) - .find(".docstring-article-toggle-button") - .removeClass("fa-chevron-down") - .addClass("fa-chevron-right"); - } else { - $(this) - .find(".docstring-article-toggle-button") - .removeClass("fa-chevron-right") - .addClass("fa-chevron-down"); - - articleToggleTitle = "Collapse docstring"; - } - - $(this) - .find(".docstring-article-toggle-button") - .prop("title", articleToggleTitle); - $(this).siblings("section").slideToggle(); -}); - -$(document).on("click", ".docs-article-toggle-button", function () { - let articleToggleTitle = "Expand docstring"; - let navArticleToggleTitle = "Expand all docstrings"; - - if (isExpanded) { - $(this).removeClass("fa-chevron-up").addClass("fa-chevron-down"); - $(".docstring-article-toggle-button") - .removeClass("fa-chevron-down") - .addClass("fa-chevron-right"); - - isExpanded = false; - - $(".docstring section").slideUp(); - } else { - $(this).removeClass("fa-chevron-down").addClass("fa-chevron-up"); - $(".docstring-article-toggle-button") - .removeClass("fa-chevron-right") - .addClass("fa-chevron-down"); - - isExpanded = true; - articleToggleTitle = "Collapse docstring"; - navArticleToggleTitle = "Collapse all docstrings"; - - $(".docstring section").slideDown(); - } - - $(this).prop("title", navArticleToggleTitle); - $(".docstring-article-toggle-button").prop("title", articleToggleTitle); -}); - -}) -//////////////////////////////////////////////////////////////////////////////// -require([], function() { -function addCopyButtonCallbacks() { - for (const el of document.getElementsByTagName("pre")) { - const button = document.createElement("button"); - button.classList.add("copy-button", "fa-solid", "fa-copy"); - button.setAttribute("aria-label", "Copy this code block"); - button.setAttribute("title", "Copy"); - - el.appendChild(button); - - const success = function () { - button.classList.add("success", "fa-check"); - button.classList.remove("fa-copy"); - }; - - const failure = function () { - button.classList.add("error", "fa-xmark"); - button.classList.remove("fa-copy"); - }; - - button.addEventListener("click", function () { - copyToClipboard(el.innerText).then(success, failure); - - setTimeout(function () { - button.classList.add("fa-copy"); - button.classList.remove("success", "fa-check", "fa-xmark"); - }, 5000); - }); - } -} - -function copyToClipboard(text) { - // clipboard API is only available in secure contexts - if (window.navigator && window.navigator.clipboard) { - return window.navigator.clipboard.writeText(text); - } else { - return new Promise(function (resolve, reject) { - try { - const el = document.createElement("textarea"); - el.textContent = text; - el.style.position = "fixed"; - el.style.opacity = 0; - document.body.appendChild(el); - el.select(); - document.execCommand("copy"); - - resolve(); - } catch (err) { - reject(err); - } finally { - document.body.removeChild(el); - } - }); - } -} - -if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", addCopyButtonCallbacks); -} else { - addCopyButtonCallbacks(); -} - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) { - -// Manages the top navigation bar (hides it when the user starts scrolling down on the -// mobile). -window.Headroom = Headroom; // work around buggy module loading? -$(document).ready(function () { - $("#documenter .docs-navbar").headroom({ - tolerance: { up: 10, down: 10 }, - }); -}); - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'minisearch'], function($, minisearch) { - -// In general, most search related things will have "search" as a prefix. -// To get an in-depth about the thought process you can refer: https://hetarth02.hashnode.dev/series/gsoc - -let results = []; -let timer = undefined; - -let data = documenterSearchIndex["docs"].map((x, key) => { - x["id"] = key; // minisearch requires a unique for each object - return x; -}); - -// list below is the lunr 2.1.3 list minus the intersect with names(Base) -// (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with) -// ideally we'd just filter the original list but it's not available as a variable -const stopWords = new Set([ - "a", - "able", - "about", - "across", - "after", - "almost", - "also", - "am", - "among", - "an", - "and", - "are", - "as", - "at", - "be", - "because", - "been", - "but", - "by", - "can", - "cannot", - "could", - "dear", - "did", - "does", - "either", - "ever", - "every", - "from", - "got", - "had", - "has", - "have", - "he", - "her", - "hers", - "him", - "his", - "how", - "however", - "i", - "if", - "into", - "it", - "its", - "just", - "least", - "like", - "likely", - "may", - "me", - "might", - "most", - "must", - "my", - "neither", - "no", - "nor", - "not", - "of", - "off", - "often", - "on", - "or", - "other", - "our", - "own", - "rather", - "said", - "say", - "says", - "she", - "should", - "since", - "so", - "some", - "than", - "that", - "the", - "their", - "them", - "then", - "there", - "these", - "they", - "this", - "tis", - "to", - "too", - "twas", - "us", - "wants", - "was", - "we", - "were", - "what", - "when", - "who", - "whom", - "why", - "will", - "would", - "yet", - "you", - "your", -]); - -let index = new minisearch({ - fields: ["title", "text"], // fields to index for full-text search - storeFields: ["location", "title", "text", "category", "page"], // fields to return with search results - processTerm: (term) => { - let word = stopWords.has(term) ? null : term; - if (word) { - // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names - word = word - .replace(/^[^a-zA-Z0-9@!]+/, "") - .replace(/[^a-zA-Z0-9@!]+$/, ""); - } - - return word ?? null; - }, - // add . as a separator, because otherwise "title": "Documenter.Anchors.add!", would not find anything if searching for "add!", only for the entire qualification - tokenize: (string) => string.split(/[\s\-\.]+/), - // options which will be applied during the search - searchOptions: { - boost: { title: 100 }, - fuzzy: 2, - processTerm: (term) => { - let word = stopWords.has(term) ? null : term; - if (word) { - word = word - .replace(/^[^a-zA-Z0-9@!]+/, "") - .replace(/[^a-zA-Z0-9@!]+$/, ""); - } - - return word ?? null; - }, - tokenize: (string) => string.split(/[\s\-\.]+/), - }, -}); - -index.addAll(data); - -let filters = [...new Set(data.map((x) => x.category))]; -var modal_filters = make_modal_body_filters(filters); -var filter_results = []; - -$(document).on("keyup", ".documenter-search-input", function (event) { - // Adding a debounce to prevent disruptions from super-speed typing! - debounce(() => update_search(filter_results), 300); -}); - -$(document).on("click", ".search-filter", function () { - if ($(this).hasClass("search-filter-selected")) { - $(this).removeClass("search-filter-selected"); - } else { - $(this).addClass("search-filter-selected"); - } - - // Adding a debounce to prevent disruptions from crazy clicking! - debounce(() => get_filters(), 300); -}); - -/** - * A debounce function, takes a function and an optional timeout in milliseconds - * - * @function callback - * @param {number} timeout - */ -function debounce(callback, timeout = 300) { - clearTimeout(timer); - timer = setTimeout(callback, timeout); -} - -/** - * Make/Update the search component - * - * @param {string[]} selected_filters - */ -function update_search(selected_filters = []) { - let initial_search_body = ` -
Type something to get started!
- `; - - let querystring = $(".documenter-search-input").val(); - - if (querystring.trim()) { - results = index.search(querystring, { - filter: (result) => { - // Filtering results - if (selected_filters.length === 0) { - return result.score >= 1; - } else { - return ( - result.score >= 1 && selected_filters.includes(result.category) - ); - } - }, - }); - - let search_result_container = ``; - let search_divider = `
`; - - if (results.length) { - let links = []; - let count = 0; - let search_results = ""; - - results.forEach(function (result) { - if (result.location) { - // Checking for duplication of results for the same page - if (!links.includes(result.location)) { - search_results += make_search_result(result, querystring); - count++; - } - - links.push(result.location); - } - }); - - let result_count = `
${count} result(s)
`; - - search_result_container = ` -
- ${modal_filters} - ${search_divider} - ${result_count} -
- ${search_results} -
-
- `; - } else { - search_result_container = ` -
- ${modal_filters} - ${search_divider} -
0 result(s)
-
-
No result found!
- `; - } - - if ($(".search-modal-card-body").hasClass("is-justify-content-center")) { - $(".search-modal-card-body").removeClass("is-justify-content-center"); - } - - $(".search-modal-card-body").html(search_result_container); - } else { - filter_results = []; - modal_filters = make_modal_body_filters(filters, filter_results); - - if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) { - $(".search-modal-card-body").addClass("is-justify-content-center"); - } - - $(".search-modal-card-body").html(initial_search_body); - } -} - -/** - * Make the modal filter html - * - * @param {string[]} filters - * @param {string[]} selected_filters - * @returns string - */ -function make_modal_body_filters(filters, selected_filters = []) { - let str = ``; - - filters.forEach((val) => { - if (selected_filters.includes(val)) { - str += `${val}`; - } else { - str += `${val}`; - } - }); - - let filter_html = ` -
- Filters: - ${str} -
- `; - - return filter_html; -} - -/** - * Make the result component given a minisearch result data object and the value of the search input as queryString. - * To view the result object structure, refer: https://lucaong.github.io/minisearch/modules/_minisearch_.html#searchresult - * - * @param {object} result - * @param {string} querystring - * @returns string - */ -function make_search_result(result, querystring) { - let search_divider = `
`; - let display_link = - result.location.slice(Math.max(0), Math.min(50, result.location.length)) + - (result.location.length > 30 ? "..." : ""); // To cut-off the link because it messes with the overflow of the whole div - - if (result.page !== "") { - display_link += ` (${result.page})`; - } - - let textindex = new RegExp(`\\b${querystring}\\b`, "i").exec(result.text); - let text = - textindex !== null - ? result.text.slice( - Math.max(textindex.index - 100, 0), - Math.min( - textindex.index + querystring.length + 100, - result.text.length - ) - ) - : ""; // cut-off text before and after from the match - - let display_result = text.length - ? "..." + - text.replace( - new RegExp(`\\b${querystring}\\b`, "i"), // For first occurrence - '$&' - ) + - "..." - : ""; // highlights the match - - let in_code = false; - if (!["page", "section"].includes(result.category.toLowerCase())) { - in_code = true; - } - - // We encode the full url to escape some special characters which can lead to broken links - let result_div = ` - -
-
${result.title}
-
${result.category}
-
-

- ${display_result} -

-
- ${display_link} -
-
- ${search_divider} - `; - - return result_div; -} - -/** - * Get selected filters, remake the filter html and lastly update the search modal - */ -function get_filters() { - let ele = $(".search-filters .search-filter-selected").get(); - filter_results = ele.map((x) => $(x).text().toLowerCase()); - modal_filters = make_modal_body_filters(filters, filter_results); - update_search(filter_results); -} - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// Modal settings dialog -$(document).ready(function () { - var settings = $("#documenter-settings"); - $("#documenter-settings-button").click(function () { - settings.toggleClass("is-active"); - }); - // Close the dialog if X is clicked - $("#documenter-settings button.delete").click(function () { - settings.removeClass("is-active"); - }); - // Close dialog if ESC is pressed - $(document).keyup(function (e) { - if (e.keyCode == 27) settings.removeClass("is-active"); - }); -}); - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -let search_modal_header = ` - -`; - -let initial_search_body = ` -
Type something to get started!
-`; - -let search_modal_footer = ` -
- - Ctrl + - / to search - - esc to close -
-`; - -$(document.body).append( - ` - - ` -); - -document.querySelector(".docs-search-query").addEventListener("click", () => { - openModal(); -}); - -document.querySelector(".close-search-modal").addEventListener("click", () => { - closeModal(); -}); - -$(document).on("click", ".search-result-link", function () { - closeModal(); -}); - -document.addEventListener("keydown", (event) => { - if ((event.ctrlKey || event.metaKey) && event.key === "/") { - openModal(); - } else if (event.key === "Escape") { - closeModal(); - } - - return false; -}); - -// Functions to open and close a modal -function openModal() { - let searchModal = document.querySelector("#search-modal"); - - searchModal.classList.add("is-active"); - document.querySelector(".documenter-search-input").focus(); -} - -function closeModal() { - let searchModal = document.querySelector("#search-modal"); - let initial_search_body = ` -
Type something to get started!
- `; - - searchModal.classList.remove("is-active"); - document.querySelector(".documenter-search-input").blur(); - - if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) { - $(".search-modal-card-body").addClass("is-justify-content-center"); - } - - $(".documenter-search-input").val(""); - $(".search-modal-card-body").html(initial_search_body); -} - -document - .querySelector("#search-modal .modal-background") - .addEventListener("click", () => { - closeModal(); - }); - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// Manages the showing and hiding of the sidebar. -$(document).ready(function () { - var sidebar = $("#documenter > .docs-sidebar"); - var sidebar_button = $("#documenter-sidebar-button"); - sidebar_button.click(function (ev) { - ev.preventDefault(); - sidebar.toggleClass("visible"); - if (sidebar.hasClass("visible")) { - // Makes sure that the current menu item is visible in the sidebar. - $("#documenter .docs-menu a.is-active").focus(); - } - }); - $("#documenter > .docs-main").bind("click", function (ev) { - if ($(ev.target).is(sidebar_button)) { - return; - } - if (sidebar.hasClass("visible")) { - sidebar.removeClass("visible"); - } - }); -}); - -// Resizes the package name / sitename in the sidebar if it is too wide. -// Inspired by: https://github.com/davatron5000/FitText.js -$(document).ready(function () { - e = $("#documenter .docs-autofit"); - function resize() { - var L = parseInt(e.css("max-width"), 10); - var L0 = e.width(); - if (L0 > L) { - var h0 = parseInt(e.css("font-size"), 10); - e.css("font-size", (L * h0) / L0); - // TODO: make sure it survives resizes? - } - } - // call once and then register events - resize(); - $(window).resize(resize); - $(window).on("orientationchange", resize); -}); - -// Scroll the navigation bar to the currently selected menu item -$(document).ready(function () { - var sidebar = $("#documenter .docs-menu").get(0); - var active = $("#documenter .docs-menu .is-active").get(0); - if (typeof active !== "undefined") { - sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; - } -}); - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// Theme picker setup -$(document).ready(function () { - // onchange callback - $("#documenter-themepicker").change(function themepick_callback(ev) { - var themename = $("#documenter-themepicker option:selected").attr("value"); - if (themename === "auto") { - // set_theme(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); - window.localStorage.removeItem("documenter-theme"); - } else { - // set_theme(themename); - window.localStorage.setItem("documenter-theme", themename); - } - // We re-use the global function from themeswap.js to actually do the swapping. - set_theme_from_local_storage(); - }); - - // Make sure that the themepicker displays the correct theme when the theme is retrieved - // from localStorage - if (typeof window.localStorage !== "undefined") { - var theme = window.localStorage.getItem("documenter-theme"); - if (theme !== null) { - $("#documenter-themepicker option").each(function (i, e) { - e.selected = e.value === theme; - }); - } - } -}); - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// update the version selector with info from the siteinfo.js and ../versions.js files -$(document).ready(function () { - // If the version selector is disabled with DOCUMENTER_VERSION_SELECTOR_DISABLED in the - // siteinfo.js file, we just return immediately and not display the version selector. - if ( - typeof DOCUMENTER_VERSION_SELECTOR_DISABLED === "boolean" && - DOCUMENTER_VERSION_SELECTOR_DISABLED - ) { - return; - } - - var version_selector = $("#documenter .docs-version-selector"); - var version_selector_select = $("#documenter .docs-version-selector select"); - - version_selector_select.change(function (x) { - target_href = version_selector_select - .children("option:selected") - .get(0).value; - window.location.href = target_href; - }); - - // add the current version to the selector based on siteinfo.js, but only if the selector is empty - if ( - typeof DOCUMENTER_CURRENT_VERSION !== "undefined" && - $("#version-selector > option").length == 0 - ) { - var option = $( - "" - ); - version_selector_select.append(option); - } - - if (typeof DOC_VERSIONS !== "undefined") { - var existing_versions = version_selector_select.children("option"); - var existing_versions_texts = existing_versions.map(function (i, x) { - return x.text; - }); - DOC_VERSIONS.forEach(function (each) { - var version_url = documenterBaseURL + "/../" + each + "/"; - var existing_id = $.inArray(each, existing_versions_texts); - // if not already in the version selector, add it as a new option, - // otherwise update the old option with the URL and enable it - if (existing_id == -1) { - var option = $( - "" - ); - version_selector_select.append(option); - } else { - var option = existing_versions[existing_id]; - option.value = version_url; - option.disabled = false; - } - }); - } - - // only show the version selector if the selector has been populated - if (version_selector_select.children("option").length > 0) { - version_selector.toggleClass("visible"); - } -}); - -}) diff --git a/dev/assets/figures/drawgraphkeywords.svg b/dev/assets/drawgraphkeywords.BY6WQdtw.svg similarity index 100% rename from dev/assets/figures/drawgraphkeywords.svg rename to dev/assets/drawgraphkeywords.BY6WQdtw.svg diff --git a/dev/assets/edgegapanimation.BwI31XKF.gif b/dev/assets/edgegapanimation.BwI31XKF.gif new file mode 100644 index 0000000000000000000000000000000000000000..8818d5a794221b669f74418d098655a4d9b87632 GIT binary patch literal 245645 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 l@@i#Q8Ve>nSB<8F1%t@b0"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," w "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," nodesizes[v]")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," bbox "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," BoundingBox"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"box"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(c[v], w"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"/"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"get_fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()))")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," # box")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @layer"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"white"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," box"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(bbox, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", action"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":fillpreserve"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"gold"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," strokepath"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," #text")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @layer"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"black"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," textfit"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(labels[v], bbox)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgefunction"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(n, s, d, f, t) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," manhattanline"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(f, t)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," )")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 1000"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 550")])])])])],-1),V=I(`

This graph could do with a bit more tweaking.

Julia source tree

This example takes a Julia expression and displays it as a tree.

julia
using Karnak, Graphs, NetworkLayout, Colors
+
+# shamelessly stolen from Professor David Sanders' Tree !
+
+add_numbered_vertex!(g) = (add_vertex!(g); top = nv(g))
+
+function walk_tree!(g, labels, ex, show_call = true)
+    top_vertex = add_numbered_vertex!(g)
+    where_start = 1  # which argument to start with
+    if !(show_call) && ex.head == :call
+        f = ex.args[1]   # the function name
+        push!(labels, f)
+        where_start = 2   # drop "call" from tree
+    else
+        push!(labels, ex.head)
+    end
+    for i in where_start:length(ex.args)
+        if isa(ex.args[i], Expr)
+            child = walk_tree!(g, labels, ex.args[i], show_call)
+            add_edge!(g, top_vertex, child)
+        else
+            n = add_numbered_vertex!(g)
+            add_edge!(g, top_vertex, n)
+            push!(labels, ex.args[i])
+        end
+    end
+    return top_vertex
+end
+
+function walk_tree(ex::Expr, show_call = false)
+    g = DiGraph()
+    labels = Any[]
+    walk_tree!(g, labels, ex, show_call)
+    return (g, labels)
+end
+
+# build graph and labels
+expression = :(2 + sin(30) * cos(15) / - log(-1.02^exp(-1)))
+
+g, labels = walk_tree(expression)
+
+@drawsvg begin
+    background("grey10")
+    sethue("gold")
+    drawgraph(g,
+        margin=60,
+            layout = buchheim,
+            vertexlabels = labels,
+            vertexshapes = :circle,
+            vertexshapesizes = 20,
+            edgefunction = (n, s, d, f, t) -> begin
+                move(f)
+                line(t)
+                strokepath()
+            end,
+            vertexlabelfontsizes = 15,
+            vertexlabelfontfaces = "JuliaMono-Bold", # probably won't be available for docs
+            vertexlabeltextcolors = colorant"black")
+    fontface("JuliaMono-Bold")
+    fontsize(15)
+    text(string(expression), boxbottomcenter() + (0, -20), halign=:center)
+end

LayeredLayouts.jl

LayeredLayouts is a package for working out how to layout graphs in a layered fashion: how to lay out directed acyclic graphs (DAGs), including trees, dependency graphs, and Sankey diagrams.

The package offers the Zarate algorithm (David Cheng Zarate). Positions are returned as x and y vectors, and should be converted to Points when passed to layout.

julia
using Graphs
+using LayeredLayouts
+using Karnak
+
+tree = SimpleDiGraph(Edge.(
+    [1 => 2, 2 => 3, 4 => 5, 4 => 6, 
+     4 => 7, 4 => 8, 4 => 9, 4 => 10, 
+     5 => 11, 5 => 12, 8 => 15, 8 => 16, 
+     8 => 17, 8 => 18, 8 => 19, 9 => 20, 
+     9 => 21, 10 => 22, 12 => 13, 13 => 14, 
+     23 => 4, 23 => 24, 23 => 25, 23 => 26, 
+     23 => 27, 23 => 28, 23 => 29, 23 => 30, 
+     23 => 31, 28 => 32, 28 => 33, 29 => 35, 
+     30 => 1, 30 => 38, 31 => 40, 33 => 34, 
+     35 => 36, 35 => 37, 38 => 39, 40 => 41, 41 => 42]))
+
+xs, ys, paths = solve_positions(Zarate(), tree)
+
+@draw begin
+    background("black")
+    sethue("gold")
+    drawgraph(tree, 
+        vertexlabels = 1:nv(tree),
+        edgestrokecolors = [Karnak.RGB(randomhue()...) for e in 1:ne(tree)],
+        layout= boxmiddleleft() .+ 
+            map(pt -> Point(90pt[1], 30pt[2]), zip(xs, ys))
+    )
+end 600 500

Simple dependency graph

You can draw a visual interpretation of a Julia package's dependencies easily enough by going through the TOML files.

',13),C=M("details",{closed:""},[M("summary",null,"Code for this figure"),M("p",null,"This code generates the figure below:"),M("div",{class:"language-julia vp-adaptive-theme"},[M("button",{title:"Copy Code",class:"copy"}),M("span",{class:"lang"},"julia"),M("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[M("code",null,[M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Karnak")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Graphs")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," NetworkLayout")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," InteractiveUtils")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Colors")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," TOML")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Base"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},":"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," active_project")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"# mostly stolen from PkgGraph.jl by tfiers!")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"manifest"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(proj_path) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," replace"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(proj_path, "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"Project.toml"'),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," =>"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},' "Manifest.toml"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"if"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," VERSION"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," ≥"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," v"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1.7"')]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," packages_in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(manifest) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," TOML"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"parsefile"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(manifest)["),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"deps"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"]")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"else")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," packages_in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(manifest) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," TOML"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"parsefile"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(manifest)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"packages_in_active_manifest"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"() "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," packages_in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"manifest"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"active_project"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()))")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"function"),M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," depgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgname)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," rootpkg "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," string"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgname)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," packages "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," packages_in_active_manifest"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," if"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," rootpkg "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∉"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," keys"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(packages)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," error"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"""')]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," The given package ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$pkgname"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},") must be installed in the active project")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," (which is currently `"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$(active_project())"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'`)"""'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," deps "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Vector{Pair{String,String}}"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," add_deps_of"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(name) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkg_info "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," only"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(packages[name])")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," direct_deps "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," get"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkg_info, "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"deps"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", [])")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dep "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," direct_deps")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," push!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(deps, name "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"=>"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dep)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_deps_of"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(dep)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_deps_of"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(rootpkg)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," return"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," unique!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(deps)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"function"),M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," build_depgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgname)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dgraphs "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," depgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgname)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," String[]")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (f, t) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dgraphs")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," if"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," f "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∉"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," push!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkglist, f)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," if"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," t "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∉"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," push!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkglist, t)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," DiGraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"length"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkglist))")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (f, t) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dgraphs")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," if"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," f "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∈"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"&&"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," t "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∈"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_edge!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"findfirst"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"isequal"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(f), pkglist), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"findfirst"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"isequal"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(t), pkglist))")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," return"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g, pkglist")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"g, pkgnames "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," build_depgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"DataFrames"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"d "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @drawsvg"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," background"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey5"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"gold"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontface"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"Avenir-Black"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," drawgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g,")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," margin"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"40"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," layout "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Stress"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(iterations "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 100"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgegaps "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 13"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgestrokeweights "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 3"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgecurvature "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 4"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgestrokecolors "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"HSB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"360rand"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.7"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.8"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},") "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," i "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 1"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},":"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"ne"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g)],")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabels "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (vtx) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," string"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgnames[vtx])")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapes "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (v) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," tx "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," textextents"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgnames[v])")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @layer"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," setopacity"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.8"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey80"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," box"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(O, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"1.2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tx["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"5"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"], "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"1.5"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tx["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"4"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"], "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"5"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":fill"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," )")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 800"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 700")])])])])],-1),x=I(`

There's an extended investigation of package dependencies later in this section.

The London Tube

One real-world example of a small network is the London Underground, known as “the Tube”. The 250 or so stations in the network can be modelled using a simple graph.

Setup

If you want to follow along, this is the setup required. The CSV file examples/tubedata-modified.csv contains the station names, latitude and longitudes, and connectivity details.

julia
using Karnak, Graphs, NetworkLayout, Colors
+using DataFrames, CSV
+
+# positions are in LatLong
+
+tubedata = CSV.File("examples/tubedata-modified.csv") |> DataFrame
+
+amatrix = Matrix(tubedata[:, 4:270])
+
+extrema_lat = extrema(tubedata.Latitude)
+extrema_long = extrema(tubedata.Longitude)
+
+# scale LatLong and flip in y to fit into current drawing
+
+positions = @. Point(
+    rescale(tubedata.Longitude, extrema_long..., -280, 280),
+    rescale(tubedata.Latitude, extrema_lat..., 280, -280))
+
+stations = tubedata[!,:Station]
+
+find(str) = findfirst(isequal(str), stations)
+find(x::Int64) = stations[x]
+
+g = Graph(amatrix)

The tube “map” is stored in g, as a {267, 308} undirected simple Int64 graph.

The find() functions are just a quick way to convert between station names and ID numbers:

@example
find("Waterloo")
@example
find(244)

Not a map

Most London residents and visitors are used to seeing the famous Tube Map:

It’s a design classic, hand-drawn by Harry Beck in 1931, and updated regularly ever since. As an electrical engineer, Beck represented the sprawling London track network as a tidy circuit board. For Beck, the important thing about the map was to show the connections, rather than the accurate geography.

Our version looks very different, but it is at least geographically more accurate, because the latitude and longitude values of the stations are passed to layout.

@example
@drawsvg begin
+background("grey10")
+sethue("grey50")
+drawgraph(g,
+    layout = positions,
+    vertexshapes = :none,
+    vertexlabeltextcolors = colorant"white",
+    vertexlabels = find.(1:nv(g)),
+    vertexlabelfontsizes = 6)
+end

The layout algorithms - layout = spring and layout = stress - do a reasonable job, but people like to see north at the top of maps, and south at the bottom, not mixed up in any direction, like these.

@example
@drawsvg begin
+background("grey20")
+tiles = Tiler(800, 400, 1, 2)
+sethue("white")
+
+@layer begin
+    translate(first(tiles[1]))
+    drawgraph(g,
+        layout=spring,
+        boundingbox = BoundingBox(box(O, 400, 400)),
+        vertexshapes = :none,
+        vertexlabeltextcolors = colorant"white",
+        vertexlabels = find.(1:nv(g)),
+        vertexlabelfontsizes = 6
+        )
+end
+
+@layer begin
+    translate(first(tiles[2]))
+    drawgraph(g,
+        layout=stress,
+        boundingbox = BoundingBox(box(O, 400, 400)),
+        vertexshapes = :none,
+        vertexlabeltextcolors = colorant"white",
+        vertexlabels = find.(vertices(g)),
+        vertexlabelfontsizes = 6
+        )
+end
+
+end 800 400

Train terminates here

Use the degree() function to show just the station names at the end of a line: a vertex with a degree of 1 is a terminus:

@example
@drawsvg begin
+background("grey90")
+sethue("black")
+drawgraph(g, layout=positions,
+    vertexshapesizes = 2,
+    vertexlabels = [(degree(g, n) == 1) ? find(n) : ""
+        for n in vertices(g)],
+    vertexlabeltextcolors = colorant"blue"
+    )
+end

These labels show names familiar to all Tube-riders - the ones shown on the front of trains and on platform indicators. (It's unusual to visit them all, unless you're like Geoff Marshall, who holds the world record for the fastest time visiting every Tube station.)

Neighbors

The best connected station is also one of the oldest, dating back to 1863:

@example
find(argmax(degree(g, 1:nv(g))))

Its neighbors are:

@example
find.(neighbors(g, find("Baker Street")))

Centrality

Using Graphs.jl's tools for measuring centrality, Baker Street is again at the top of the list, but Green Park (the Queen's nearest tube station), scores highly, despite not being in the top 20 busiest stations.

@example
@drawsvg begin
+background("grey10")
+translate(0, -200)
+scale(3)
+bc = betweenness_centrality(g)
+sethue("gold")
+_, maxbc = extrema(bc)
+drawgraph(g, layout = positions,
+    vertexlabels = (vtx) -> bc[vtx] > maxbc * 0.6 && string(find(vtx)),
+    vertexlabeltextcolors = colorant"cyan",
+    vertexlabelfontsizes = 6,
+    vertexshapesizes = 1 .+ 10bc,
+    vertexfillcolors = HSB.(rescale.(bc, 0, maximum(bc), 0, 300), 0.7, 0.8),
+    )
+end 800 600

Mornington Crescent

A route from Heathrow Terminal 5 to Mornington Crescent can be found using a_star().

@example
heathrow_to_morningtoncrescent = a_star(g,
+    find("Heathrow Terminal 5"),
+    find("Mornington Crescent"))
+
+@drawsvg begin
+background("grey70")
+translate(0, -100)
+scale(3)
+
+sethue("grey50")
+drawgraph(g,
+    layout = positions,
+    vertexshapesizes = 1)
+
+sethue("black")
+fontsize(4)
+drawgraph(g,
+    layout = positions,
+    vertexshapes = :none,
+    edgelist = heathrow_to_morningtoncrescent,
+    edgestrokeweights = 3,
+    vertexlabels = (vtx) -> begin
+        if vtx ∈ src.(heathrow_to_morningtoncrescent) ||
+           vtx ∈ dst.(heathrow_to_morningtoncrescent)
+             circle(positions[vtx], 2, :fill)
+             label(find(vtx), :e, positions[vtx])
+        end
+    end)
+end

The route found by a_star is:

@example
[find(dst(e)) for e in heathrow_to_morningtoncrescent]

Information about the required changes - at Victoria from the Piccadilly line to the Victoria Line, and at Warren Street from the Victoria Line to the Northern Line - is not part of the graph. Routes across the Tube network, like the trains, follow the tracks (edges). The concept of “lines” (Victoria, Circle, etc) isn’t part of the graph structure, but a colorful layer imposed on top of the track network.

Pandemic

Graphs.jl provides many functions for analysing graph networks. The diffusion() function appears to simulate the diffusion of an infection from some starting vertices and the probability of spreading.

The function returns an array of arrays, where each one contains the vertex numbers of newly "infected" vertices. For example, in this result:

julia
[[1], Int64[], [22, 15, 25], ...]

the first stage showed vertex 1 "infected"; stage two was free of incident; but on stage 3 vertices 22, 15, and 25 have become "infected".

So here, apparently, is a simulation of what might happen when an infection arrives at Heathrow Airport's Terminal 5 tube station, and starts spreading through the tube network.

julia
function frame(scene, framenumber, diffresult)
+    background("black")
+    sethue("gold")
+    text(string(framenumber), boxbottomleft() + (10, -10))
+    drawgraph(g, layout = positions, vertexshapesizes = 3)
+    for k in 1:framenumber
+        i = diffresult[k]
+        drawgraph(
+            g,
+            layout = positions,
+            edgelines = 0,
+            vertexfunction = (v, c) -> begin
+                if !isempty(i)
+                    if v  i
+                        sethue("red")
+                        circle(positions[v], 5, :fill)
+                    end
+                end
+            end,
+        )
+    end
+end
+
+function main()
+    amovie = Movie(600, 600, "diff")
+    diffresult = diffusion(g, 0.2, 200, initial_infections=[find("Heathrow Terminal 5")])
+    animate(amovie,
+        Scene(amovie, (s, f) -> frame(s, f, diffresult), 1:length(diffresult)),
+        framerate=10,
+        creategif=true,
+        pathname="/tmp/diff.gif")
+end
+main()

The current logo for the Graphs.jl package was easily drawn using Karnak.

I wanted to use the graph coloring feature (greedy_color()), but unfortunately it was too clever, managing to color the graph using only two colors instead of the four I was hoping to use.

julia
using Graphs
+using Karnak
+using Colors
+
+function lighten(col::Colorant, f)
+    c = convert(RGB, col)
+    return RGB(f * c.r, f * c.g, f * c.b)
+end
+
+function julia_sphere(pt::Point, w, col::Colorant;
+        action = :none)
+    setmesh(mesh(
+        makebezierpath(box(pt, w * 1.5, w * 1.5)),
+        [lighten(col, .5),
+         lighten(col, 1.75),
+         lighten(col, 1.25),
+         lighten(col, .6)]))
+    circle(pt, w, action)
+end
+
+function draw_edge(pt1, pt2)
+    for k in 0:0.1:1
+        setline(rescale(k, 0, 1, 25, 1))
+        sethue(lighten(colorant"grey50", rescale(k, 0, 1, 0.5, 1.5)))
+        setopacity(rescale(k, 0, 1, 0.5, 0.75))
+        line(pt1, pt2, :stroke)
+    end
+end
+
+# positions for vertices
+
+outerpts = ngonside(O, 450, 4, π/4, vertices=true)
+innerpts = ngonside(O, 150, 4, π/2, vertices=true)
+pts = vcat(outerpts, innerpts)
+
+colors = map(c -> RGB(c...),
+    [Karnak.Luxor.julia_blue, Karnak.Luxor.julia_red, Karnak.Luxor.julia_green, Karnak.Luxor.julia_purple])
+
+@drawsvg begin
+    squircle(O, 294, 294, :clip, rt=0.2)
+    sethue("black")
+    paint()
+    g = SimpleGraph([
+        Edge(1,2), Edge(2,3), Edge(3,4), Edge(1,4),
+        Edge(5,6), Edge(6,7), Edge(7,8), Edge(5,8),
+        Edge(1,5), Edge(2,6), Edge(3,7), Edge(4,8),
+        ])
+
+    drawgraph(Graph(g),
+        layout=pts,
+        vertexfunction = (v, c) -> begin
+            d = distance(O, c[v])
+            d > 200 ? k = 0 : k = 1
+            julia_sphere(c[v],
+                 rescale(d, 0, 200, 52, 50), colors[mod1(v + k, 4)],
+                action=:fill)
+        end,
+        edgefunction = (k, s, d, f, t) -> draw_edge(f, t)
+        )
+end

Julia Package Dependencies

This example was originally developed by Mathieu Besançon and presented as part of the workshop: Analyzing Graphs at Scale, at JuliaCon 2020. You can watch the video on YouTube.

The most important changes since the video was made are:

  • the renaming of LightGraphs.jl to Graphs.jl

  • the way to access the list of packages has changed

The code builds a dependency graph of the connections (ie which package depends on which package) for Julia packages in the General registry.

Then it's possible draw some pictures, such as this chonky SVG file showing the dependencies for the Colors.jl package:

Or this one, which attempts to highlight just the more connected packages in the Colors.jl dependency graph:

Setup:

julia
using Graphs
+using MetaGraphs
+using TOML
+using Karnak
+using Colors

Finding the general registry

On my computer, the registry is in its default location. You might need to modify these lines if yours is is another location:

julia
path_to_general = expanduser("~/.julia/registries/General")
+registry_file = Pkg.TOML.parsefile(joinpath(path_to_general, "Registry.toml"))
+packages_info = registry_file["packages"];

First we need the name and location of every package:

julia
# Julia <= v1.6
+pkg_paths = map(values(packages_info)) do d
+    (name = d["name"], path = d["path"])
+end
julia
# Julia >= v1.7
+pkg_paths = map(values(Pkg.Registry.reachable_registries()[1].pkgs)) do d
+    (name = d.name, path = d.path)
+end

The result in pkg_paths is a vector of tuples, containing the name and location of every package:

julia
7495-element Vector{NamedTuple{(:name, :path), Tuple{String, String}}}:
+ (name = "COSMA_jll", path = "C/COSMA_jll")
+ (name = "CitableImage", path = "C/CitableImage")
+ (name = "Trixi2Img", path = "T/Trixi2Img")
+ (name = "ImPlot", path = "I/ImPlot")

Find packages that depend on a specific package

The function find_direct_deps() finds all the packages (names and locations) that directly depend on a specific named package.

julia
function find_direct_deps(registry_path, pkg_paths, source)
+    filter(pkg_paths) do pkg_path
+        deps_file = joinpath(registry_path, pkg_path.path, "Deps.toml")
+        # some packages don't have Deps.toml file
+        isfile(deps_file) && begin
+            deps_struct = Pkg.TOML.parsefile(deps_file)
+            any(values(deps_struct)) do d
+                source in keys(d)
+            end
+        end
+    end
+end

We can now find out how many packages depend on a particular package. For example, how many packages depend on Colors.jl (my favourite)?

julia
find_direct_deps(path_to_general, pkg_paths, "Colors")

giving this result:

julia
227-element Vector{NamedTuple{(:name, :path), Tuple{String, String}}}:
+ (name = "TopologyPreprocessing", path = "T/TopologyPreprocessing")
+ (name = "DynamicGrids", path = "D/DynamicGrids")
+ (name = "SimpleSDMLayers", path = "S/SimpleSDMLayers")
+ (name = "UnderwaterAcoustics", path = "U/UnderwaterAcoustics")
+ (name = "ColorSchemeTools", path = "C/ColorSchemeTools")
+ (name = "PrincipalMomentAnalysisApp", path = "P/PrincipalMomentAnalysisApp")
+
+ (name = "SoilWater_ToolBox", path = "S/SoilWater_ToolBox")
+ (name = "Starlight", path = "S/Starlight")
+ (name = "Dojo", path = "D/Dojo")
+ (name = "OpticSim", path = "O/OpticSim")
+ (name = "LVServer", path = "L/LVServer")

Colors.jl has 227 packages that depend on it. When Mathieu ran this code in 2020 on "LightGraphs", the vector had 92 elements. Today, in 2022, for "Graphs", the vector has 115 elements.

Build a directed tree

The next function, build_tree(), will build a directed graph of the dependencies on Colors.jl. Starting at the root package (Colors) the loop finds all its dependencies, then finds the dependencies of all of those dependent packages, and continues doing this until it reaches packages that have no dependencies. These are the "leaves" at the tip of the tree's branches.

julia
function build_tree(registry_path, pkg_paths, root)
+    g = MetaDiGraph()
+    add_vertex!(g)
+    set_prop!(g, 1, :name, root)
+    i = 1
+    explored_nodes = Set{String}((root,))
+    while true
+        i % 50 == 0 && print(i, " ")
+        current_node = get_prop(g, i, :name)
+        direct_deps = find_direct_deps(registry_path, pkg_paths, current_node)
+        filter!(d -> d.name  explored_nodes, direct_deps)
+        if isempty(direct_deps) && i >= nv(g)
+           break
+        end
+        for ddep in direct_deps
+           push!(explored_nodes, ddep.name)
+           add_vertex!(g)
+           set_prop!(g, nv(g), :name, ddep.name)
+           add_edge!(g, i, nv(g))
+        end
+        i += 1
+    end
+    return g
+end

Note

This function takes some time to run - about 8 minutes for about 1400 iterations on my computer.

julia
g = build_tree(path_to_general, pkg_paths, "Colors")
+
+{1375, 1374} directed Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)

Notice that there are 1375 nodes, but one less edge. The Colors.jl package is the root of the tree, and doesn't connect to anything else, in this analysis.) Of course, it depends on quite a few, but that's another graph story.)

The result is a directed metagraph. In a metagraph, as implemented by MetaGraphs.jl, it's possible to add information to vertices using set_prop() and get_prop().

To find all the package names in the graph that are directly connected to Colors.jl, we can broadcast get_prop() like this:

julia
get_prop.(Ref(g), outneighbors(g, 1), :name)
+
+227-element Vector{String}:
+ "SqState"
+ "InteractBase"
+ "ImageMetadata"
+ "PlantGeom"
+ "MicrobiomePlots"
+ "MeshViz"
+ "SGtSNEpi"
+ "ColorSchemes"
+ "CairoMakie"
+
+ "GenomicMaps"
+ "ModiaPlot"
+ "Thebes"
+ "ConstrainedDynamics"
+ "AutomotiveVisualization"
+ "Flux"

outneighbors returns a list of all neighbors connected to vertex v by an outgoing edge.

Shortest paths and lengths of branches

The dijkstra_shortest_paths() function finds the paths between the designated package and all its dependencies.

The returned value is a DijkstraState object, with fields parents, dists, predecessors, pathcounts, and closest_vertices.

Looking at the dists (distances), we see that one package is very close indeed at 0.0 - that's Colors.jl itself.

julia
spath_result = dijkstra_shortest_paths(g, 1)
+
+spath_result.dists
+
+1375-element Vector{Float64}:
+ 0.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+ 5.0
+ 5.0
+ 5.0
+ 6.0
+ 6.0
+ 6.0
+ 6.0
+ 6.0
+ 6.0
+ 7.0
+ 7.0

Or in a barchart:

julia
scores = [count(==(i), spath_result.dists) for i in unique(spath_result.dists)]

The "furthest" packages from Colors.jl - the two seven steps away - are:

julia
for idx in eachindex(spath_result.dists)
+    if spath_result.dists[idx] == 7
+         println(get_prop(g, idx, :name))
+    end
+end
+
+QuantumESPRESSOExpress
+Recommenders

Computing a full subgraph

All the package names are obtained with:

julia
all_packages = get_prop.(Ref(g), vertices(g), :name)
+
+Vector{String}:
+ "Colors"
+ "TopologyPreprocessing"
+ "DynamicGrids"
+ "SimpleSDMLayers"
+ "UnderwaterAcoustics"
+ "ColorSchemeTools"
+
+ "ReservoirComputing"
+ "TreeParzen"
+ "GeoStatsImages"
+ "StoppingInterface"
+ "QuantumESPRESSO"
+ "Recommenders"
+ "QuantumESPRESSOExpress"

These next commands build a metagraph, using the package names:

julia
full_graph = MetaDiGraph(length(all_packages))
+
+{1375, 0} directed Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)

Assigning names to the vertices:

julia
for v in vertices(full_graph)
+    set_prop!(full_graph, v, :name, all_packages[v])
+end

Build the full graph:

julia
for v in vertices(full_graph)
+    pkg_name = get_prop(full_graph, v, :name)
+    dependent_packages = find_direct_deps(path_to_general, pkg_paths, pkg_name)
+    for dep_pkg in dependent_packages
+        pkg_idx = findfirst(==(dep_pkg.name), all_packages)
+        # only packages in graph
+        if pkg_idx !== nothing
+            add_edge!(full_graph, pkg_idx, v)
+        end
+    end
+end

It's useful to be able to save and load this graph:

julia
# using Graphs, MetaGraphs
+# save:
+savegraph("examples/full_graph.lg", full_graph))
+
+# load:
+full_graph = loadgraph("examples/full_graph.lg", MGFormat())

All roads lead to home

The code in this next example draws the vertices as an impressionistic point cloud, and uses the a_star() function to find a path from some random package back to Colors.jl.

julia
@drawsvg begin
+    background("black")
+    sethue("white")
+    fontface("BarlowCondensed-Bold")
+    random_package = rand(1:nv(full_graph))
+    astar = a_star(full_graph, random_package, 1)
+    astar_vertices = sort(unique(vcat([src(e) for e in astar], [dst(e) for e in astar])), rev=true)
+    drawgraph(g,
+        edgelist=astar,
+        layout=spring,
+        vertexlabels = (v) -> v  astar_vertices[[begin, end]] && get_prop(full_graph, v, :name),
+        vertexlabeltextcolors = colorant"white",
+        vertexlabelfontsizes = 20,
+        vertexlabelfontfaces = "BarlowCondensed-Bold",
+        vertexshapesizes = .5,
+        vertexstrokecolors = :none)
+    textfit(string(join(get_prop.(Ref(full_graph), astar_vertices, :name), " > ")),
+        BoundingBox(box(boxbottomcenter() + (0, -30), 600, 50)))
+end 800 800

Pagerank

This code computes the pagerank of the graph. It returns a long list of numbers, the centrality score for each vertex.

julia
ranks = pagerank(full_graph)
+
+1375-element Vector{Float64}:
+ 0.15339826572024867
+ 0.00020384989099126913
+ 0.00043081071431843264
+ 0.0002471787754446367
+ 0.0005504809666182096
+ 0.00020384989099126913
+ 0.00020384989099126913
+ 0.00034105802509359976
+ 0.0012284800170342895
+
+ 0.00020384989099126913
+ 0.00020384989099126913
+ 0.00042629607921470863
+ 0.00020384989099126913
+ 0.0002616217369290926
julia
@drawsvg begin
+    background("black")
+    sethue("white")
+    fontface("BarlowCondensed-Bold")
+    ranks = pagerank(full_graph)
+    drawgraph(g,
+        edgelist = [],
+        layout=spring,
+        vertexshapes = :none,
+        vertexlabels = (v) -> ranks[v] > 0.001 && get_prop(full_graph, v, :name),
+        vertexlabelfontsizes = 500ranks,
+        vertexlabeltextcolors = colorant"white")
+end 800 800

The problem with this representation is one of overlapping labels. This isn't an issue we can fix easily in Karnak.

Highly ranked

With some sorting, we can find the highest ranked packages in this part of the ecosystem.

julia
sorted_indices = sort(eachindex(ranks), by=i->ranks[i], rev=true)
+
+1375-element Vector{Int64}:
+   1
+ 543
+ 137
+ 112
+ 144
+ 164
+
+ 259
+ 258
+ 729
+ 730
+ 688
julia
get_prop.(Ref(full_graph), sorted_indices, :name)
+
+1375-element Vector{String}:
+ "Colors"
+ "Plots"
+ "ImageCore"
+ "PlotUtils"
+ "ColorSchemes"
+ "ColorVectorSpace"
+
+ "TopOptMakie"
+ "VTKDataIO"
+ "EFTfitter"
+ "SpmGrids"
+ "ElectronTests"

Most dependencies, most depended on

indegree() returns the number of edges which end at a vertex. For a package, this is another way of seeing how many other packages depend on it.

julia
in_sorted_indices = sort(vertices(full_graph),
+    by = i -> indegree(full_graph, i), rev = true)
+
+1375-element Vector{Int64}:
+ 543
+   1
+  65
+  98
+ 133
+ 137
+
+ 287
+ 743
+ 744
+ 285
+ 688
julia
get_prop.(Ref(full_graph), in_sorted_indices, :name)
+
+1375-element Vector{String}:
+ "Plots"
+ "Colors"
+ "Flux"
+ "Images"
+ "PyPlot"
+ "ImageCore"
+
+ "PolaronMobility"
+ "CineFiles"
+ "MadNLPGraph"
+ "MicroscopyLabels"
+ "ElectronTests"

outdegree() finds the number of edges which start at a vertex.

julia
out_sorted_indices = sort(vertices(full_graph),
+    by = i -> outdegree(full_graph, i), rev=true)
+
+1375-element Vector{Int64}:
+ 372
+  98
+  35
+  24
+ 300
+ 153
+
+ 776
+ 777
+ 778
+ 779
+   1
julia
get_prop.(Ref(full_graph), out_sorted_indices, :name)
+
+1375-element Vector{String}:
+ "StatisticalRethinking"
+ "Images"
+ "Makie"
+ "MakieGallery"
+ "PredictMDExtra"
+ "GLMakie"
+
+ "MimiPAGE2020"
+ "MimiSNEASY"
+ "OptiMimi"
+ "SyntheticNetworks"
+ "Colors"
julia
ranks_betweenness = betweenness_centrality(full_graph)
+
+1375-element Vector{Float64}:
+ 0.0
+ 0.0
+ 3.1186467511475384e-5
+ 5.300816007616213e-7
+ 5.830897608377834e-5
+ 0.0
+
+ 0.0
+ 0.0
+ 4.24065280609297e-6
+ 0.0
+ 1.0601632015232426e-6
julia
sorted_indices_betweenness = sort(vertices(full_graph),
+    by = i -> ranks_betweenness[i], rev=true)
+
+1375-element Vector{Int64}:
+ 144
+  98
+ 112
+ 543
+ 461
+  35
+
+ 562
+ 563
+ 564
+ 565
+   1
julia
get_prop.(Ref(full_graph), sorted_indices_betweenness, :name)
+
+1375-element Vector{String}:
+ "ColorSchemes"
+ "Images"
+ "PlotUtils"
+ "Plots"
+ "ImageIO"
+ "Makie"
+
+ "BridgeDiffEq"
+ "BridgeLandmarks"
+ "FCA"
+ "BEASTDataPrep"
+ "Colors"

Is_cyclic

is_cyclic() returns true if the graph contains a cycle.

julia
is_cyclic(full_graph)
+
+true
+
+for cycle in simplecycles(full_graph)
+    names = get_prop.(Ref(full_graph), cycle, :name)
+    @info names
+end
+
+["ImageCore", "MosaicViews"]
+["Images", "ImageSegmentation"]
+["Makie", "GLMakie"]
+["POMDPPolicies", "BeliefUpdaters", "POMDPModels", "POMDPSimulators"]
+["BeliefUpdaters", "POMDPModels"]
+["BeliefUpdaters", "POMDPModels", "POMDPSimulators"]
+["ReinforcementLearning", "ReinforcementLearningEnvironmentDiscrete"]
+["Modia3D", "Modia"]
+["RasterDataSources", "GeoData"]
+["DSGE", "StateSpaceRoutines"]

For that first cycle: ImageCore.jl's Project.toml file has MosaicViews.jl in its [deps] section, and MosaicViews.jl has ImageCore.jl in the [extras] section of its Project.toml file.

Draw some graphs

Visualizations of graphs are sometimes (often?) better at communicating vague ideas such as complexity and shape. But it's quite difficult to render graphs as rich as these to show the connections clearly while also showing all the labels such that they're easy to read.

The solution may be to print out these graph representations and stick them on a nearby wall, although, with Julia's General Registry changing every day, it would be out of date before the glue dries.

The images above were made with the following code.

julia
@pdf begin
+    background("black")
+    sethue("gold")
+    setline(0.3)
+    drawgraph(g,
+        layout = stress,
+        edgefunction = (k, s, d, f, t) -> begin
+            @layer begin
+                sl = slope(O, t)
+                sethue(HSVA(rescale(sl, 0, , 0, 360), 0.7, 0.7, .9))
+                line(f, t, :stroke)
+            end
+        end,
+        vertexfunction = (v, c) -> begin
+            @layer begin
+                t = get_prop(g, v, :name)
+                te = textextents(t)
+                setopacity(0.7)
+                sethue("grey10")
+                fontsize(3)
+                box(c[v], te[3]/2, te[4]/2, :fill)
+                setopacity(1)
+                sethue("white")
+                text(t, c[v], halign=:center, valign=:middle)
+            end
+        end)
+    @info " finish drawing"
+end 2500 2500 "/tmp/graph-dependencies-colors.pdf"
julia
using ColorSchemes
+
+@svg begin
+    background("black")
+    maxdeg = maximum(degree(full_graph))
+    drawgraph(full_graph,
+        layout = spring,
+        edgelines = 0,
+        vertexfunction = (v, c) -> begin
+            d = degree(full_graph, v)
+            @layer begin
+                sethue(get(ColorSchemes.darkrainbow, rescale(d, 1, maxdeg)))
+                circle(c[v], rescale(d, 1, 270, 2, 20), :fill)
+            end
+            if d > 20
+                fontsize(rescale(d, 1, maxdeg, 5, 20))
+                setcolor("white")
+                textoutlines(all_packages[v], c[v], halign=:center, valign=:bottom, :fill)
+                setline(rescale(d, 1, maxdeg, 0.25, 1))
+                sethue("black")
+                textoutlines(all_packages[v], c[v], halign=:center, valign=:bottom, :stroke)
+            end
+        end)
+end 1200 1200 "/tmp/graph-dependencies-2.svg"
`,143),Y=[y,c,L,a,O,V,C,x];function s(d,Z,Q,w,t,h){return j(),D("div",null,Y)}const F=T(k,[["render",s]]);export{R as __pageData,F as default}; diff --git a/dev/assets/examples.md.CAYbb5Ao.lean.js b/dev/assets/examples.md.CAYbb5Ao.lean.js new file mode 100644 index 0000000..f3e3913 --- /dev/null +++ b/dev/assets/examples.md.CAYbb5Ao.lean.js @@ -0,0 +1,157 @@ +import{_ as T,c as D,o as j,m as M,a as N,a7 as I}from"./chunks/framework.BHs3sUaM.js";const g="/cormullion.github.io/Karnak.jl/dev/assets/ll_tree.nJMR1l_c.svg",z="/cormullion.github.io/Karnak.jl/dev/assets/tubemap.Bhp6-3Q9.png",U="/cormullion.github.io/Karnak.jl/dev/assets/diffusion.D35y6Nd5.gif",E="/cormullion.github.io/Karnak.jl/dev/assets/graph-dependencies-colors.Ch9uTHjW.svg",i="/cormullion.github.io/Karnak.jl/dev/assets/graph-dependencies-colors-2.D-e7l159.svg",S="/cormullion.github.io/Karnak.jl/dev/assets/dep_chain.Bn8ThLyI.svg",A="/cormullion.github.io/Karnak.jl/dev/assets/pagerank.C3B1wbP-.svg",l="/cormullion.github.io/Karnak.jl/dev/assets/graph-dependency-wallart.BFgDM29Z.png",R=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"examples.md","filePath":"examples.md","lastUpdated":null}'),k={name:"examples.md"},y=M("h1",{id:"Examples",tabindex:"-1"},[N("Examples "),M("a",{class:"header-anchor",href:"#Examples","aria-label":'Permalink to "Examples {#Examples}"'},"​")],-1),c=M("p",null,[N("This chapter contains a few examples showing how to use "),M("code",null,"drawgraph()"),N(" to visualize a few graphs.")],-1),L=M("h2",{id:"Julia-type-tree",tabindex:"-1"},[N("Julia type tree "),M("a",{class:"header-anchor",href:"#Julia-type-tree","aria-label":'Permalink to "Julia type tree {#Julia-type-tree}"'},"​")],-1),a=M("p",null,"This example tries to draw a type hierarchy diagram. The Buchheim layout algorithm can take a list of “vertex widths” that are normalized and then used to assign sufficient space for each label.",-1),O=M("details",{closed:""},[M("summary",null,"Code for this figure"),M("p",null,"This code generates the figure below:"),M("div",{class:"language-julia vp-adaptive-theme"},[M("button",{title:"Copy Code",class:"copy"}),M("span",{class:"lang"},"julia"),M("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[M("code",null,[M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Karnak, Graphs, NetworkLayout, InteractiveUtils")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"add_numbered_vertex!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_vertex!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g)")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"function"),M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," build_type_tree"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, T, level"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_numbered_vertex!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," push!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(labels, T)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," t "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," subtypes"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(T)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," if"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," occursin"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"."'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"string"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(t)) "),M("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"# only Base")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," continue")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," build_type_tree"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, t, level "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"+"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 1"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_edge!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g,")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," findfirst"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"isequal"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(T), labels),")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," findfirst"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"isequal"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(t), labels))")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"function"),M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," manhattanline"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pt1, pt2)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," mp "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," midpoint"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pt1, pt2)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," poly"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"([pt1,")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Point"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pt1"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"x, mp"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"y),")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Point"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pt1"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"x, mp"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"y),")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Point"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pt2"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"x, mp"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"y),")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Point"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pt2"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"x, mp"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"y),")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Point"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pt2"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"x, pt2"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"y),")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pt2")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ], "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":stroke"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," circle"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pt2, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"1"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":fill"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"g "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," DiGraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"labels "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," []")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"build_type_tree"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, Number)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"labels "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," map"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(string, labels)")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"dg "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @drawsvg"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," background"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey20"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"15"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontface"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"JuliaMono-Bold"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," setline"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"1"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"gold"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," nodesizes "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Float64[]")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," l "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," eachindex"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(labels)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," tx "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," textextents"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"string"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(labels[l]))")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," labelwidth "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," tx["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"3"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"]")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," push!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(nodesizes, labelwidth)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," drawgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, margin"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"50"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," layout"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"Buchheim"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(nodesize"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"nodesizes),")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexfunction"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(v, c) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," w "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," nodesizes[v]")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," bbox "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," BoundingBox"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"box"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(c[v], w"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"/"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"get_fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()))")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," # box")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @layer"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"white"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," box"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(bbox, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", action"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":fillpreserve"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"gold"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," strokepath"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," #text")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @layer"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"black"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," textfit"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(labels[v], bbox)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgefunction"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(n, s, d, f, t) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," manhattanline"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(f, t)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," )")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 1000"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 550")])])])])],-1),V=I("",13),C=M("details",{closed:""},[M("summary",null,"Code for this figure"),M("p",null,"This code generates the figure below:"),M("div",{class:"language-julia vp-adaptive-theme"},[M("button",{title:"Copy Code",class:"copy"}),M("span",{class:"lang"},"julia"),M("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[M("code",null,[M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Karnak")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Graphs")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," NetworkLayout")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," InteractiveUtils")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Colors")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," TOML")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"using"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Base"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},":"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," active_project")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"# mostly stolen from PkgGraph.jl by tfiers!")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"manifest"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(proj_path) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," replace"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(proj_path, "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"Project.toml"'),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," =>"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},' "Manifest.toml"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"if"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," VERSION"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," ≥"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," v"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"1.7"')]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," packages_in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(manifest) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," TOML"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"parsefile"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(manifest)["),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"deps"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"]")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"else")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," packages_in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(manifest) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," TOML"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"parsefile"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(manifest)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},"packages_in_active_manifest"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"() "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," packages_in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"manifest"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"active_project"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()))")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"function"),M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," depgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgname)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," rootpkg "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," string"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgname)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," packages "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," packages_in_active_manifest"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," if"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," rootpkg "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∉"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," keys"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(packages)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," error"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"""')]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," The given package ("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$pkgname"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},") must be installed in the active project")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," (which is currently `"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"$(active_project())"),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'`)"""'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," deps "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Vector{Pair{String,String}}"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"()")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," add_deps_of"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(name) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkg_info "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," only"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(packages[name])")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," direct_deps "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," get"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkg_info, "),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"deps"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", [])")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dep "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," direct_deps")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," push!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(deps, name "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"=>"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dep)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_deps_of"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(dep)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_deps_of"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(rootpkg)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," return"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," unique!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(deps)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"function"),M("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," build_depgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgname)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dgraphs "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," depgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgname)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," String[]")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (f, t) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dgraphs")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," if"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," f "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∉"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," push!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkglist, f)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," if"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," t "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∉"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," push!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkglist, t)")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," DiGraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"length"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkglist))")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (f, t) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," dgraphs")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," if"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," f "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∈"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"&&"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," t "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"∈"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," pkglist")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," add_edge!"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"findfirst"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"isequal"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(f), pkglist), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"findfirst"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"isequal"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(t), pkglist))")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," return"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g, pkglist")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"g, pkgnames "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," build_depgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"DataFrames"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"}),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"d "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @drawsvg"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," background"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey5"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"gold"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontsize"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," fontface"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"Avenir-Black"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," drawgraph"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," g,")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," margin"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"40"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," layout "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," Stress"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(iterations "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 100"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"),")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgegaps "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 13"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgestrokeweights "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 3"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgecurvature "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 4"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," edgestrokecolors "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"HSB"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"360rand"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(), "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.7"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.8"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},") "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"for"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," i "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"in"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 1"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},":"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"ne"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(g)],")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexlabels "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (vtx) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," string"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgnames[vtx])")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," vertexshapes "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," (v) "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"->"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," tx "),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," textextents"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(pkgnames[v])")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @layer"),M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," begin")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," setopacity"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"0.8"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," sethue"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),M("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"grey80"'),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," box"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(O, "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"1.2"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tx["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"5"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"], "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"1.5"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tx["),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"4"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"], "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"5"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},", "),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":fill"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," end"),M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},",")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," )")]),N(` +`),M("span",{class:"line"},[M("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"end"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 800"),M("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," 700")])])])])],-1),x=I("",143),Y=[y,c,L,a,O,V,C,x];function s(d,Z,Q,w,t,h){return j(),D("div",null,Y)}const F=T(k,[["render",s]]);export{R as __pageData,F as default}; diff --git a/dev/assets/figures/barabasi.svg b/dev/assets/figures/barabasi.svg deleted file mode 100644 index 21556de..0000000 --- a/dev/assets/figures/barabasi.svg +++ /dev/null @@ -1,634 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/assets/figures/karnak-social-media-preview.png b/dev/assets/figures/karnak-social-media-preview.png deleted file mode 100644 index c4c776372774cb5b640e75d4f76d826f84642d65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595120 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

|HU0K&XhPbkC#0^IzF?t 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 Ef`|73{r~^~ diff --git a/dev/assets/figures/graph-dependencies-colors-2.svg b/dev/assets/graph-dependencies-colors-2.D-e7l159.svg similarity index 100% rename from dev/assets/figures/graph-dependencies-colors-2.svg rename to dev/assets/graph-dependencies-colors-2.D-e7l159.svg diff --git a/dev/assets/figures/graph-dependencies-colors.svg b/dev/assets/graph-dependencies-colors.Ch9uTHjW.svg similarity index 100% rename from dev/assets/figures/graph-dependencies-colors.svg rename to dev/assets/graph-dependencies-colors.Ch9uTHjW.svg diff --git a/dev/assets/figures/graph-dependency-wallart.png b/dev/assets/graph-dependency-wallart.BFgDM29Z.png similarity index 100% rename from dev/assets/figures/graph-dependency-wallart.png rename to dev/assets/graph-dependency-wallart.BFgDM29Z.png diff --git a/dev/assets/index.md.DI3GZpLg.js b/dev/assets/index.md.DI3GZpLg.js new file mode 100644 index 0000000..31b9999 --- /dev/null +++ b/dev/assets/index.md.DI3GZpLg.js @@ -0,0 +1,9 @@ +import{_ as M,c as I,o as N,a7 as D}from"./chunks/framework.BHs3sUaM.js";const x=JSON.parse('{"title":"Introduction to Karnak","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),g={name:"index.md"},j=D(`

Introduction to Karnak

![karnak splash image](assets/figures/karnak-social-media-preview.png)

Karnak.jl is a package for drawing graphs and networks. It's built on top of Luxor.jl.

Karnak also uses Graphs.jl for graph construction, and NetworkLayout.jl for graph layout algorithms.

Note

There's a good selection of Julia packages for visualizing graphs:

Quick start

julia
using Karnak
+using Graphs
+using NetworkLayout
+g = barabasi_albert(100, 1)
+@drawsvg begin
+    background("black")
+    sethue("white")
+    drawgraph(g, layout=stress, vertexlabels = 1:nv(g))
+end

Note

Karnak.jl contains just one function: drawgraph(), and re-exports Luxor.jl. So all graphics and drawing functions are from Luxor. See the documentation of Luxor.jl for details.

`,9),z=[j];function T(i,A,S,y,L,w){return N(),I("div",null,z)}const U=M(g,[["render",T]]);export{x as __pageData,U as default}; diff --git a/dev/assets/index.md.DI3GZpLg.lean.js b/dev/assets/index.md.DI3GZpLg.lean.js new file mode 100644 index 0000000..3b7a0ca --- /dev/null +++ b/dev/assets/index.md.DI3GZpLg.lean.js @@ -0,0 +1 @@ +import{_ as M,c as I,o as N,a7 as D}from"./chunks/framework.BHs3sUaM.js";const x=JSON.parse('{"title":"Introduction to Karnak","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),g={name:"index.md"},j=D("",9),z=[j];function T(i,A,S,y,L,w){return N(),I("div",null,z)}const U=M(g,[["render",T]]);export{x as __pageData,U as default}; diff --git a/dev/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 b/dev/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2a687296748f6b8bc8076cd11bde49cd27e4442b GIT binary patch literal 28332 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 HNCp4^t1hY; literal 0 HcmV?d00001 diff --git a/dev/assets/inter-italic-cyrillic.D6csxwjC.woff2 b/dev/assets/inter-italic-cyrillic.D6csxwjC.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f64035158d7e4c01654e3f23dcd6e8299928a28c GIT binary patch literal 17824 zcmV(|K+(TGZYzoV0yihRy3;{L*Bm;yv3xXa1 z1Rw>42nQe=C3zL>7I?PUshK)MG!ta^L3b^d$O{#w!;WOi#caU z9epdi^~z}FXC1zMc;nw||B-~iJKZ7-`H(Kn3lKjZ5N5RqaHof~Lr#JsXW1jml58&> zQGi~|0cnL4zB|P8}0t5&U@c|JdMvNGlmzMw!d_sgsBSwh~ z<3uKERMdzOA;C{wc9u@*KWk~1ZrQFoOIvrA?XoRxnU;2`Lr2EaDbuDiOouv|*;F%- z#gKPJ>8fl=HUf*mFq&P*op#SRB5uMwrI5O=D|BV|t7*jYszMn6_y=vT5wbG)8zDBN(kmfH1b)al)=7_XtiK52#|ESncdAW0QK2HvRY`_;WiO>pz_-Xk zH!T)&YR`MAJa7J@pNA;Ve=XlUuY2Z4Y1bh`Bcza^p&9I}QLUiMj74g|4NyqjXq$hi zG1}j&v`P|}Bqr@5l@eV;qy>fq`v}SgHrfA#@*v!mV~$a+B6D&Jh-sRueXL+`%jr?vt30*Vq&Bs(79VL�!Z1%E;0yxE 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 literal 0 HcmV?d00001 diff --git a/dev/assets/inter-italic-latin-ext.BGcWXLrn.woff2 b/dev/assets/inter-italic-latin-ext.BGcWXLrn.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9c1b9440ed419d4a71ba46b0db3951164f9e10df GIT binary patch literal 63552 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 literal 0 HcmV?d00001 diff --git a/dev/assets/inter-italic-latin.DbsTr1gm.woff2 b/dev/assets/inter-italic-latin.DbsTr1gm.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..01fcf20724f915f68a974ef2fb85f86f3039b1d8 GIT binary patch literal 46048 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 literal 0 HcmV?d00001 diff --git a/dev/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 b/dev/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e4f788ee02bb687bc1d5045483ff0d381e7654e0 GIT binary patch literal 8784 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 G0002QVTgqQ literal 0 HcmV?d00001 diff --git a/dev/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 b/dev/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..28593ccb8a4d849a746f2b970678fe426cb136e8 GIT binary patch literal 26600 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 literal 0 HcmV?d00001 diff --git a/dev/assets/inter-roman-cyrillic.CMhn1ESj.woff2 b/dev/assets/inter-roman-cyrillic.CMhn1ESj.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a20adc161f433a7c4e3d92306301b9228bcf9fb4 GIT binary patch literal 16780 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

KZ;k8ywA} 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 O1{o}0SRMEP0000Yp_Hru literal 0 HcmV?d00001 diff --git a/dev/assets/inter-roman-greek.JvnBZ4YD.woff2 b/dev/assets/inter-roman-greek.JvnBZ4YD.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f790e047daa346583880da2be470431e35aa6054 GIT binary patch literal 21776 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 De!(H( literal 0 HcmV?d00001 diff --git a/dev/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 b/dev/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..715bd903b9b14d22a056f10e6d13b8d7e0acce57 GIT binary patch literal 59608 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

# Karnak.drawgraphMethod.

Draw a graph g using coordinates in layout to fit in a Luxor boundingbox (defaulting to the current drawing's extent).

Returns a vector of Points, the location of the graph vertices as drawn.

Keyword arguments

boundingbox::BoundingBox        graph fits inside this BB
+layout                          Point[] or function
+margin                          default 30
+edgelist                        draw only these edges
+
+vertexfunction(vtx, coords) ->  draw vertices
+edgefunction(edgenumber, edgesrc, edgedest, from, to) -> draw edges

layout

  • the layout method or coordinates to be used. Examples:
layout = squaregrid
+
+layout = shell
+
+layout = vcat(
+    [between(O + (-W / 2, -H / 2), O + (-W / 2, H / 2), i) for i in range(0, 1, length=N)], # left
+    [between(O + (W / 2, H / 2), O + (W / 2, -H / 2), i) for i in range(0, 1, length=N)] # right
+    )
+
+layout = stress
+
+layout = (g) -> spectral(adjacency_matrix(g), dim=2)
+
+layout = shell ∘ adjacency_matrix
+
+layout = (g) -> sfdp(g, Ptype=Float64, dim=2, tol=0.05, C=0.4, K=2)
+
+layout = Shell(nlist=[6:10,]) # inner shell for vertices 6 to 10
+
+layout = squaregrid
+
+the_positions = [(pt.x, pt.y) for pt in randompointarray(BoundingBox(), 50)[1:nv(G)]]
+the_weights = rand(1:20, nv(G), nv(G))
+layout=Stress(initialpos = the_positions,
+    iterations = 30,
+    weights = the_weights)
+
+layout = Stress(iterations = 100, weights = M) # M is matrix of weights
+
+layout = Spring(iterations = 200, initialtemp = 2.5)

Refer to the NetworkLayout.jl documentation for more.

Extended help

All keywords:

plain
 boundingbox                 BoundingBox                                              
+ margin                      Number                                                   
+ layout                      Vector{Point}                                            
+                             function from NetworkLayout.jl                           
+                             f(g::Graph)                                              
+ edgefunction                f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point)
+ vertexfunction              f(vtx::Int, coordinates::Vector{Point})                  
+ edgecurvature               Float64                                                  
+ edgedashpatterns            Vector{Vector}[number]                                   
+                             Vector{Number}                                           
+ edgegaps                    Vector                                                   
+                             Range                                                    
+                             Real
+                             f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point)                                                     
+ edgelabelcolors             Vector{Colorant}                                         
+                             Colorant                                                 
+ edgelabelfontfaces          Vector{Strings}[edgenumber]                              
+                             String                                                   
+                             :none                                                    
+ edgelabelfontsizes          Vector{Number}                                           
+                             Number                                                   
+ edgelabelrotations          Vector{angles}                                           
+                             angle::Float64                                           
+                             f(edgenumber, edges, edgedest, from, to)                 
+ edgelabels                  Vector                                                   
+                             range                                                    
+                             Dict{Int, Int}                                           
+                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
+                               - this function must draw the required text 
+                             :none                                                    
+ edgelines                   Vector{Int}                                              
+                             range                                                    
+                             Int                                                      
+                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point) 
+ edgelist                    Graphs.EdgeIterator                                      
+ edgestrokecolors            Vector{Colorant}[edge::Int]                              
+                             Colorant                                                 
+                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point) 
+ edgestrokeweights           Vector{Number}[vtx]                                      
+                             range                                                    
+                             Real                                                     
+                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point) 
+ vertexfillcolors            Vector{Colorant}                                         
+                             Colorant                                                 
+                             :none                                                    
+                             f(vtx::Int)                                              
+ vertexlabelfontfaces        Vector{Strings}                                          
+                             String                                                   
+ vertexlabelfontsizes        Vector                                                   
+                             range                                                    
+                             Real                                                     
+                             :none
+                             f(vtx::Int, coord::Point[])
+                              - function must return a numeric value for fontsize
+ vertexlabeloffsetangles     Vector                                                   
+                             Range                                                    
+                             Real                                                     
+ vertexlabeloffsetdistances  Vector                                                   
+                             range                                                    
+                             Real                                                     
+ vertexlabelrotations        Vector                                                   
+                             range                                                    
+                             Real                                                     
+                             :none                                                    
+ vertexlabels                Vector{String}                                           
+                             String                                                   
+                             range[vtx::Int]                                          
+                             :none                                                    
+                             f(vtx::Int)
+                             - this function must return a string                                              
+ vertexlabeltextcolors       Vector{Colorant}                                         
+                             Colorant
+                             f(vtx::Int)                                                 
+                             :none                                                    
+ vertexshaperotations        f(vtx::Int)                                              
+                             angle::Float64                                           
+ vertexshapes                Vector of :circle :square :none                          
+                             range[vtx]                                               
+                             :circle :square :none                                    
+                             f(vtx::Int)                                              
+ vertexshapesizes            Vector{Real}                                             
+                             range                                                    
+                             Real                                                     
+                             :none                                                    
+                             f(vtx::Int)                                              
+ vertexstrokecolors          Vector                                                   
+                             Colorant                                                 
+                             :none                                                    
+                             f(vtx::Int)                                              
+ vertexstrokeweights         Vector                                                   
+                             range                                                    
+                             :none                                                    
+                             f(vtx::Int)

source


`,2),t=[l];function i(o,r,c,d,g,u){return a(),s("div",null,t)}const b=n(e,[["render",i]]);export{f as __pageData,b as default}; diff --git a/dev/assets/reference_api.md.Bu8sozjY.lean.js b/dev/assets/reference_api.md.Bu8sozjY.lean.js new file mode 100644 index 0000000..250779e --- /dev/null +++ b/dev/assets/reference_api.md.Bu8sozjY.lean.js @@ -0,0 +1 @@ +import{_ as n,c as s,o as a,a7 as p}from"./chunks/framework.BHs3sUaM.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"reference/api.md","filePath":"reference/api.md","lastUpdated":null}'),e={name:"reference/api.md"},l=p("",2),t=[l];function i(o,r,c,d,g,u){return a(),s("div",null,t)}const b=n(e,[["render",i]]);export{f as __pageData,b as default}; diff --git a/dev/assets/reference_functionindex.md.D9830wBP.js b/dev/assets/reference_functionindex.md.D9830wBP.js new file mode 100644 index 0000000..c1764f6 --- /dev/null +++ b/dev/assets/reference_functionindex.md.D9830wBP.js @@ -0,0 +1 @@ +import{_ as a,c as n,o as t,m as e,a as r}from"./chunks/framework.BHs3sUaM.js";const m=JSON.parse('{"title":"Index","description":"","frontmatter":{},"headers":[],"relativePath":"reference/functionindex.md","filePath":"reference/functionindex.md","lastUpdated":null}'),d={name:"reference/functionindex.md"},o=e("h1",{id:"Index",tabindex:"-1"},[r("Index "),e("a",{class:"header-anchor",href:"#Index","aria-label":'Permalink to "Index {#Index}"'},"​")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"#Karnak.drawgraph-Tuple{Graphs.AbstractGraph}"},[e("code",null,"Karnak.drawgraph")])])],-1),s=[o,c];function i(l,f,p,_,h,u){return t(),n("div",null,s)}const I=a(d,[["render",i]]);export{m as __pageData,I as default}; diff --git a/dev/assets/reference_functionindex.md.D9830wBP.lean.js b/dev/assets/reference_functionindex.md.D9830wBP.lean.js new file mode 100644 index 0000000..c1764f6 --- /dev/null +++ b/dev/assets/reference_functionindex.md.D9830wBP.lean.js @@ -0,0 +1 @@ +import{_ as a,c as n,o as t,m as e,a as r}from"./chunks/framework.BHs3sUaM.js";const m=JSON.parse('{"title":"Index","description":"","frontmatter":{},"headers":[],"relativePath":"reference/functionindex.md","filePath":"reference/functionindex.md","lastUpdated":null}'),d={name:"reference/functionindex.md"},o=e("h1",{id:"Index",tabindex:"-1"},[r("Index "),e("a",{class:"header-anchor",href:"#Index","aria-label":'Permalink to "Index {#Index}"'},"​")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"#Karnak.drawgraph-Tuple{Graphs.AbstractGraph}"},[e("code",null,"Karnak.drawgraph")])])],-1),s=[o,c];function i(l,f,p,_,h,u){return t(),n("div",null,s)}const I=a(d,[["render",i]]);export{m as __pageData,I as default}; diff --git a/dev/assets/figures/stresslayout.gif b/dev/assets/stresslayout.ByjSbAzz.gif similarity index 100% rename from dev/assets/figures/stresslayout.gif rename to dev/assets/stresslayout.ByjSbAzz.gif diff --git a/dev/assets/style.DVN1JnDY.css b/dev/assets/style.DVN1JnDY.css new file mode 100644 index 0000000..1f3f20e --- /dev/null +++ b/dev/assets/style.DVN1JnDY.css @@ -0,0 +1 @@ +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-roman-cyrillic.CMhn1ESj.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-roman-cyrillic-ext.DxP3Awbn.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 var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-roman-greek.JvnBZ4YD.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-roman-greek-ext.D0mI3NpI.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-roman-latin.Bu8hRsVA.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,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 var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-roman-latin-ext.ZlYT4o7i.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-roman-vietnamese.ClpjcLMQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-italic-cyrillic.D6csxwjC.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-italic-cyrillic-ext.5XJwZIOp.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 var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-italic-greek.9J96vYpw.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-italic-greek-ext.CHOfFY1k.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-italic-latin.DbsTr1gm.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,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 var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-italic-latin-ext.BGcWXLrn.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/cormullion.github.io/Karnak.jl/dev/assets/inter-italic-vietnamese.DHNAd7Wr.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}: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: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}: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>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-792811ca]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-792811ca]{padding:96px 32px 168px}}.code[data-v-792811ca]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-792811ca]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-792811ca]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-792811ca]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-792811ca]{padding-top:20px}.link[data-v-792811ca]{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-792811ca]: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-c14bfc45]{display:none}.VPDocAsideOutline.has-outline[data-v-c14bfc45]{display:block}.content[data-v-c14bfc45]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-c14bfc45]{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-c14bfc45]{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-87be45d1]{margin-top:64px}.edit-info[data-v-87be45d1]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-87be45d1]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-87be45d1]{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-87be45d1]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-87be45d1]{margin-right:8px}.prev-next[data-v-87be45d1]{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-87be45d1]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-87be45d1]{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-87be45d1]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-87be45d1]{margin-left:auto;text-align:right}.desc[data-v-87be45d1]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-87be45d1]{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-c43247eb]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-c43247eb]{padding:0 48px}}@media (min-width: 960px){.container[data-v-c43247eb]{width:100%;padding:0 64px}}.vp-doc[data-v-c43247eb] .VPHomeSponsors,.vp-doc[data-v-c43247eb] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-c43247eb] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-c43247eb] .VPHomeSponsors a,.vp-doc[data-v-c43247eb] .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-c9ba27ad]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-c9ba27ad]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-c9ba27ad]{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-c9ba27ad]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-c9ba27ad]{color:var(--vp-c-text-1)}.icon[data-v-c9ba27ad]{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-c9ba27ad]{font-size:14px}.icon[data-v-c9ba27ad]{font-size:16px}}.open>.icon[data-v-c9ba27ad]{transform:rotate(90deg)}.items[data-v-c9ba27ad]{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-c9ba27ad]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-c9ba27ad]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-c9ba27ad]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-c9ba27ad]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-c9ba27ad]{transition:all .2s ease-out}.flyout-leave-active[data-v-c9ba27ad]{transition:all .15s ease-in}.flyout-enter-from[data-v-c9ba27ad],.flyout-leave-to[data-v-c9ba27ad]{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-2781b5e7]{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-2781b5e7],.VPNavBarMenuLink[data-v-2781b5e7]: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: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-b9c8b02d]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar.has-local-nav[data-v-b9c8b02d]{background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar.has-local-nav[data-v-b9c8b02d]{background-color:transparent}.VPNavBar[data-v-b9c8b02d]:not(.has-sidebar):not(.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-b9c8b02d]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-b9c8b02d]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-b9c8b02d]{padding:0}}.container[data-v-b9c8b02d]{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-b9c8b02d],.container>.content[data-v-b9c8b02d]{pointer-events:none}.container[data-v-b9c8b02d] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-b9c8b02d]{max-width:100%}}.title[data-v-b9c8b02d]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-b9c8b02d]{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-b9c8b02d]{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-b9c8b02d]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-b9c8b02d]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-b9c8b02d]{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-b9c8b02d]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-b9c8b02d]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.top) .content-body[data-v-b9c8b02d]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-b9c8b02d]{column-gap:.5rem}}.menu+.translations[data-v-b9c8b02d]:before,.menu+.appearance[data-v-b9c8b02d]:before,.menu+.social-links[data-v-b9c8b02d]:before,.translations+.appearance[data-v-b9c8b02d]:before,.appearance+.social-links[data-v-b9c8b02d]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-b9c8b02d]:before,.translations+.appearance[data-v-b9c8b02d]:before{margin-right:16px}.appearance+.social-links[data-v-b9c8b02d]:before{margin-left:16px}.social-links[data-v-b9c8b02d]{margin-right:-8px}.divider[data-v-b9c8b02d]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-b9c8b02d]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-b9c8b02d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-b9c8b02d]{width:100%;height:1px;transition:background-color .5s}.VPNavBar.has-local-nav .divider-line[data-v-b9c8b02d]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.top) .divider-line[data-v-b9c8b02d]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.top) .divider[data-v-b9c8b02d]{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-d45ba3e8]{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-d45ba3e8]: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-f24171a4]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-f24171a4]{padding-bottom:10px}.item[data-v-f24171a4]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-f24171a4]{cursor:pointer}.indicator[data-v-f24171a4]{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-f24171a4],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-f24171a4],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-f24171a4],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-f24171a4]{background-color:var(--vp-c-brand-1)}.link[data-v-f24171a4]{display:flex;align-items:center;flex-grow:1}.text[data-v-f24171a4]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-f24171a4]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-f24171a4],.VPSidebarItem.level-2 .text[data-v-f24171a4],.VPSidebarItem.level-3 .text[data-v-f24171a4],.VPSidebarItem.level-4 .text[data-v-f24171a4],.VPSidebarItem.level-5 .text[data-v-f24171a4]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-f24171a4],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-f24171a4],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-f24171a4],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-f24171a4],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-f24171a4],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-f24171a4]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-f24171a4],.VPSidebarItem.level-1.has-active>.item>.text[data-v-f24171a4],.VPSidebarItem.level-2.has-active>.item>.text[data-v-f24171a4],.VPSidebarItem.level-3.has-active>.item>.text[data-v-f24171a4],.VPSidebarItem.level-4.has-active>.item>.text[data-v-f24171a4],.VPSidebarItem.level-5.has-active>.item>.text[data-v-f24171a4],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-f24171a4],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-f24171a4],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-f24171a4],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-f24171a4],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-f24171a4],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-f24171a4]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-f24171a4],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-f24171a4],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-f24171a4],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-f24171a4],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-f24171a4],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-f24171a4]{color:var(--vp-c-brand-1)}.caret[data-v-f24171a4]{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-f24171a4]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-f24171a4]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-f24171a4]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-f24171a4]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-f24171a4],.VPSidebarItem.level-2 .items[data-v-f24171a4],.VPSidebarItem.level-3 .items[data-v-f24171a4],.VPSidebarItem.level-4 .items[data-v-f24171a4],.VPSidebarItem.level-5 .items[data-v-f24171a4]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-f24171a4]{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)}@font-face{font-family:JuliaMono-Light;src:local("JuliaMono-Light"),url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Light.woff2)}@font-face{font-family:JuliaMono-Regular;src:local("JuliaMono-Regular"),url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Regular.woff2)}@font-face{font-family:JuliaMono-Bold;src:local("JuliaMono-Bold"),url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Bold.woff2)}@font-face{font-family:JuliaMono-LightItalic;src:local("JuliaMono-LightItalic"),url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-LightItalic.woff2)}@font-face{font-family:JuliaMono-RegularItalic;src:local("JuliaMono-RegularItalic"),url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-RegularItalic.woff2)}@font-face{font-family:JuliaMono-BoldItalic;src:local("JuliaMono-BoldItalic"),url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-BoldItalic.woff2)}.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: "JuliaMono-Light", Menlo, monospace}.mono{font-feature-settings:"calt" 1}: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-f5c68218]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-f5c68218]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-f5c68218]{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-f5c68218]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-f5c68218]{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-f5c68218]{padding:0 8px}}.search-bar[data-v-f5c68218]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-f5c68218]{display:block;font-size:18px}.navigate-icon[data-v-f5c68218]{display:block;font-size:14px}.search-icon[data-v-f5c68218]{margin:8px}@media (max-width: 767px){.search-icon[data-v-f5c68218]{display:none}}.search-input[data-v-f5c68218]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-f5c68218]{padding:6px 4px}}.search-actions[data-v-f5c68218]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-f5c68218]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-f5c68218]{display:none}}.search-actions button[data-v-f5c68218]{padding:8px}.search-actions button[data-v-f5c68218]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-f5c68218]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-f5c68218]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-f5c68218]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-f5c68218]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-f5c68218]{display:none}}.search-keyboard-shortcuts kbd[data-v-f5c68218]{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-f5c68218]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-f5c68218]{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-f5c68218]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-f5c68218]{margin:8px}}.titles[data-v-f5c68218]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-f5c68218]{display:flex;align-items:center;gap:4px}.title.main[data-v-f5c68218]{font-weight:500}.title-icon[data-v-f5c68218]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-f5c68218]{opacity:.5}.result.selected[data-v-f5c68218]{--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-f5c68218]{position:relative}.excerpt[data-v-f5c68218]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-f5c68218]{opacity:1}.excerpt[data-v-f5c68218] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-f5c68218] mark,.excerpt[data-v-f5c68218] 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-f5c68218] .vp-code-group .tabs{display:none}.excerpt[data-v-f5c68218] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-f5c68218]{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-f5c68218]{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-f5c68218],.result.selected .title-icon[data-v-f5c68218]{color:var(--vp-c-brand-1)!important}.no-results[data-v-f5c68218]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-f5c68218]{flex:none} diff --git a/dev/assets/styles.css b/dev/assets/styles.css deleted file mode 100644 index 00d6e61..0000000 --- a/dev/assets/styles.css +++ /dev/null @@ -1,41 +0,0 @@ -@font-face { - font-family: JuliaMono-Light; - src: - local('JuliaMono-Light'), - url("https://github.com/cormullion/juliamono/raw/master/webfonts/JuliaMono-Light.woff2"); -} - -pre, code { - font-family: JuliaMono-Light !important; - font-feature-settings: "calt" 1; -} - -p > a:after { - content: "→"; - font-size: 50%; -} - -.schemename { - font-family: "JuliaMono-Light"; -} - -.swatch { - -} - -.category { - font-size: 0.8em; -} - -html.theme--documenter-dark p > code { - color: #eff !important; -} - -html.theme--documenter-dark li > code { - color: #eff !important; -} - - -html.theme--documenter-dark a > code { - color: #eff !important; -} diff --git a/dev/assets/syntax.md.ZDzSRviH.js b/dev/assets/syntax.md.ZDzSRviH.js new file mode 100644 index 0000000..74e4c20 --- /dev/null +++ b/dev/assets/syntax.md.ZDzSRviH.js @@ -0,0 +1,560 @@ +import{_ as j,c as D,m as M,a as I,a7 as N,o as g}from"./chunks/framework.BHs3sUaM.js";const z="/cormullion.github.io/Karnak.jl/dev/assets/drawgraphkeywords.BY6WQdtw.svg",T="/cormullion.github.io/Karnak.jl/dev/assets/stresslayout.ByjSbAzz.gif",A="/cormullion.github.io/Karnak.jl/dev/assets/karnakmap.B9r8wlPZ.png",i="/cormullion.github.io/Karnak.jl/dev/assets/latextext.D6K4VOzp.svg",y="/cormullion.github.io/Karnak.jl/dev/assets/edgegapanimation.BwI31XKF.gif",d=JSON.parse('{"title":"Syntax","description":"","frontmatter":{},"headers":[],"relativePath":"syntax.md","filePath":"syntax.md","lastUpdated":null}'),S={name:"syntax.md"},O=N(`

Syntax

Overview

Karnak's function for drawing graphs is drawgraph(). This takes a single argument, a Graph, and tries to place representative graphics on the current Luxor drawing.

The default display for graphs is:

  • current Luxor origin, scale and rotation

  • current Luxor color for edges

  • circles for all vertex shapes

  • no vertex labels

  • all edges drawn

julia
@drawsvg begin
+    background("grey10")
+    sethue("darkcyan")
+    g = complete_graph(10)
+    drawgraph(g)
+end 600 300

To control the appearance of the graph, you supply values to the various keyword arguments. Apart from the general keywords BoundingBox, layout, and margin, the keywords can be grouped into two categories:

Most of these keyword arguments accept vectors, ranges, and scalar values, and some accept functions as well.

Here's a contrived (and consequently hideously ugly) example of the type of syntax available:

julia
@drawsvg begin
+background("grey10")
+sethue("purple")
+g = smallgraph(:karate)
+drawgraph(g, layout=stress,
+    vertexshapes = [:square, :circle],
+    vertexfillcolors = (v) -> v  (1, 3, 6) ? colorant"red" : colorant"grey40",
+    vertexstrokecolors = colorant"orange",
+    vertexstrokeweights = range(0.5, 4, length=nv(g)),
+    vertexshapesizes = 2 .* [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
+    vertexlabelfontsizes = 2 .* [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
+    vertexlabels = 1:nv(g),
+    vertexlabelrotations = π/8,
+    vertexlabeltextcolors = distinguishable_colors(10)
+)
+end 600 300

Here, the outdegree for each vertex (the number of edges leaving it) is used to control the size of the vertices and the font sizes too. vertexshapes flip-flops between squares and circles for each vertex shape, but the size of the shape is determined by a vertexshapesizes function, which receives a Vector of sizes, the outdegree values for each vertex. The font sizes of the labels are also set this way. A vertexfillcolors function lets you determine the shape's fill color for specific vertices, whereas the stroke color is always orange, with stroke weights gradually increasing. The colors of the labels are set by the Colors.distinguishable_colors() function passed to vertexlabeltextcolors. And all the labels are rotated, for no particularly good reason.

Usually, if a vector runs out before the vertices and edges have been drawn, some mod1 magic means the values repeat from the beginning again.

Use drawgraph() more than once, if needed, to build up the graph in layers. Remember to use the same layout algorithm.

Summary of keywords

`,17),L=M("table",null,[M("thead",null,[M("tr",null,[M("th",{style:{"text-align":"right"}}),M("th",{style:{"text-align":"left"}}),M("th",{style:{"text-align":"left"}})])]),M("tbody",null,[M("tr",null,[M("td",{style:{"text-align":"right"}},"boundingbox"),M("td",{style:{"text-align":"left"}},"BoundingBox"),M("td",{style:{"text-align":"left"}},"drawing will fit inside this bounding box")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"margin"),M("td",{style:{"text-align":"left"}},"Number"),M("td",{style:{"text-align":"left"}},"margin in points/pixels")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"layout"),M("td",{style:{"text-align":"left"},Point:""},"Vector"),M("td",{style:{"text-align":"left"}},"list of coordinates of each vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"function from NetworkLayout.jl"),M("td",{style:{"text-align":"left"}},"squaregrid, shell, stress, etc")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(g::Graph)"),M("td",{style:{"text-align":"left"}},"(g) -> spectral(adjacency_matrix(g), dim=2)")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgefunction"),M("td",{style:{"text-align":"left"}},"f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}},"function that completely specifies the appearance of every edge. If present, none of the other edge- keyword arguments are used.")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexfunction"),M("td",{style:{"text-align":"left"}},"f(vtx::Int, coordinates::Vector{Point})"),M("td",{style:{"text-align":"left"}},"function that completely specifies the appearance of every vertex. If present, None of the other vertex- keyword arguments will be used.")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgecurvature"),M("td",{style:{"text-align":"left"}},"Float64"),M("td",{style:{"text-align":"left"}},"curviness of edge arrows")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgedashpatterns"),M("td",{style:{"text-align":"left"}},"Vector{Vector}[number]"),M("td",{style:{"text-align":"left"}},"vector of dash patterns")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"},Number:""},"Vector"),M("td",{style:{"text-align":"left"}},"a dash pattern")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgegaps"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}},"gaps from each vertex center to arrow tip")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}},"gaps from every vertex center to arrow tip")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}},"gaps from every vertex center to arrow tip")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabelcolors"),M("td",{style:{"text-align":"left"},Colorant:""},"Vector"),M("td",{style:{"text-align":"left"}},"colors of each vertex's label text")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}},"color of all vertex labels")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabelfontfaces"),M("td",{style:{"text-align":"left"}},"Vector{Strings}[edgenumber]"),M("td",{style:{"text-align":"left"}},"font face for each edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"String"),M("td",{style:{"text-align":"left"}},"font face for every edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabelfontsizes"),M("td",{style:{"text-align":"left"},Number:""},"Vector"),M("td",{style:{"text-align":"left"}},"the font size of each edge label")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Number"),M("td",{style:{"text-align":"left"}},"the font size of every edge label")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabelrotations"),M("td",{style:{"text-align":"left"},angles:""},"Vector"),M("td",{style:{"text-align":"left"}},"rotation of each label")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"angle::Float64"),M("td",{style:{"text-align":"left"}},"rotation of every label")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edges, edgedest, from, to)"),M("td",{style:{"text-align":"left"}},"function returns angle for this edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabels"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"},"Int,":"",Int:""},"Dict"),M("td",{style:{"text-align":"left"}},'(src, dst) => "labeltext"')]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelines"),M("td",{style:{"text-align":"left"},Int:""},"Vector"),M("td",{style:{"text-align":"left"}},"numbers of edges to be drawn")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Int"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelist"),M("td",{style:{"text-align":"left"}},"Graphs.EdgeIterator"),M("td",{style:{"text-align":"left"}},"the edges to be drawn - takes prioity over edgelines")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgestrokecolors"),M("td",{style:{"text-align":"left"}},"Vector{Colorant}[edge::Int]"),M("td",{style:{"text-align":"left"}},"colors for edges")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}},"color for every edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}},"function to set color for this edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgestrokeweights"),M("td",{style:{"text-align":"left"}},"Vector{Number}[vtx]"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}},"function that returns a value for line width")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexfillcolors"),M("td",{style:{"text-align":"left"},Colorant:""},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabelfontfaces"),M("td",{style:{"text-align":"left"},Strings:""},"Vector"),M("td",{style:{"text-align":"left"}},"font face for each vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"String"),M("td",{style:{"text-align":"left"}},"font face for every vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabelfontsizes"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int, coords::Point[])"),M("td",{style:{"text-align":"left"}},"function returns the fontsize for this label")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabeloffsetangles"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabeloffsetdistances"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabelrotations"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabels"),M("td",{style:{"text-align":"left"},String:""},"Vector"),M("td",{style:{"text-align":"left"}},"cycles")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"String"),M("td",{style:{"text-align":"left"}},"used for all vertices")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range[vtx::Int]"),M("td",{style:{"text-align":"left"}},"string of the number in the range, cycles")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}},"function returns a string for the vertex label")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabeltextcolors"),M("td",{style:{"text-align":"left"},Colorant:""},"Vector"),M("td",{style:{"text-align":"left"}},"color for each text label")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}},"color of all text labels")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}},"function returning a colorant")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexshaperotations"),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"angle::Float64"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexshapes"),M("td",{style:{"text-align":"left"}},"Vector of :circle :square :none"),M("td",{style:{"text-align":"left"}},"shapes of each vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range[vtx]"),M("td",{style:{"text-align":"left"}},"draw default shape at this vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":circle :square :none"),M("td",{style:{"text-align":"left"}},"shape of every vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}},"function draws shape at this vertex (which is Point(0, 0))")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexshapesizes"),M("td",{style:{"text-align":"left"},Real:""},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexstrokecolors"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexstrokeweights"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})])])],-1),E=N(`

The BoundingBox

The graphics for the graph are placed to fit inside the current BoundingBox (by default, the drawing), after allowing for the margin (the default is 30). Pass a different BoundingBox to the boundingbox keyword argument to control the graph layout's size.

Layout algorithms

The only clever part of this package is provided by NetworkLayout.jl), which is where you should look for information about the various algorithms that determine where vertices are positioned.

You can choose a layout algorithm, or supply the vertex positions yourself.

The main layout algorithms available are:

  • shell

  • spring

  • stress

  • squaregrid

Here are some formulations which work as keywords in drawgraph():

julia
layout = squaregrid
+
+layout = shell
+
+layout = stress
+
+layout = spectral
+
+layout = (g) -> spectral(adjacency_matrix(g), dim=2)
+
+layout = shell  adjacency_matrix
+
+layout = (g) -> sfdp(g, Ptype=Float64, dim=2, tol=0.05, C=0.4, K=2)
+
+layout = Shell(nlist=[6:10,])
+
+layout = Stress(iterations = 100, weights = M) # M is matrix of weights
+
+layout = Spring(iterations = 200, initialtemp = 2.5)

Alternatively, you can pass a vector of points to the layout keyword argument. Vertices will be placed on these points (vertex 1 on point 1, etc...), rather than at points suggested by the NetworkLayout algorithms. For example, in this next drawing, the two sets of points for a bipartite graph are generated beforehand.

julia
@drawsvg begin
+background("grey10")
+N = 12; H = 250; W = 550
+g = complete_bipartite_graph(N, N)
+pts = vcat(
+    [between(O + (-W / 2, -H / 2), O + (-W / 2, H / 2), i) for i in range(0, 1, length=N)], # left
+    [between(O + (W / 2, H / 2), O + (W / 2, -H / 2), i) for i in range(0, 1, length=N)] # right
+    )
+circle.(pts, 1, :fill)
+drawgraph(g, vertexlabels = 1:nv(g), layout = pts,
+    edgestrokeweights = 0.5,
+    edgestrokecolors = (n, f, t, s, d) -> HSB(rescale(n, 1, ne(g), 0, 360), 0.6, 0.9))
+end 600 300

The calculated positions are returned by the drawgraph() function.

Initial positions for the layout algorithms

Some of the layout algorithms - the Spring and Stress ones, for example - allow you to pass initial vertex positions to be used by the algorithms as starting points. The algorithm will continually adjust them to make a better result. These initial positions should be supplied as xy pairs, rather than Points (which NetworkLayout doesn't know about).

Here's an animation showing how the Stress algorithm gradually improves the layout on each iteration. The initial positions are just the "grid locations" of a Tiler iterator.

julia
using Karnak, Graphs, NetworkLayout, Colors
+
+function frame(scene, framenumber, G)
+
+    background("black")
+    initialpositions = [(pt.x, pt.y) for (pt, n) in Tiler(600, 600, 3, 3)]
+
+    sethue("grey50")
+    circle.(Point.(initialpositions), 3, :fill)
+
+    for i in 1:framenumber
+        setopacity(rescale(i, 1, scene.framerange.stop, 0, 0.6))
+        drawgraph(G,
+            layout=Stress(initialpos=initialpositions, iterations=i),
+            vertexfillcolors=(i == framenumber) ? colorant"gold" : :none
+        )
+    end
+
+end
+
+function main()
+    G = smallgraph(:petersen)
+    amovie = Movie(600, 600, "layout")
+    animate(amovie,
+        Scene(amovie, (s, f) -> frame(s, f, G), 1:60),
+        framerate=10, creategif=true)
+end
+
+main()

The vertexfunction and edgefunction arguments

The two keyword arguments vertexfunction and edgefunction allow you to pass control over the drawing process completely to these two functions.

Note

If you define these functions, all the other vertex/edge keywords are ignored.

vertexfunction = my_vertexfunction(vertex, coordinates)\nedgefunction = my_edgefunction(edgenumber, edgesrc, edgedest, from::Point, to::Point)

These allow you to place graphics at coordinates[vertex], and to draw edges from from to to, using any available tools for drawing.

In the following picture, the vertex positions were passed to a function that placed clipped PNG images on the drawing (using readpng() and placeimage()), and the edges were drawn using sine curves. Refer to the Luxor.jl documentation for more about putting colored things on drawings.

It's also possible, for example, to draw a graph at a vertex point (ie recursive graph drawing) if you use vertexfunction.

julia
g = complete_graph(5)
+
+function rgraph(g, l=1)
+    if l > 4
+        return
+    else
+        drawgraph(g,
+            layout=stress,
+            boundingbox=BoundingBox() / 2l,
+            vertexfunction=(v, c) -> begin
+                @layer begin
+                    sethue(HSB(rescale(v, 1, 4, 0, 360), 0.7, 0.8))
+                    translate(c[v])
+                    #circle(c[v], 5, :fill)
+                    rgraph(g, l + 1)
+                end
+            end,
+            )
+    end
+end
+
+@drawsvg begin
+    background("grey10")
+    sethue("gold")
+    rgraph(g)
+end 800 600

Functions as keyword arguments

The following keyword arguments accept functions:

  • edgelabelrotations

  • edgelabels

  • edgelines

  • edgestrokecolors

  • edgestrokeweights

  • vertexfillcolors

  • vertexlabels

  • vertexlabeltextcolors

  • vertexshaperotations

  • vertexshapes

  • vertexshapesizes

  • vertexstrokecolors

  • vertexstrokeweights

The edge- keywords accept functions with arguments (edgenumber, sourcevertex, destinationvertex, frompoint, topoint). The vertex- keywords accept functions with arguments (vertex).

These functions aren't used if you supply functions to vertexfunction or edgefunction.

Vertex labels and shapes

vertexlabels

Use vertexlabels to choose the text to associate with each vertex. Supply a range, array of strings or numbers, a single string, or a function.

This example draws all vertices, and numbers them from 1 to 6.

Note

In Graphs.jl, vertices are always numbered from 1 to n. If you remove a vertex, vertices are effectively re-numbered.

julia
@drawsvg begin
+    background("grey10")
+    g = smallgraph(:octahedral)
+    sethue("gold")
+    drawgraph(g, layout=stress,
+        vertexlabels = 1:nv(g),
+        vertexshapesizes = 10)
+end 600 300

A function can be passed to vertexlabels to display a vertex; it should accept a single numerical argument, the vertex number, and return a string to display. Labelling all of them isn't always necessary.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:octahedral)
+sethue("skyblue")
+drawgraph(g, layout=stress,
+    vertexlabels = (v) -> v  (1, 4, 6) && string(v, "/6"),
+    vertexshapesizes = 15,
+    vertexlabelfontsizes = 20,
+    )
+end 600 300

Using LaTex in labels

`,44),x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.488ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.293ex",height:"2.108ex",role:"img",focusable:"false",viewBox:"0 -716.3 2781.3 931.8","aria-hidden":"true"},c=N('',1),u=[c],C=M("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"}},[M("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[M("mi",null,"L"),M("mspace",{width:"-.325em"}),M("mpadded",{height:"+.21em",depth:"-.21em",voffset:"+.21em"},[M("mrow",{"data-mjx-texclass":"ORD"},[M("mstyle",{displaystyle:"false",scriptlevel:"1"},[M("mrow",{"data-mjx-texclass":"ORD"},[M("mi",null,"A")])])])]),M("mspace",{width:"-.17em"}),M("mi",null,"T"),M("mspace",{width:"-.14em"}),M("mpadded",{height:"-.5ex",depth:"+.5ex",voffset:"-.5ex"},[M("mrow",{"data-mjx-texclass":"ORD"},[M("mi",null,"E")])]),M("mspace",{width:"-.115em"}),M("mi",null,"X")])],-1),w=M("a",{href:"https://github.com/Kolaru/MathTeXEngine.jl",target:"_blank",rel:"noreferrer"},"MathTeXEngine.jl",-1),Y=M("code",null,"LaTeXString",-1),Q=M("strong",null,"copying",-1),k=N(`
julia
using Karnak, Graphs, NetworkLayout, Colors
+using MathTeXEngine, LaTeXStrings
+
+g = complete_graph(4)
+@svg begin
+    background("grey10")
+    sethue("cyan")
+    fontsize(40)
+    drawgraph(g,
+        margin=30,
+        vertexlabels = [L"v_%$(x)" for x in 1:nv(g)],
+        vertexlabeloffsetdistances = [40, 40, -40, 40],
+        vertexlabeltextcolors = colorant"white"
+    )
+end 600 300

vertexshapes and vertexshapesizes

The default shape for a vertex is a filled circle.

Options for vertexshapes are :circle and :square. With just two in a vector, they will be used alternately.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("gold")
+drawgraph(g, layout=shell, vertexshapes = [:square, :circle])
+end 600 300

vertexshapesizes can set the sizes for the built-in vertex shapes.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("gold")
+drawgraph(g, layout=shell,
+    vertexshapes = [:square, :circle],
+    vertexshapesizes = [15, 5])
+end 600 300
julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("gold")
+drawgraph(g, layout=shell,
+    vertexshapesizes = (v) -> rescale(v, 1, nv(g), 5, 25))
+end 600 300

vertexshaperotations can set the rotations.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("gold")
+drawgraph(g, layout=shell,
+    vertexshapes = :square,
+    vertexshapesizes = [10, 20, 5],
+    vertexshaperotations = [π/2, π/3],
+    )
+end 600 300

To show every other vertex and label, you could use something like this:

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:truncatedcube)
+sethue("darkturquoise")
+drawgraph(g, layout=stress,
+    vertexlabels = ["1", ""],
+    vertexshapesizes = [10, 0])
+end 600 300

When circles and squares don't cut it, supply a function to vertexshapes. The single argument is the vertex number; any graphics you draw will be centered at the vertex location, the current origin, Point(0, 0).

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("hotpink")
+drawgraph(g, layout=shell,
+    vertexshapes = (v) -> star(O, 15, v+2, 0.5, 0, :fill))
+end 600 300

Here, the vertex number is hinted at by the number of points on each star.

In the next example, the sizes of the labels and shapes are determined by the degree of each vertex, supplied in a vector.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:karate)
+sethue("slateblue")
+drawgraph(g, layout=stress,
+    vertexlabels = 1:nv(g),
+    vertexlabelfontsizes = [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
+    vertexshapesizes = [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
+    vertexfillcolors = (v) -> v  (1, 3, 6) && colorant"red",
+    )
+end 600 300

One more example with vertexshapes.

julia
function whiten(col::Color, f=0.5)
+    hsl = convert(HSL, col)
+    h, s, l = hsl.h, hsl.s, hsl.l
+    return convert(RGB, HSL(h, s, f))
+end
+
+function drawball(pos, ballradius, col::Color;
+        fromlum=0.2,
+        tolum=1.0)
+    gsave()
+    translate(pos)
+    for i in ballradius:-0.25:1
+        sethue(whiten(col, rescale(i, ballradius, 0.5, fromlum, tolum)))
+        offset = rescale(i, ballradius, 0.5, 0, -ballradius/2)
+        circle(O + (offset, offset), i, :fill)
+    end
+    grestore()
+end
+
+@drawsvg begin
+background("grey10")
+g = clique_graph(5, 6)
+sethue("yellow")
+setline(0.2)
+drawgraph(g,
+    layout = stress,
+    vertexshapes = (v) -> drawball(O, 25, RGB([Karnak.Luxor.julia_red,Karnak.Luxor.julia_purple, Karnak.Luxor.julia_green][rand(1:end)]...))
+)
+end 600 600

vertexstrokecolors and vertexfillcolors

These keywords accept a Colors.jl colorant, an array of them, or a function that generates a color.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:cubical)
+sethue("darkorange")
+drawgraph(g, layout=stress,
+    vertexshapes = :square,
+    vertexshapesizes =  20,
+    vertexfillcolors = [colorant"red", colorant"blue"],
+    vertexstrokecolors = [colorant"blue", colorant"red"])
+end 600 300

The function should return a Colorant for a vertex:

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:icosahedral)
+sethue("darkorange")
+drawgraph(g, layout=spring,
+    vertexshapes = :circle,
+    vertexshapesizes =  20,
+    vertexstrokeweights = 5,
+    vertexstrokecolors = (v) -> HSB(rescale(v, 1, nv(g), 360, 0), 1, 1),
+    vertexfillcolors = (v)   -> HSB(rescale(v, 1, nv(g), 0, 359), 1, 1),
+    )
+end 600 300

or an array of colors:

julia
@drawsvg begin
+background("grey10")
+sethue("orange")
+g = grid((15, 15))
+drawgraph(g,
+    layout = squaregrid,
+    vertexshapesizes = 15,
+    vertexfillcolors = [RGB([Karnak.Luxor.julia_red, Luxor.julia_green,
+        Luxor.julia_purple][rand(1:end)]...) for i in 1:nv(g)])
+end 600 600

The following keyword arguments operate in a similar way:

  • vertexstrokeweights : Array | Range | :none

  • vertexlabeltextcolors : Array | Range | colorant

  • vertexlabelfontsizes : Array | Range | number

  • vertexlabelfontfaces : Array | string

  • vertexlabelrotations : Array | Range | number

  • vertexlabeloffsetangles : Array | Range | number

  • vertexlabeloffsetdistances : Array | Range | number

It's possible to specify the font faces for vertex labels, but it's difficult to demonstrate when the documentation is built on machines in the cloud with unknown typographical resources. But anyway:

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:pappus)
+sethue("slateblue")
+drawgraph(g,
+    vertexlabels = 1:nv(g),
+    vertexshapes = 0,
+    vertexlabelfontfaces = ["Times-Roman", "Courier", "Helvetica-Bold"],
+    vertexlabelfontsizes = 30)
+end 600 300

Edge options

edgefunction

As with vertexfunction, the edgefunction keyword argument allows you to do anything you like when the edges are drawn, and overrides all other edge- keyword arguments. Here, the calculated coordinates of the graph and a path between two vertices aren't drawn at first, just extracted into vectors for further processing.

julia
@drawsvg begin
+background("black")
+sethue("white")
+g = clique_graph(16, 4)
+
+A = Point[]
+B = Point[]
+
+drawgraph(g, layout=stress,
+    edgefunction = (edgenumber, edgesrc, edgedest, from, to) -> begin
+        push!(A, from),
+        push!(A, to)
+        end,
+    vertexshapes = :none,
+    )
+
+route = a_star(g, 6, 29)
+
+drawgraph(g, layout=stress,
+    edgelist = route,
+    vertexshapes = :none,
+    edgefunction = (edgenumber, edgesrc, edgedest, from, to) -> begin
+        push!(B, from),
+        push!(B, to)
+        end)
+
+setlinejoin("bevel")
+setline(0.25)
+
+sethue("grey60")
+@layer begin
+    poly(A, :stroke)
+end
+
+sethue("gold")
+setline(4)
+@layer begin
+    poly(B, :stroke)
+end
+circle.(B[[begin, end]], 5, :fill)
+end 600 400

Note

This keyword overrides the other edge- keywords.

edgelist and edgelines

A Graphs.EdgeIterator supplied to edgelist makes only the specified edges available for drawing. Otherwise, control which edges are to be drawn by supplying numbers (or a function) to edgelines.

julia
@drawsvg begin
+background("grey10")
+sethue("orange")
+g = grid((15, 15))
+drawgraph(g,
+    layout = stress,
+    vertexshapes = :none,
+    edgelines = rand(1:ne(g), 30)
+)
+end 600 300

edgelist is useful for drawing paths - a sequence of edges. For example, if you use a_star() to find the shortest path between two vertices, you can draw the edges with this keyword. It's useful to draw the graph twice, once with all edges, once with selected edges.

julia
@drawsvg begin
+background("grey10")
+g = grid((15, 15))
+
+astar = a_star(g, 1, nv(g))
+
+sethue("orange")
+drawgraph(g,
+    layout = stress,
+    vertexshapes = :none)
+
+sethue("cyan")
+drawgraph(g,
+    layout = stress,
+    vertexshapes = :none,
+    edgestrokeweights = 5,
+    edgelist = astar)
+end 600 300

For more interesting arrows for edges, you can use arrows, and you can also define functions to create all kinds of graphical deatil:

julia
gd = DiGraph()
+add_vertices!(gd, 4)
+add_edge!(gd, 1, 2)
+add_edge!(gd, 1, 3)
+add_edge!(gd, 2, 3)
+add_edge!(gd, 1, 4) # vertex 1 to vertex 4
+add_edge!(gd, 4, 1) # vertex 4 to vertex 1
+
+@drawsvg begin
+    background("grey10")
+    sethue("thistle1")
+    drawgraph(gd, vertexlabels = [1, 2, 3, 4],
+        edgefunction = (n, s, d, f, t) -> begin
+            arrow(f, t, [10, 10],
+            decoration = 0.75,
+            decorate = () -> begin
+                sethue(HSB(60n, 0.7, 0.8))
+                ngon(O, 10, 3, 0, :fill)
+            end,
+            arrowheadfunction= (f, t, a) -> ()
+            )
+        end
+    )
+end 600 300
julia
@drawsvg begin
+background("grey10")
+g = star_graph(12)
+fontsize(20)
+sethue("slateblue")
+drawgraph(g,
+    layout=spring,
+    vertexshapes = 0,
+    vertexlabels = 1:nv(g),
+    vertexlabelfontsizes = 12,
+    edgestrokecolors = distinguishable_colors(ne(g)),
+    edgelines = (k, s, d, f, t) ->
+        arrow(f, between(f, t, .95), [20, -45],
+            linewidth = 5,
+            arrowheadlength = 15,
+            arrowheadangle = π/7,
+            decorate = () -> begin
+                    sethue("purple")
+                    circle(O, 15, :fill)
+                    sethue("white")
+                    text(string(k), angle = -getrotation(), halign = :center, valign=:middle)
+                end,
+            decoration = .7))
+end 600 400

Edge labels

Use edgelabels, edgelabelcolors, edgelabelrotations, etc. to control the appearance of the labels alongside edges.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:dodecahedral)
+g = complete_graph(5)
+sethue("orange")
+fontsize(20)
+drawgraph(g, layout=stress,
+    vertexshapes = :none,
+    vertexlabels = "vertex",
+    vertexlabeltextcolors = colorant"cyan",
+    edgelabels = ["edge"],
+    edgestrokecolors = colorant"orange",
+    edgelabelcolors = colorant"pink",
+    )
+end 600 500

edgelabels can also be a dictionary, where the keys are tuples: (src, dst), and the values are the text labels.

julia
g = complete_graph(5)
+edgelabeldict = Dict()
+n = nv(g)
+for i in 1:n
+    for j in 1:n
+        edgelabeldict[(i, j)] = "($i, $j)"
+    end
+end
+
+@drawsvg begin
+    background("grey10")
+    drawgraph(g, layout=stress,
+        vertexshapes = :circle,
+        vertexlabels = 1:n,
+        edgestrokecolors = colorant"orange",
+        edgelabelcolors = colorant"white",
+        edgelabels = edgelabeldict)
+end 600 350

The edgelabels keyword argument can also accept a function with five arguments: edgenumber, source, destination, from and to. In this example, the graphical distances between the two vertex positions provide the annotations for each edge.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:dodecahedral)
+g = complete_graph(5)
+fontsize(20)
+drawgraph(g, layout=stress,
+    vertexshapes = :none,
+    edgestrokecolors = colorant"orange",
+    edgelabels = (k, src, dest, f, t) -> begin
+        @layer begin
+            sethue("white")
+            θ = slope(f, t)
+            text(string(round(distance(f, t), digits=1)),
+                midpoint(f, t),
+                angle=θ,
+                halign=:center)
+        end
+    end)
+end 600 500

The more code you're prepared to write, the more elaborate your labels can be:

julia
sources      = [1,2,1]
+destinations = [2,3,3]
+weights      = [0.5, 0.8, 2.0]
+g = SimpleWeightedGraph(sources, destinations, weights)
+@drawsvg begin
+background("grey10")
+sethue("gold")
+drawgraph(g,
+    vertexlabels = 1:nv(g),
+    vertexshapesizes = 20,
+    vertexlabelfontsizes = 30,
+    edgecurvature = 10,
+    edgegaps = 25,
+    edgelabels = (edgenumber, edgesrc, edgedest, from, to) -> begin
+        @layer begin
+            sethue("black")
+            box(midpoint(from, to), 50, 30, :fill)
+        end
+        box(midpoint(from, to), 50, 30, :stroke)
+        fontsize(16)
+        text(string(get_weight(g, edgesrc, edgedest)),
+            midpoint(from, to),
+            halign=:center,
+            valign=:middle)
+    end)
+end 600 300

For directed weighted graphs, each edge can have two weights. This makes it slightly more difficult to draw the labels automatically. You could write an edge labelling function that calculates the slope of the edge and positions the label accordingly:

julia
function f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
+    sl = slope(from, to)
+    wt = g.weights[edgesrc, edgedest]
+    if sl > π
+        label(string(wt), :e, midpoint(from, to))
+    else
+        label(string(wt), :w, midpoint(from, to))
+    end
+end 
+
+...
+    edgelabels=f,
+...

edgelist

This example draws the graph more than once; once with all the edges, once with only the edges in edgelist, where edgelist is the path from vertex 15 to vertex 17, drawn in a pale translucent yellow, and once to draw the vertices on the path "X marks the spot" cyan-colored crosses.

julia
@drawsvg begin
+    background("grey10")
+    g = smallgraph(:karate)
+    sethue("slateblue")
+
+    drawgraph(g, layout = stress,
+        vertexlabels = 1:nv(g),
+        vertexshapes = :circle,
+        vertexshapesizes = 10,
+        vertexlabelfontsizes = 10)
+
+    astar = a_star(g, 15, 17)
+
+    drawgraph(g,
+        layout=stress,
+        vertexshapes = :none,
+        edgelist = astar,
+        edgestrokecolors=RGBA(1, 1, 0, 0.5),
+        edgestrokeweights=10)
+
+    drawgraph(g,
+        layout=stress,
+        edgelines=0,
+        vertexshapes = (v) -> v  src.(astar) && polycross(O, 20, 4, 0.5, π/4, :fill),
+             vertexfillcolors = (v) -> v  src.(astar) && colorant"cyan"
+        )
+end 600 600

edgecurvature and edgegaps

The edgecurvature keyword determines the curvature of the edges.

The edgegaps keyword sets the distances between the ends of the edges and the vertex positions.

Units, as everywhere in Karnak, are points/pixels (1 point is 0.3527mm).

julia
g = grid((3, 3))
+
+# add some self-loops
+for e in edges(g)
+    add_edge!(g, src(e), src(e))
+    add_edge!(g, dst(e), dst(e))
+end
+
+@drawsvg begin
+    background("grey10")
+    sethue("white")
+    for c in 1:10
+        drawgraph(g,
+            margin=70,
+            vertexshapes = :none,
+            edgegaps = 3c,
+            edgecurvature = 3c,
+            edgestrokecolors = HSB(36c, .8, .8),
+            edgestrokeweights = 0.5,
+            layout=squaregrid)
+    end
+end 600 500

The value for the edge gap (either as supplied in vector, range, or scalar form, or calculated and returned by a function) applies to both ends of an edge. This is a minor issue for cases where, for example, the vertex shapes are different sizes, and the gaps need to be calculated independently for each end of a single edge. You'll have to calculate and draw the edges yourself, as shown in this unnecessarily animated example:

julia
using Karnak, Graphs, Colors
+function frame(scene, framenumber, g, vertexsizes)
+    background("black")
+    eased_n = scene.easingfunction(framenumber - scene.framerange.start,
+        0, 1, (scene.framerange.stop + 1) - scene.framerange.start)
+    a = 10 + vertexsizes[1] * abs(sin(0 + rescale(eased_n, 0, 1, 0, π)))
+    b = 10 + vertexsizes[2] * abs(sin(π / 4 + rescale(eased_n, 0, 1, 0, π)))
+    c = 10 + vertexsizes[3] * abs(sin(π / 3 + rescale(eased_n, 0, 1, 0, π)))
+    d = 10 + vertexsizes[4] * abs(sin(rescale(eased_n, 0, 1, 0, π)))
+    newvertexsizes = [a, b, c, d]
+    sethue("gold")
+    drawgraph(g,
+        margin=80,
+        vertexshapesizes=newvertexsizes,
+        vertexfillcolors=[c for c in Colors.JULIA_LOGO_COLORS |> values],
+        edgefunction=(args...) -> begin
+            edgenumber, edgesrc, edgedest, from, to = args
+            d = distance(from, to)
+            startpoint = between(from, to, newvertexsizes[edgesrc] / d)
+            endpoint = between(from, to, 1 - newvertexsizes[edgedest] / d)
+            arrow(startpoint, endpoint)
+        end)
+end
+
+function main()
+    g = complete_digraph(4)
+    vertexsizes = [20, 35, 50, 60]
+    amovie = Movie(800, 600, "gap animation")
+    animate(amovie,
+        Scene(amovie, (s, f) -> frame(s, f, g, vertexsizes), 1:40),
+        framerate=15,
+        creategif=true,
+        pathname=joinpath(dirname(dirname(pathof(Karnak))) * "/docs/src/assets/figures/edgegapanimation.gif"))
+end
+
+main()

edgestrokecolors and edgestrokeweights

julia
g = barbell_graph(3, 3)
+@drawsvg begin
+    background("grey10")
+    fontsize(30)
+    sethue("white")
+    drawgraph(g,
+        layout=stress,
+        edgelabels = 1:ne(g),
+        edgecurvature = 10,
+        edgestrokeweights = 2 * (1:ne(g)),
+        edgelabelcolors = colorant"white",
+        edgestrokecolors= (n, from, to, edgesrc, edgedest) -> HSB(rescale(n, 1, ne(g), 0, 359), .8, .8))
+end 600 500

edgedashpatterns

Line dashes work the same as in Luxor.jl, ie they're numbers in an array, with line length following by space length. If you want to alternate between dash patterns, supply an array of pattern arrays.

julia
g = grid((5, 5))
+@drawsvg begin
+    background("grey10")
+    sethue("white")
+    drawgraph(g,
+        layout=squaregrid,
+        edgestrokeweights = 5,
+        edgelabels = (edgenumber, edgesrc, edgedest, from::Point, to::Point) ->
+            begin
+                labeltext = ["a", "b", "c"][mod1(edgenumber, end)]
+                label(labeltext, :se, midpoint(from, to), offset=5)
+            end,
+        edgedashpatterns = [[20, 10, 1, 10], [20, 10], [0.5, 10]],
+        edgelabelfontsizes = 20,
+        vertexshapesizes = 2,
+        edgestrokecolors=(edgenumber, from, to, src, dst) ->
+            HSB(rescale(edgenumber, 1, ne(g), 0, 359), .8, .8)
+          )
+end 600 400
`,96);function l(a,b,s,m,t,Z){return g(),D("div",null,[O,L,E,M("p",null,[I("If you want to use "),M("mjx-container",x,[(g(),D("svg",U,u)),C]),I(" in vertex labels, you can load "),w,I(" to parse the "),Y,I("s. Make sure the fonts in the MathTexEngine package are also available to the Operating System's font routines (so "),Q,I(" them to your local font folder is probably required).")]),k])}const B=j(S,[["render",l]]);export{d as __pageData,B as default}; diff --git a/dev/assets/syntax.md.ZDzSRviH.lean.js b/dev/assets/syntax.md.ZDzSRviH.lean.js new file mode 100644 index 0000000..bb642f6 --- /dev/null +++ b/dev/assets/syntax.md.ZDzSRviH.lean.js @@ -0,0 +1 @@ +import{_ as j,c as D,m as M,a as I,a7 as N,o as g}from"./chunks/framework.BHs3sUaM.js";const z="/cormullion.github.io/Karnak.jl/dev/assets/drawgraphkeywords.BY6WQdtw.svg",T="/cormullion.github.io/Karnak.jl/dev/assets/stresslayout.ByjSbAzz.gif",A="/cormullion.github.io/Karnak.jl/dev/assets/karnakmap.B9r8wlPZ.png",i="/cormullion.github.io/Karnak.jl/dev/assets/latextext.D6K4VOzp.svg",y="/cormullion.github.io/Karnak.jl/dev/assets/edgegapanimation.BwI31XKF.gif",d=JSON.parse('{"title":"Syntax","description":"","frontmatter":{},"headers":[],"relativePath":"syntax.md","filePath":"syntax.md","lastUpdated":null}'),S={name:"syntax.md"},O=N("",17),L=M("table",null,[M("thead",null,[M("tr",null,[M("th",{style:{"text-align":"right"}}),M("th",{style:{"text-align":"left"}}),M("th",{style:{"text-align":"left"}})])]),M("tbody",null,[M("tr",null,[M("td",{style:{"text-align":"right"}},"boundingbox"),M("td",{style:{"text-align":"left"}},"BoundingBox"),M("td",{style:{"text-align":"left"}},"drawing will fit inside this bounding box")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"margin"),M("td",{style:{"text-align":"left"}},"Number"),M("td",{style:{"text-align":"left"}},"margin in points/pixels")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"layout"),M("td",{style:{"text-align":"left"},Point:""},"Vector"),M("td",{style:{"text-align":"left"}},"list of coordinates of each vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"function from NetworkLayout.jl"),M("td",{style:{"text-align":"left"}},"squaregrid, shell, stress, etc")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(g::Graph)"),M("td",{style:{"text-align":"left"}},"(g) -> spectral(adjacency_matrix(g), dim=2)")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgefunction"),M("td",{style:{"text-align":"left"}},"f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}},"function that completely specifies the appearance of every edge. If present, none of the other edge- keyword arguments are used.")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexfunction"),M("td",{style:{"text-align":"left"}},"f(vtx::Int, coordinates::Vector{Point})"),M("td",{style:{"text-align":"left"}},"function that completely specifies the appearance of every vertex. If present, None of the other vertex- keyword arguments will be used.")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgecurvature"),M("td",{style:{"text-align":"left"}},"Float64"),M("td",{style:{"text-align":"left"}},"curviness of edge arrows")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgedashpatterns"),M("td",{style:{"text-align":"left"}},"Vector{Vector}[number]"),M("td",{style:{"text-align":"left"}},"vector of dash patterns")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"},Number:""},"Vector"),M("td",{style:{"text-align":"left"}},"a dash pattern")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgegaps"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}},"gaps from each vertex center to arrow tip")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}},"gaps from every vertex center to arrow tip")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}},"gaps from every vertex center to arrow tip")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabelcolors"),M("td",{style:{"text-align":"left"},Colorant:""},"Vector"),M("td",{style:{"text-align":"left"}},"colors of each vertex's label text")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}},"color of all vertex labels")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabelfontfaces"),M("td",{style:{"text-align":"left"}},"Vector{Strings}[edgenumber]"),M("td",{style:{"text-align":"left"}},"font face for each edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"String"),M("td",{style:{"text-align":"left"}},"font face for every edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabelfontsizes"),M("td",{style:{"text-align":"left"},Number:""},"Vector"),M("td",{style:{"text-align":"left"}},"the font size of each edge label")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Number"),M("td",{style:{"text-align":"left"}},"the font size of every edge label")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabelrotations"),M("td",{style:{"text-align":"left"},angles:""},"Vector"),M("td",{style:{"text-align":"left"}},"rotation of each label")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"angle::Float64"),M("td",{style:{"text-align":"left"}},"rotation of every label")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edges, edgedest, from, to)"),M("td",{style:{"text-align":"left"}},"function returns angle for this edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelabels"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"},"Int,":"",Int:""},"Dict"),M("td",{style:{"text-align":"left"}},'(src, dst) => "labeltext"')]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelines"),M("td",{style:{"text-align":"left"},Int:""},"Vector"),M("td",{style:{"text-align":"left"}},"numbers of edges to be drawn")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Int"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgelist"),M("td",{style:{"text-align":"left"}},"Graphs.EdgeIterator"),M("td",{style:{"text-align":"left"}},"the edges to be drawn - takes prioity over edgelines")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgestrokecolors"),M("td",{style:{"text-align":"left"}},"Vector{Colorant}[edge::Int]"),M("td",{style:{"text-align":"left"}},"colors for edges")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}},"color for every edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}},"function to set color for this edge")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"edgestrokeweights"),M("td",{style:{"text-align":"left"}},"Vector{Number}[vtx]"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(edgenumber, edgesrc, edgedest, from::Point, to::Point)"),M("td",{style:{"text-align":"left"}},"function that returns a value for line width")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexfillcolors"),M("td",{style:{"text-align":"left"},Colorant:""},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabelfontfaces"),M("td",{style:{"text-align":"left"},Strings:""},"Vector"),M("td",{style:{"text-align":"left"}},"font face for each vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"String"),M("td",{style:{"text-align":"left"}},"font face for every vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabelfontsizes"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int, coords::Point[])"),M("td",{style:{"text-align":"left"}},"function returns the fontsize for this label")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabeloffsetangles"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabeloffsetdistances"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabelrotations"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabels"),M("td",{style:{"text-align":"left"},String:""},"Vector"),M("td",{style:{"text-align":"left"}},"cycles")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"String"),M("td",{style:{"text-align":"left"}},"used for all vertices")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range[vtx::Int]"),M("td",{style:{"text-align":"left"}},"string of the number in the range, cycles")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}},"function returns a string for the vertex label")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexlabeltextcolors"),M("td",{style:{"text-align":"left"},Colorant:""},"Vector"),M("td",{style:{"text-align":"left"}},"color for each text label")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}},"color of all text labels")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}},"function returning a colorant")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexshaperotations"),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"angle::Float64"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexshapes"),M("td",{style:{"text-align":"left"}},"Vector of :circle :square :none"),M("td",{style:{"text-align":"left"}},"shapes of each vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range[vtx]"),M("td",{style:{"text-align":"left"}},"draw default shape at this vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":circle :square :none"),M("td",{style:{"text-align":"left"}},"shape of every vertex")]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}},"function draws shape at this vertex (which is Point(0, 0))")]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexshapesizes"),M("td",{style:{"text-align":"left"},Real:""},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Real"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexstrokecolors"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"Colorant"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"f(vtx::Int)"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}},"vertexstrokeweights"),M("td",{style:{"text-align":"left"}},"Vector"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},"range"),M("td",{style:{"text-align":"left"}})]),M("tr",null,[M("td",{style:{"text-align":"right"}}),M("td",{style:{"text-align":"left"}},":none"),M("td",{style:{"text-align":"left"}})])])],-1),E=N("",44),x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.488ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.293ex",height:"2.108ex",role:"img",focusable:"false",viewBox:"0 -716.3 2781.3 931.8","aria-hidden":"true"},c=N("",1),u=[c],C=M("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"}},[M("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[M("mi",null,"L"),M("mspace",{width:"-.325em"}),M("mpadded",{height:"+.21em",depth:"-.21em",voffset:"+.21em"},[M("mrow",{"data-mjx-texclass":"ORD"},[M("mstyle",{displaystyle:"false",scriptlevel:"1"},[M("mrow",{"data-mjx-texclass":"ORD"},[M("mi",null,"A")])])])]),M("mspace",{width:"-.17em"}),M("mi",null,"T"),M("mspace",{width:"-.14em"}),M("mpadded",{height:"-.5ex",depth:"+.5ex",voffset:"-.5ex"},[M("mrow",{"data-mjx-texclass":"ORD"},[M("mi",null,"E")])]),M("mspace",{width:"-.115em"}),M("mi",null,"X")])],-1),w=M("a",{href:"https://github.com/Kolaru/MathTeXEngine.jl",target:"_blank",rel:"noreferrer"},"MathTeXEngine.jl",-1),Y=M("code",null,"LaTeXString",-1),Q=M("strong",null,"copying",-1),k=N("",96);function l(a,b,s,m,t,Z){return g(),D("div",null,[O,L,E,M("p",null,[I("If you want to use "),M("mjx-container",x,[(g(),D("svg",U,u)),C]),I(" in vertex labels, you can load "),w,I(" to parse the "),Y,I("s. Make sure the fonts in the MathTexEngine package are also available to the Operating System's font routines (so "),Q,I(" them to your local font folder is probably required).")]),k])}const B=j(S,[["render",l]]);export{d as __pageData,B as default}; diff --git a/dev/assets/themes/documenter-dark.css b/dev/assets/themes/documenter-dark.css deleted file mode 100644 index 691b83a..0000000 --- a/dev/assets/themes/documenter-dark.css +++ /dev/null @@ -1,7 +0,0 @@ -html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus,html.theme--documenter-dark .pagination-ellipsis:focus,html.theme--documenter-dark .file-cta:focus,html.theme--documenter-dark .file-name:focus,html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .button:focus,html.theme--documenter-dark .is-focused.pagination-previous,html.theme--documenter-dark .is-focused.pagination-next,html.theme--documenter-dark .is-focused.pagination-link,html.theme--documenter-dark .is-focused.pagination-ellipsis,html.theme--documenter-dark .is-focused.file-cta,html.theme--documenter-dark .is-focused.file-name,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-focused.button,html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active,html.theme--documenter-dark .pagination-ellipsis:active,html.theme--documenter-dark .file-cta:active,html.theme--documenter-dark .file-name:active,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .button:active,html.theme--documenter-dark .is-active.pagination-previous,html.theme--documenter-dark .is-active.pagination-next,html.theme--documenter-dark .is-active.pagination-link,html.theme--documenter-dark .is-active.pagination-ellipsis,html.theme--documenter-dark .is-active.file-cta,html.theme--documenter-dark .is-active.file-name,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .is-active.button{outline:none}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-ellipsis[disabled],html.theme--documenter-dark .file-cta[disabled],html.theme--documenter-dark .file-name[disabled],html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--documenter-dark .pagination-next,html.theme--documenter-dark fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--documenter-dark .pagination-link,html.theme--documenter-dark fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--documenter-dark .file-cta,html.theme--documenter-dark fieldset[disabled] .file-cta,fieldset[disabled] html.theme--documenter-dark .file-name,html.theme--documenter-dark fieldset[disabled] .file-name,fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark fieldset[disabled] .select select,html.theme--documenter-dark .select fieldset[disabled] select,html.theme--documenter-dark fieldset[disabled] .textarea,html.theme--documenter-dark fieldset[disabled] .input,html.theme--documenter-dark fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--documenter-dark .button,html.theme--documenter-dark fieldset[disabled] .button{cursor:not-allowed}html.theme--documenter-dark .tabs,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .breadcrumb,html.theme--documenter-dark .file,html.theme--documenter-dark .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after,html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--documenter-dark .admonition:not(:last-child),html.theme--documenter-dark .tabs:not(:last-child),html.theme--documenter-dark .pagination:not(:last-child),html.theme--documenter-dark .message:not(:last-child),html.theme--documenter-dark .level:not(:last-child),html.theme--documenter-dark .breadcrumb:not(:last-child),html.theme--documenter-dark .block:not(:last-child),html.theme--documenter-dark .title:not(:last-child),html.theme--documenter-dark .subtitle:not(:last-child),html.theme--documenter-dark .table-container:not(:last-child),html.theme--documenter-dark .table:not(:last-child),html.theme--documenter-dark .progress:not(:last-child),html.theme--documenter-dark .notification:not(:last-child),html.theme--documenter-dark .content:not(:last-child),html.theme--documenter-dark .box:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before,html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before{height:2px;width:50%}html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{height:50%;width:2px}html.theme--documenter-dark .modal-close:hover,html.theme--documenter-dark .delete:hover,html.theme--documenter-dark .modal-close:focus,html.theme--documenter-dark .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--documenter-dark .modal-close:active,html.theme--documenter-dark .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--documenter-dark .is-small.modal-close,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--documenter-dark .is-small.delete,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--documenter-dark .is-medium.modal-close,html.theme--documenter-dark .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--documenter-dark .is-large.modal-close,html.theme--documenter-dark .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--documenter-dark .control.is-loading::after,html.theme--documenter-dark .select.is-loading::after,html.theme--documenter-dark .loader,html.theme--documenter-dark .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdee0;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--documenter-dark .hero-video,html.theme--documenter-dark .modal-background,html.theme--documenter-dark .modal,html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--documenter-dark .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#ecf0f1 !important}a.has-text-light:hover,a.has-text-light:focus{color:#cfd9db !important}.has-background-light{background-color:#ecf0f1 !important}.has-text-dark{color:#282f2f !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#111414 !important}.has-background-dark{background-color:#282f2f !important}.has-text-primary{color:#375a7f !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#28415b !important}.has-background-primary{background-color:#375a7f !important}.has-text-primary-light{color:#f1f5f9 !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#cddbe9 !important}.has-background-primary-light{background-color:#f1f5f9 !important}.has-text-primary-dark{color:#4d7eb2 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#7198c1 !important}.has-background-primary-dark{background-color:#4d7eb2 !important}.has-text-link{color:#1abc9c !important}a.has-text-link:hover,a.has-text-link:focus{color:#148f77 !important}.has-background-link{background-color:#1abc9c !important}.has-text-link-light{color:#edfdf9 !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c0f6ec !important}.has-background-link-light{background-color:#edfdf9 !important}.has-text-link-dark{color:#15987e !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#1bc5a4 !important}.has-background-link-dark{background-color:#15987e !important}.has-text-info{color:#024c7d !important}a.has-text-info:hover,a.has-text-info:focus{color:#012d4b !important}.has-background-info{background-color:#024c7d !important}.has-text-info-light{color:#ebf7ff !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#b9e2fe !important}.has-background-info-light{background-color:#ebf7ff !important}.has-text-info-dark{color:#0e9dfb !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#40b1fc !important}.has-background-info-dark{background-color:#0e9dfb !important}.has-text-success{color:#008438 !important}a.has-text-success:hover,a.has-text-success:focus{color:#005122 !important}.has-background-success{background-color:#008438 !important}.has-text-success-light{color:#ebfff3 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#b8ffd6 !important}.has-background-success-light{background-color:#ebfff3 !important}.has-text-success-dark{color:#00eb64 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#1fff7e !important}.has-background-success-dark{background-color:#00eb64 !important}.has-text-warning{color:#ad8100 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#7a5b00 !important}.has-background-warning{background-color:#ad8100 !important}.has-text-warning-light{color:#fffaeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#ffedb8 !important}.has-background-warning-light{background-color:#fffaeb !important}.has-text-warning-dark{color:#d19c00 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#ffbf05 !important}.has-background-warning-dark{background-color:#d19c00 !important}.has-text-danger{color:#9e1b0d !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#6f1309 !important}.has-background-danger{background-color:#9e1b0d !important}.has-text-danger-light{color:#fdeeec !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#fac3bd !important}.has-background-danger-light{background-color:#fdeeec !important}.has-text-danger-dark{color:#ec311d !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#f05c4c !important}.has-background-danger-dark{background-color:#ec311d !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#282f2f !important}.has-background-grey-darker{background-color:#282f2f !important}.has-text-grey-dark{color:#343c3d !important}.has-background-grey-dark{background-color:#343c3d !important}.has-text-grey{color:#5e6d6f !important}.has-background-grey{background-color:#5e6d6f !important}.has-text-grey-light{color:#8c9b9d !important}.has-background-grey-light{background-color:#8c9b9d !important}.has-text-grey-lighter{color:#dbdee0 !important}.has-background-grey-lighter{background-color:#dbdee0 !important}.has-text-white-ter{color:#ecf0f1 !important}.has-background-white-ter{background-color:#ecf0f1 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--documenter-dark{/*! - Theme: a11y-dark - Author: @ericwbailey - Maintainer: @ericwbailey - - Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css -*/}html.theme--documenter-dark html{background-color:#1f2424;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark article,html.theme--documenter-dark aside,html.theme--documenter-dark figure,html.theme--documenter-dark footer,html.theme--documenter-dark header,html.theme--documenter-dark hgroup,html.theme--documenter-dark section{display:block}html.theme--documenter-dark body,html.theme--documenter-dark button,html.theme--documenter-dark input,html.theme--documenter-dark optgroup,html.theme--documenter-dark select,html.theme--documenter-dark textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--documenter-dark code,html.theme--documenter-dark pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark body{color:#fff;font-size:1em;font-weight:400;line-height:1.5}html.theme--documenter-dark a{color:#1abc9c;cursor:pointer;text-decoration:none}html.theme--documenter-dark a strong{color:currentColor}html.theme--documenter-dark a:hover{color:#1dd2af}html.theme--documenter-dark code{background-color:rgba(255,255,255,0.05);color:#ececec;font-size:.875em;font-weight:normal;padding:.1em}html.theme--documenter-dark hr{background-color:#282f2f;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--documenter-dark img{height:auto;max-width:100%}html.theme--documenter-dark input[type="checkbox"],html.theme--documenter-dark input[type="radio"]{vertical-align:baseline}html.theme--documenter-dark small{font-size:.875em}html.theme--documenter-dark span{font-style:inherit;font-weight:inherit}html.theme--documenter-dark strong{color:#f2f2f2;font-weight:700}html.theme--documenter-dark fieldset{border:none}html.theme--documenter-dark pre{-webkit-overflow-scrolling:touch;background-color:#282f2f;color:#fff;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--documenter-dark pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--documenter-dark table td,html.theme--documenter-dark table th{vertical-align:top}html.theme--documenter-dark table td:not([align]),html.theme--documenter-dark table th:not([align]){text-align:inherit}html.theme--documenter-dark table th{color:#f2f2f2}html.theme--documenter-dark .box{background-color:#343c3d;border-radius:8px;box-shadow:none;color:#fff;display:block;padding:1.25rem}html.theme--documenter-dark a.box:hover,html.theme--documenter-dark a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #1abc9c}html.theme--documenter-dark a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #1abc9c}html.theme--documenter-dark .button{background-color:#282f2f;border-color:#4c5759;border-width:1px;color:#375a7f;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--documenter-dark .button strong{color:inherit}html.theme--documenter-dark .button .icon,html.theme--documenter-dark .button .icon.is-small,html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--documenter-dark .button .icon.is-medium,html.theme--documenter-dark .button .icon.is-large{height:1.5em;width:1.5em}html.theme--documenter-dark .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--documenter-dark .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--documenter-dark .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--documenter-dark .button:hover,html.theme--documenter-dark .button.is-hovered{border-color:#8c9b9d;color:#f2f2f2}html.theme--documenter-dark .button:focus,html.theme--documenter-dark .button.is-focused{border-color:#8c9b9d;color:#17a689}html.theme--documenter-dark .button:focus:not(:active),html.theme--documenter-dark .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button:active,html.theme--documenter-dark .button.is-active{border-color:#343c3d;color:#f2f2f2}html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;color:#fff;text-decoration:underline}html.theme--documenter-dark .button.is-text:hover,html.theme--documenter-dark .button.is-text.is-hovered,html.theme--documenter-dark .button.is-text:focus,html.theme--documenter-dark .button.is-text.is-focused{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .button.is-text:active,html.theme--documenter-dark .button.is-text.is-active{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .button.is-text[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#1abc9c;text-decoration:none}html.theme--documenter-dark .button.is-ghost:hover,html.theme--documenter-dark .button.is-ghost.is-hovered{color:#1abc9c;text-decoration:underline}html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:hover,html.theme--documenter-dark .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus,html.theme--documenter-dark .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus:not(:active),html.theme--documenter-dark .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--documenter-dark .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-white.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:hover,html.theme--documenter-dark .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus,html.theme--documenter-dark .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus:not(:active),html.theme--documenter-dark .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:hover,html.theme--documenter-dark .button.is-light.is-hovered{background-color:#e5eaec;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:focus,html.theme--documenter-dark .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:focus:not(:active),html.theme--documenter-dark .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light.is-active{background-color:#dde4e6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:#ecf0f1;box-shadow:none}html.theme--documenter-dark .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-outlined.is-focused{background-color:#ecf0f1;border-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-dark,html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover,html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered{background-color:#232829;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:focus:not(:active),html.theme--documenter-dark .content kbd.button:focus:not(:active),html.theme--documenter-dark .button.is-dark.is-focused:not(:active),html.theme--documenter-dark .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active{background-color:#1d2122;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark[disabled],html.theme--documenter-dark .content kbd.button[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark,fieldset[disabled] html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:#282f2f;box-shadow:none}html.theme--documenter-dark .button.is-dark.is-inverted,html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#fff;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted:hover,html.theme--documenter-dark .content kbd.button.is-inverted:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-dark.is-inverted[disabled],html.theme--documenter-dark .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-loading::after,html.theme--documenter-dark .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-dark.is-outlined,html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-outlined.is-focused{background-color:#282f2f;border-color:#282f2f;color:#fff}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-dark.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-primary,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus:not(:active),html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--documenter-dark .button.is-primary.is-focused:not(:active),html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary[disabled],html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;box-shadow:none}html.theme--documenter-dark .button.is-primary.is-inverted,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--documenter-dark .button.is-primary.is-inverted[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-primary.is-light,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink{background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .button.is-primary.is-light:hover,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-light.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e8eef5;border-color:transparent;color:#4d7eb2}html.theme--documenter-dark .button.is-primary.is-light:active,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-light.is-active,html.theme--documenter-dark .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#dfe8f1;border-color:transparent;color:#4d7eb2}html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:hover,html.theme--documenter-dark .button.is-link.is-hovered{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus,html.theme--documenter-dark .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus:not(:active),html.theme--documenter-dark .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link.is-active{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:#1abc9c;box-shadow:none}html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-outlined.is-focused{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-link.is-light{background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .button.is-link.is-light:hover,html.theme--documenter-dark .button.is-link.is-light.is-hovered{background-color:#e2fbf6;border-color:transparent;color:#15987e}html.theme--documenter-dark .button.is-link.is-light:active,html.theme--documenter-dark .button.is-link.is-light.is-active{background-color:#d7f9f3;border-color:transparent;color:#15987e}html.theme--documenter-dark .button.is-info{background-color:#024c7d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:hover,html.theme--documenter-dark .button.is-info.is-hovered{background-color:#024470;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus,html.theme--documenter-dark .button.is-info.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus:not(:active),html.theme--documenter-dark .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info.is-active{background-color:#023d64;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info{background-color:#024c7d;border-color:#024c7d;box-shadow:none}html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#024c7d}html.theme--documenter-dark .button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#024c7d;color:#024c7d}html.theme--documenter-dark .button.is-info.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-outlined.is-focused{background-color:#024c7d;border-color:#024c7d;color:#fff}html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #024c7d #024c7d !important}html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#024c7d;box-shadow:none;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #024c7d #024c7d !important}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-info.is-light{background-color:#ebf7ff;color:#0e9dfb}html.theme--documenter-dark .button.is-info.is-light:hover,html.theme--documenter-dark .button.is-info.is-light.is-hovered{background-color:#def2fe;border-color:transparent;color:#0e9dfb}html.theme--documenter-dark .button.is-info.is-light:active,html.theme--documenter-dark .button.is-info.is-light.is-active{background-color:#d2edfe;border-color:transparent;color:#0e9dfb}html.theme--documenter-dark .button.is-success{background-color:#008438;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:hover,html.theme--documenter-dark .button.is-success.is-hovered{background-color:#073;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus,html.theme--documenter-dark .button.is-success.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus:not(:active),html.theme--documenter-dark .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success.is-active{background-color:#006b2d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success{background-color:#008438;border-color:#008438;box-shadow:none}html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#008438}html.theme--documenter-dark .button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#008438;color:#008438}html.theme--documenter-dark .button.is-success.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-outlined.is-focused{background-color:#008438;border-color:#008438;color:#fff}html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #008438 #008438 !important}html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#008438;box-shadow:none;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #008438 #008438 !important}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-success.is-light{background-color:#ebfff3;color:#00eb64}html.theme--documenter-dark .button.is-success.is-light:hover,html.theme--documenter-dark .button.is-success.is-light.is-hovered{background-color:#deffec;border-color:transparent;color:#00eb64}html.theme--documenter-dark .button.is-success.is-light:active,html.theme--documenter-dark .button.is-success.is-light.is-active{background-color:#d1ffe5;border-color:transparent;color:#00eb64}html.theme--documenter-dark .button.is-warning{background-color:#ad8100;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:hover,html.theme--documenter-dark .button.is-warning.is-hovered{background-color:#a07700;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:focus,html.theme--documenter-dark .button.is-warning.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:focus:not(:active),html.theme--documenter-dark .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning.is-active{background-color:#946e00;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning{background-color:#ad8100;border-color:#ad8100;box-shadow:none}html.theme--documenter-dark .button.is-warning.is-inverted{background-color:#fff;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#ad8100;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-outlined.is-focused{background-color:#ad8100;border-color:#ad8100;color:#fff}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ad8100 #ad8100 !important}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#ad8100;box-shadow:none;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused{background-color:#fff;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ad8100 #ad8100 !important}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-warning.is-light{background-color:#fffaeb;color:#d19c00}html.theme--documenter-dark .button.is-warning.is-light:hover,html.theme--documenter-dark .button.is-warning.is-light.is-hovered{background-color:#fff7de;border-color:transparent;color:#d19c00}html.theme--documenter-dark .button.is-warning.is-light:active,html.theme--documenter-dark .button.is-warning.is-light.is-active{background-color:#fff3d1;border-color:transparent;color:#d19c00}html.theme--documenter-dark .button.is-danger{background-color:#9e1b0d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:hover,html.theme--documenter-dark .button.is-danger.is-hovered{background-color:#92190c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus,html.theme--documenter-dark .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus:not(:active),html.theme--documenter-dark .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger.is-active{background-color:#86170b;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger{background-color:#9e1b0d;border-color:#9e1b0d;box-shadow:none}html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#9e1b0d;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-outlined.is-focused{background-color:#9e1b0d;border-color:#9e1b0d;color:#fff}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #9e1b0d #9e1b0d !important}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#9e1b0d;box-shadow:none;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #9e1b0d #9e1b0d !important}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-danger.is-light{background-color:#fdeeec;color:#ec311d}html.theme--documenter-dark .button.is-danger.is-light:hover,html.theme--documenter-dark .button.is-danger.is-light.is-hovered{background-color:#fce3e0;border-color:transparent;color:#ec311d}html.theme--documenter-dark .button.is-danger.is-light:active,html.theme--documenter-dark .button.is-danger.is-light.is-active{background-color:#fcd8d5;border-color:transparent;color:#ec311d}html.theme--documenter-dark .button.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--documenter-dark .button.is-small:not(.is-rounded),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--documenter-dark .button.is-normal{font-size:1rem}html.theme--documenter-dark .button.is-medium{font-size:1.25rem}html.theme--documenter-dark .button.is-large{font-size:1.5rem}html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .button{background-color:#8c9b9d;border-color:#5e6d6f;box-shadow:none;opacity:.5}html.theme--documenter-dark .button.is-fullwidth{display:flex;width:100%}html.theme--documenter-dark .button.is-loading{color:transparent !important;pointer-events:none}html.theme--documenter-dark .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--documenter-dark .button.is-static{background-color:#282f2f;border-color:#5e6d6f;color:#dbdee0;box-shadow:none;pointer-events:none}html.theme--documenter-dark .button.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--documenter-dark .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .buttons .button{margin-bottom:0.5rem}html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--documenter-dark .buttons:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .buttons:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--documenter-dark .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--documenter-dark .buttons.has-addons .button:last-child{margin-right:0}html.theme--documenter-dark .buttons.has-addons .button:hover,html.theme--documenter-dark .buttons.has-addons .button.is-hovered{z-index:2}html.theme--documenter-dark .buttons.has-addons .button:focus,html.theme--documenter-dark .buttons.has-addons .button.is-focused,html.theme--documenter-dark .buttons.has-addons .button:active,html.theme--documenter-dark .buttons.has-addons .button.is-active,html.theme--documenter-dark .buttons.has-addons .button.is-selected{z-index:3}html.theme--documenter-dark .buttons.has-addons .button:focus:hover,html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover,html.theme--documenter-dark .buttons.has-addons .button:active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--documenter-dark .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .buttons.is-centered{justify-content:center}html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--documenter-dark .buttons.is-right{justify-content:flex-end}html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .button.is-responsive.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--documenter-dark .button.is-responsive,html.theme--documenter-dark .button.is-responsive.is-normal{font-size:.65625rem}html.theme--documenter-dark .button.is-responsive.is-medium{font-size:.75rem}html.theme--documenter-dark .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .button.is-responsive.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--documenter-dark .button.is-responsive,html.theme--documenter-dark .button.is-responsive.is-normal{font-size:.75rem}html.theme--documenter-dark .button.is-responsive.is-medium{font-size:1rem}html.theme--documenter-dark .button.is-responsive.is-large{font-size:1.25rem}}html.theme--documenter-dark .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--documenter-dark .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--documenter-dark .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--documenter-dark .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--documenter-dark .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--documenter-dark .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--documenter-dark .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--documenter-dark .content li+li{margin-top:0.25em}html.theme--documenter-dark .content p:not(:last-child),html.theme--documenter-dark .content dl:not(:last-child),html.theme--documenter-dark .content ol:not(:last-child),html.theme--documenter-dark .content ul:not(:last-child),html.theme--documenter-dark .content blockquote:not(:last-child),html.theme--documenter-dark .content pre:not(:last-child),html.theme--documenter-dark .content table:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .content h1,html.theme--documenter-dark .content h2,html.theme--documenter-dark .content h3,html.theme--documenter-dark .content h4,html.theme--documenter-dark .content h5,html.theme--documenter-dark .content h6{color:#f2f2f2;font-weight:600;line-height:1.125}html.theme--documenter-dark .content h1{font-size:2em;margin-bottom:0.5em}html.theme--documenter-dark .content h1:not(:first-child){margin-top:1em}html.theme--documenter-dark .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--documenter-dark .content h2:not(:first-child){margin-top:1.1428em}html.theme--documenter-dark .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--documenter-dark .content h3:not(:first-child){margin-top:1.3333em}html.theme--documenter-dark .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--documenter-dark .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--documenter-dark .content h6{font-size:1em;margin-bottom:1em}html.theme--documenter-dark .content blockquote{background-color:#282f2f;border-left:5px solid #5e6d6f;padding:1.25em 1.5em}html.theme--documenter-dark .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ol:not([type]){list-style-type:decimal}html.theme--documenter-dark .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--documenter-dark .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--documenter-dark .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--documenter-dark .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--documenter-dark .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--documenter-dark .content ul ul ul{list-style-type:square}html.theme--documenter-dark .content dd{margin-left:2em}html.theme--documenter-dark .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--documenter-dark .content figure:not(:first-child){margin-top:2em}html.theme--documenter-dark .content figure:not(:last-child){margin-bottom:2em}html.theme--documenter-dark .content figure img{display:inline-block}html.theme--documenter-dark .content figure figcaption{font-style:italic}html.theme--documenter-dark .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--documenter-dark .content sup,html.theme--documenter-dark .content sub{font-size:75%}html.theme--documenter-dark .content table{width:100%}html.theme--documenter-dark .content table td,html.theme--documenter-dark .content table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .content table th{color:#f2f2f2}html.theme--documenter-dark .content table th:not([align]){text-align:inherit}html.theme--documenter-dark .content table thead td,html.theme--documenter-dark .content table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .content table tfoot td,html.theme--documenter-dark .content table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .content table tbody tr:last-child td,html.theme--documenter-dark .content table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .content .tabs li+li{margin-top:0}html.theme--documenter-dark .content.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--documenter-dark .content.is-normal{font-size:1rem}html.theme--documenter-dark .content.is-medium{font-size:1.25rem}html.theme--documenter-dark .content.is-large{font-size:1.5rem}html.theme--documenter-dark .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--documenter-dark .icon.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--documenter-dark .icon.is-medium{height:2rem;width:2rem}html.theme--documenter-dark .icon.is-large{height:3rem;width:3rem}html.theme--documenter-dark .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--documenter-dark .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--documenter-dark .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--documenter-dark div.icon-text{display:flex}html.theme--documenter-dark .image,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--documenter-dark .image img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--documenter-dark .image img.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--documenter-dark .image.is-fullwidth,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--documenter-dark .image.is-square,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--documenter-dark .image.is-1by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--documenter-dark .image.is-5by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--documenter-dark .image.is-4by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--documenter-dark .image.is-3by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--documenter-dark .image.is-5by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--documenter-dark .image.is-16by9,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--documenter-dark .image.is-2by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--documenter-dark .image.is-3by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--documenter-dark .image.is-4by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--documenter-dark .image.is-3by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--documenter-dark .image.is-2by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--documenter-dark .image.is-3by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--documenter-dark .image.is-9by16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--documenter-dark .image.is-1by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--documenter-dark .image.is-1by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--documenter-dark .image.is-16x16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--documenter-dark .image.is-24x24,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--documenter-dark .image.is-32x32,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--documenter-dark .image.is-48x48,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--documenter-dark .image.is-64x64,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--documenter-dark .image.is-96x96,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--documenter-dark .image.is-128x128,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--documenter-dark .notification{background-color:#282f2f;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .notification strong{color:currentColor}html.theme--documenter-dark .notification code,html.theme--documenter-dark .notification pre{background:#fff}html.theme--documenter-dark .notification pre code{background:transparent}html.theme--documenter-dark .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--documenter-dark .notification .title,html.theme--documenter-dark .notification .subtitle,html.theme--documenter-dark .notification .content{color:currentColor}html.theme--documenter-dark .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .notification.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .notification.is-dark,html.theme--documenter-dark .content kbd.notification{background-color:#282f2f;color:#fff}html.theme--documenter-dark .notification.is-primary,html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .notification.is-primary.is-light,html.theme--documenter-dark .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .notification.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .notification.is-link.is-light{background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .notification.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .notification.is-info.is-light{background-color:#ebf7ff;color:#0e9dfb}html.theme--documenter-dark .notification.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .notification.is-success.is-light{background-color:#ebfff3;color:#00eb64}html.theme--documenter-dark .notification.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .notification.is-warning.is-light{background-color:#fffaeb;color:#d19c00}html.theme--documenter-dark .notification.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .notification.is-danger.is-light{background-color:#fdeeec;color:#ec311d}html.theme--documenter-dark .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--documenter-dark .progress::-webkit-progress-bar{background-color:#343c3d}html.theme--documenter-dark .progress::-webkit-progress-value{background-color:#dbdee0}html.theme--documenter-dark .progress::-moz-progress-bar{background-color:#dbdee0}html.theme--documenter-dark .progress::-ms-fill{background-color:#dbdee0;border:none}html.theme--documenter-dark .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--documenter-dark .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--documenter-dark .progress.is-white::-ms-fill{background-color:#fff}html.theme--documenter-dark .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-light::-webkit-progress-value{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-moz-progress-bar{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-ms-fill{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light:indeterminate{background-image:linear-gradient(to right, #ecf0f1 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-dark::-webkit-progress-value,html.theme--documenter-dark .content kbd.progress::-webkit-progress-value{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-moz-progress-bar,html.theme--documenter-dark .content kbd.progress::-moz-progress-bar{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-ms-fill,html.theme--documenter-dark .content kbd.progress::-ms-fill{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark:indeterminate,html.theme--documenter-dark .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #282f2f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-primary::-webkit-progress-value,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-moz-progress-bar,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-ms-fill,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary:indeterminate,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #375a7f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-link::-webkit-progress-value{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-moz-progress-bar{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-ms-fill{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link:indeterminate{background-image:linear-gradient(to right, #1abc9c 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-info::-webkit-progress-value{background-color:#024c7d}html.theme--documenter-dark .progress.is-info::-moz-progress-bar{background-color:#024c7d}html.theme--documenter-dark .progress.is-info::-ms-fill{background-color:#024c7d}html.theme--documenter-dark .progress.is-info:indeterminate{background-image:linear-gradient(to right, #024c7d 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-success::-webkit-progress-value{background-color:#008438}html.theme--documenter-dark .progress.is-success::-moz-progress-bar{background-color:#008438}html.theme--documenter-dark .progress.is-success::-ms-fill{background-color:#008438}html.theme--documenter-dark .progress.is-success:indeterminate{background-image:linear-gradient(to right, #008438 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-warning::-webkit-progress-value{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning::-moz-progress-bar{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning::-ms-fill{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ad8100 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-danger::-webkit-progress-value{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger::-moz-progress-bar{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger::-ms-fill{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #9e1b0d 30%, #343c3d 30%)}html.theme--documenter-dark .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#343c3d;background-image:linear-gradient(to right, #fff 30%, #343c3d 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-ms-fill{animation-name:none}html.theme--documenter-dark .progress.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--documenter-dark .progress.is-medium{height:1.25rem}html.theme--documenter-dark .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--documenter-dark .table{background-color:#343c3d;color:#fff}html.theme--documenter-dark .table td,html.theme--documenter-dark .table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .table td.is-white,html.theme--documenter-dark .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .table td.is-black,html.theme--documenter-dark .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .table td.is-light,html.theme--documenter-dark .table th.is-light{background-color:#ecf0f1;border-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .table td.is-dark,html.theme--documenter-dark .table th.is-dark{background-color:#282f2f;border-color:#282f2f;color:#fff}html.theme--documenter-dark .table td.is-primary,html.theme--documenter-dark .table th.is-primary{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-link,html.theme--documenter-dark .table th.is-link{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .table td.is-info,html.theme--documenter-dark .table th.is-info{background-color:#024c7d;border-color:#024c7d;color:#fff}html.theme--documenter-dark .table td.is-success,html.theme--documenter-dark .table th.is-success{background-color:#008438;border-color:#008438;color:#fff}html.theme--documenter-dark .table td.is-warning,html.theme--documenter-dark .table th.is-warning{background-color:#ad8100;border-color:#ad8100;color:#fff}html.theme--documenter-dark .table td.is-danger,html.theme--documenter-dark .table th.is-danger{background-color:#9e1b0d;border-color:#9e1b0d;color:#fff}html.theme--documenter-dark .table td.is-narrow,html.theme--documenter-dark .table th.is-narrow{white-space:nowrap;width:1%}html.theme--documenter-dark .table td.is-selected,html.theme--documenter-dark .table th.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-selected a,html.theme--documenter-dark .table td.is-selected strong,html.theme--documenter-dark .table th.is-selected a,html.theme--documenter-dark .table th.is-selected strong{color:currentColor}html.theme--documenter-dark .table td.is-vcentered,html.theme--documenter-dark .table th.is-vcentered{vertical-align:middle}html.theme--documenter-dark .table th{color:#f2f2f2}html.theme--documenter-dark .table th:not([align]){text-align:left}html.theme--documenter-dark .table tr.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table tr.is-selected a,html.theme--documenter-dark .table tr.is-selected strong{color:currentColor}html.theme--documenter-dark .table tr.is-selected td,html.theme--documenter-dark .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--documenter-dark .table thead{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table thead td,html.theme--documenter-dark .table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .table tfoot{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tfoot td,html.theme--documenter-dark .table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .table tbody{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tbody tr:last-child td,html.theme--documenter-dark .table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .table.is-bordered td,html.theme--documenter-dark .table.is-bordered th{border-width:1px}html.theme--documenter-dark .table.is-bordered tr:last-child td,html.theme--documenter-dark .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--documenter-dark .table.is-fullwidth{width:100%}html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#2d3435}html.theme--documenter-dark .table.is-narrow td,html.theme--documenter-dark .table.is-narrow th{padding:0.25em 0.5em}html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#282f2f}html.theme--documenter-dark .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--documenter-dark .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .tags .tag,html.theme--documenter-dark .tags .content kbd,html.theme--documenter-dark .content .tags kbd,html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--documenter-dark .tags .tag:not(:last-child),html.theme--documenter-dark .tags .content kbd:not(:last-child),html.theme--documenter-dark .content .tags kbd:not(:last-child),html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--documenter-dark .tags:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .tags:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--documenter-dark .tags.is-centered{justify-content:center}html.theme--documenter-dark .tags.is-centered .tag,html.theme--documenter-dark .tags.is-centered .content kbd,html.theme--documenter-dark .content .tags.is-centered kbd,html.theme--documenter-dark .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--documenter-dark .tags.is-right{justify-content:flex-end}html.theme--documenter-dark .tags.is-right .tag:not(:first-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--documenter-dark .tags.is-right .tag:not(:last-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--documenter-dark .tags.has-addons .tag,html.theme--documenter-dark .tags.has-addons .content kbd,html.theme--documenter-dark .content .tags.has-addons kbd,html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--documenter-dark .tags.has-addons .tag:not(:first-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--documenter-dark .tags.has-addons .tag:not(:last-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--documenter-dark .tag:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#282f2f;border-radius:.4em;color:#fff;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--documenter-dark .tag:not(body) .delete,html.theme--documenter-dark .content kbd:not(body) .delete,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--documenter-dark .tag.is-white:not(body),html.theme--documenter-dark .content kbd.is-white:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .tag.is-black:not(body),html.theme--documenter-dark .content kbd.is-black:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .tag.is-light:not(body),html.theme--documenter-dark .content kbd.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .tag.is-dark:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--documenter-dark .content .docstring>section>kbd:not(body){background-color:#282f2f;color:#fff}html.theme--documenter-dark .tag.is-primary:not(body),html.theme--documenter-dark .content kbd.is-primary:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){background-color:#375a7f;color:#fff}html.theme--documenter-dark .tag.is-primary.is-light:not(body),html.theme--documenter-dark .content kbd.is-primary.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .tag.is-link:not(body),html.theme--documenter-dark .content kbd.is-link:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#1abc9c;color:#fff}html.theme--documenter-dark .tag.is-link.is-light:not(body),html.theme--documenter-dark .content kbd.is-link.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .tag.is-info:not(body),html.theme--documenter-dark .content kbd.is-info:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#024c7d;color:#fff}html.theme--documenter-dark .tag.is-info.is-light:not(body),html.theme--documenter-dark .content kbd.is-info.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#ebf7ff;color:#0e9dfb}html.theme--documenter-dark .tag.is-success:not(body),html.theme--documenter-dark .content kbd.is-success:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#008438;color:#fff}html.theme--documenter-dark .tag.is-success.is-light:not(body),html.theme--documenter-dark .content kbd.is-success.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#ebfff3;color:#00eb64}html.theme--documenter-dark .tag.is-warning:not(body),html.theme--documenter-dark .content kbd.is-warning:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ad8100;color:#fff}html.theme--documenter-dark .tag.is-warning.is-light:not(body),html.theme--documenter-dark .content kbd.is-warning.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fffaeb;color:#d19c00}html.theme--documenter-dark .tag.is-danger:not(body),html.theme--documenter-dark .content kbd.is-danger:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .tag.is-danger.is-light:not(body),html.theme--documenter-dark .content kbd.is-danger.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fdeeec;color:#ec311d}html.theme--documenter-dark .tag.is-normal:not(body),html.theme--documenter-dark .content kbd.is-normal:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--documenter-dark .tag.is-medium:not(body),html.theme--documenter-dark .content kbd.is-medium:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--documenter-dark .tag.is-large:not(body),html.theme--documenter-dark .content kbd.is-large:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child,html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--documenter-dark .tag.is-delete:not(body),html.theme--documenter-dark .content kbd.is-delete:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--documenter-dark .tag.is-delete:not(body):hover,html.theme--documenter-dark .content kbd.is-delete:not(body):hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--documenter-dark .tag.is-delete:not(body):focus,html.theme--documenter-dark .content kbd.is-delete:not(body):focus,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#1d2122}html.theme--documenter-dark .tag.is-delete:not(body):active,html.theme--documenter-dark .content kbd.is-delete:not(body):active,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#111414}html.theme--documenter-dark .tag.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--documenter-dark .content kbd.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--documenter-dark a.tag:hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--documenter-dark .title,html.theme--documenter-dark .subtitle{word-break:break-word}html.theme--documenter-dark .title em,html.theme--documenter-dark .title span,html.theme--documenter-dark .subtitle em,html.theme--documenter-dark .subtitle span{font-weight:inherit}html.theme--documenter-dark .title sub,html.theme--documenter-dark .subtitle sub{font-size:.75em}html.theme--documenter-dark .title sup,html.theme--documenter-dark .subtitle sup{font-size:.75em}html.theme--documenter-dark .title .tag,html.theme--documenter-dark .title .content kbd,html.theme--documenter-dark .content .title kbd,html.theme--documenter-dark .title .docstring>section>a.docs-sourcelink,html.theme--documenter-dark .subtitle .tag,html.theme--documenter-dark .subtitle .content kbd,html.theme--documenter-dark .content .subtitle kbd,html.theme--documenter-dark .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--documenter-dark .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--documenter-dark .title strong{color:inherit;font-weight:inherit}html.theme--documenter-dark .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--documenter-dark .title.is-1{font-size:3rem}html.theme--documenter-dark .title.is-2{font-size:2.5rem}html.theme--documenter-dark .title.is-3{font-size:2rem}html.theme--documenter-dark .title.is-4{font-size:1.5rem}html.theme--documenter-dark .title.is-5{font-size:1.25rem}html.theme--documenter-dark .title.is-6{font-size:1rem}html.theme--documenter-dark .title.is-7{font-size:.75rem}html.theme--documenter-dark .subtitle{color:#8c9b9d;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--documenter-dark .subtitle strong{color:#8c9b9d;font-weight:600}html.theme--documenter-dark .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--documenter-dark .subtitle.is-1{font-size:3rem}html.theme--documenter-dark .subtitle.is-2{font-size:2.5rem}html.theme--documenter-dark .subtitle.is-3{font-size:2rem}html.theme--documenter-dark .subtitle.is-4{font-size:1.5rem}html.theme--documenter-dark .subtitle.is-5{font-size:1.25rem}html.theme--documenter-dark .subtitle.is-6{font-size:1rem}html.theme--documenter-dark .subtitle.is-7{font-size:.75rem}html.theme--documenter-dark .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--documenter-dark .number{align-items:center;background-color:#282f2f;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#1f2424;border-color:#5e6d6f;border-radius:.4em;color:#dbdee0}html.theme--documenter-dark .select select::-moz-placeholder,html.theme--documenter-dark .textarea::-moz-placeholder,html.theme--documenter-dark .input::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--documenter-dark .select select::-webkit-input-placeholder,html.theme--documenter-dark .textarea::-webkit-input-placeholder,html.theme--documenter-dark .input::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--documenter-dark .select select:-moz-placeholder,html.theme--documenter-dark .textarea:-moz-placeholder,html.theme--documenter-dark .input:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--documenter-dark .select select:-ms-input-placeholder,html.theme--documenter-dark .textarea:-ms-input-placeholder,html.theme--documenter-dark .input:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--documenter-dark .select select:hover,html.theme--documenter-dark .textarea:hover,html.theme--documenter-dark .input:hover,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:hover,html.theme--documenter-dark .select select.is-hovered,html.theme--documenter-dark .is-hovered.textarea,html.theme--documenter-dark .is-hovered.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#8c9b9d}html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#1abc9c;box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#8c9b9d;border-color:#282f2f;box-shadow:none;color:#fff}html.theme--documenter-dark .select select[disabled]::-moz-placeholder,html.theme--documenter-dark .textarea[disabled]::-moz-placeholder,html.theme--documenter-dark .input[disabled]::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-moz-placeholder,html.theme--documenter-dark .textarea[disabled]:-moz-placeholder,html.theme--documenter-dark .input[disabled]:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder,html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder,html.theme--documenter-dark .input[disabled]:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--documenter-dark .textarea[readonly],html.theme--documenter-dark .input[readonly],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--documenter-dark .is-white.textarea,html.theme--documenter-dark .is-white.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--documenter-dark .is-white.textarea:focus,html.theme--documenter-dark .is-white.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--documenter-dark .is-white.is-focused.textarea,html.theme--documenter-dark .is-white.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-white.textarea:active,html.theme--documenter-dark .is-white.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--documenter-dark .is-white.is-active.textarea,html.theme--documenter-dark .is-white.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .is-black.textarea,html.theme--documenter-dark .is-black.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--documenter-dark .is-black.textarea:focus,html.theme--documenter-dark .is-black.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--documenter-dark .is-black.is-focused.textarea,html.theme--documenter-dark .is-black.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-black.textarea:active,html.theme--documenter-dark .is-black.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--documenter-dark .is-black.is-active.textarea,html.theme--documenter-dark .is-black.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .is-light.textarea,html.theme--documenter-dark .is-light.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#ecf0f1}html.theme--documenter-dark .is-light.textarea:focus,html.theme--documenter-dark .is-light.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--documenter-dark .is-light.is-focused.textarea,html.theme--documenter-dark .is-light.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-light.textarea:active,html.theme--documenter-dark .is-light.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--documenter-dark .is-light.is-active.textarea,html.theme--documenter-dark .is-light.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .is-dark.textarea,html.theme--documenter-dark .content kbd.textarea,html.theme--documenter-dark .is-dark.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--documenter-dark .content kbd.input{border-color:#282f2f}html.theme--documenter-dark .is-dark.textarea:focus,html.theme--documenter-dark .content kbd.textarea:focus,html.theme--documenter-dark .is-dark.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--documenter-dark .content kbd.input:focus,html.theme--documenter-dark .is-dark.is-focused.textarea,html.theme--documenter-dark .content kbd.is-focused.textarea,html.theme--documenter-dark .is-dark.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .content kbd.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--documenter-dark .is-dark.textarea:active,html.theme--documenter-dark .content kbd.textarea:active,html.theme--documenter-dark .is-dark.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--documenter-dark .content kbd.input:active,html.theme--documenter-dark .is-dark.is-active.textarea,html.theme--documenter-dark .content kbd.is-active.textarea,html.theme--documenter-dark .is-dark.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .content kbd.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .is-primary.textarea,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink{border-color:#375a7f}html.theme--documenter-dark .is-primary.textarea:focus,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.is-focused.textarea,html.theme--documenter-dark .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--documenter-dark .is-primary.textarea:active,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:active,html.theme--documenter-dark .is-primary.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:active,html.theme--documenter-dark .is-primary.is-active.textarea,html.theme--documenter-dark .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .is-link.textarea,html.theme--documenter-dark .is-link.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#1abc9c}html.theme--documenter-dark .is-link.textarea:focus,html.theme--documenter-dark .is-link.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--documenter-dark .is-link.is-focused.textarea,html.theme--documenter-dark .is-link.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-link.textarea:active,html.theme--documenter-dark .is-link.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--documenter-dark .is-link.is-active.textarea,html.theme--documenter-dark .is-link.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .is-info.textarea,html.theme--documenter-dark .is-info.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#024c7d}html.theme--documenter-dark .is-info.textarea:focus,html.theme--documenter-dark .is-info.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--documenter-dark .is-info.is-focused.textarea,html.theme--documenter-dark .is-info.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-info.textarea:active,html.theme--documenter-dark .is-info.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--documenter-dark .is-info.is-active.textarea,html.theme--documenter-dark .is-info.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .is-success.textarea,html.theme--documenter-dark .is-success.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#008438}html.theme--documenter-dark .is-success.textarea:focus,html.theme--documenter-dark .is-success.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--documenter-dark .is-success.is-focused.textarea,html.theme--documenter-dark .is-success.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-success.textarea:active,html.theme--documenter-dark .is-success.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--documenter-dark .is-success.is-active.textarea,html.theme--documenter-dark .is-success.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .is-warning.textarea,html.theme--documenter-dark .is-warning.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ad8100}html.theme--documenter-dark .is-warning.textarea:focus,html.theme--documenter-dark .is-warning.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--documenter-dark .is-warning.is-focused.textarea,html.theme--documenter-dark .is-warning.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-warning.textarea:active,html.theme--documenter-dark .is-warning.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--documenter-dark .is-warning.is-active.textarea,html.theme--documenter-dark .is-warning.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .is-danger.textarea,html.theme--documenter-dark .is-danger.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#9e1b0d}html.theme--documenter-dark .is-danger.textarea:focus,html.theme--documenter-dark .is-danger.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--documenter-dark .is-danger.is-focused.textarea,html.theme--documenter-dark .is-danger.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-danger.textarea:active,html.theme--documenter-dark .is-danger.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--documenter-dark .is-danger.is-active.textarea,html.theme--documenter-dark .is-danger.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .is-small.textarea,html.theme--documenter-dark .is-small.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--documenter-dark .is-medium.textarea,html.theme--documenter-dark .is-medium.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--documenter-dark .is-large.textarea,html.theme--documenter-dark .is-large.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--documenter-dark .is-fullwidth.textarea,html.theme--documenter-dark .is-fullwidth.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--documenter-dark .is-inline.textarea,html.theme--documenter-dark .is-inline.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--documenter-dark .input.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--documenter-dark .input.is-static,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--documenter-dark .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--documenter-dark .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--documenter-dark .textarea[rows]{height:initial}html.theme--documenter-dark .textarea.has-fixed-size{resize:none}html.theme--documenter-dark .radio,html.theme--documenter-dark .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--documenter-dark .radio input,html.theme--documenter-dark .checkbox input{cursor:pointer}html.theme--documenter-dark .radio:hover,html.theme--documenter-dark .checkbox:hover{color:#8c9b9d}html.theme--documenter-dark .radio[disabled],html.theme--documenter-dark .checkbox[disabled],fieldset[disabled] html.theme--documenter-dark .radio,fieldset[disabled] html.theme--documenter-dark .checkbox,html.theme--documenter-dark .radio input[disabled],html.theme--documenter-dark .checkbox input[disabled]{color:#fff;cursor:not-allowed}html.theme--documenter-dark .radio+.radio{margin-left:.5em}html.theme--documenter-dark .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--documenter-dark .select:not(.is-multiple){height:2.5em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border-color:#1abc9c;right:1.125em;z-index:4}html.theme--documenter-dark .select.is-rounded select,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--documenter-dark .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--documenter-dark .select select::-ms-expand{display:none}html.theme--documenter-dark .select select[disabled]:hover,fieldset[disabled] html.theme--documenter-dark .select select:hover{border-color:#282f2f}html.theme--documenter-dark .select select:not([multiple]){padding-right:2.5em}html.theme--documenter-dark .select select[multiple]{height:auto;padding:0}html.theme--documenter-dark .select select[multiple] option{padding:0.5em 1em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#8c9b9d}html.theme--documenter-dark .select.is-white:not(:hover)::after{border-color:#fff}html.theme--documenter-dark .select.is-white select{border-color:#fff}html.theme--documenter-dark .select.is-white select:hover,html.theme--documenter-dark .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--documenter-dark .select.is-white select:focus,html.theme--documenter-dark .select.is-white select.is-focused,html.theme--documenter-dark .select.is-white select:active,html.theme--documenter-dark .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select:hover,html.theme--documenter-dark .select.is-black select.is-hovered{border-color:#000}html.theme--documenter-dark .select.is-black select:focus,html.theme--documenter-dark .select.is-black select.is-focused,html.theme--documenter-dark .select.is-black select:active,html.theme--documenter-dark .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .select.is-light:not(:hover)::after{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select:hover,html.theme--documenter-dark .select.is-light select.is-hovered{border-color:#dde4e6}html.theme--documenter-dark .select.is-light select:focus,html.theme--documenter-dark .select.is-light select.is-focused,html.theme--documenter-dark .select.is-light select:active,html.theme--documenter-dark .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .select.is-dark:not(:hover)::after,html.theme--documenter-dark .content kbd.select:not(:hover)::after{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select,html.theme--documenter-dark .content kbd.select select{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select:hover,html.theme--documenter-dark .content kbd.select select:hover,html.theme--documenter-dark .select.is-dark select.is-hovered,html.theme--documenter-dark .content kbd.select select.is-hovered{border-color:#1d2122}html.theme--documenter-dark .select.is-dark select:focus,html.theme--documenter-dark .content kbd.select select:focus,html.theme--documenter-dark .select.is-dark select.is-focused,html.theme--documenter-dark .content kbd.select select.is-focused,html.theme--documenter-dark .select.is-dark select:active,html.theme--documenter-dark .content kbd.select select:active,html.theme--documenter-dark .select.is-dark select.is-active,html.theme--documenter-dark .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .select.is-primary:not(:hover)::after,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select:hover,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:hover,html.theme--documenter-dark .select.is-primary select.is-hovered,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#2f4d6d}html.theme--documenter-dark .select.is-primary select:focus,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:focus,html.theme--documenter-dark .select.is-primary select.is-focused,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--documenter-dark .select.is-primary select:active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:active,html.theme--documenter-dark .select.is-primary select.is-active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .select.is-link:not(:hover)::after{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select:hover,html.theme--documenter-dark .select.is-link select.is-hovered{border-color:#17a689}html.theme--documenter-dark .select.is-link select:focus,html.theme--documenter-dark .select.is-link select.is-focused,html.theme--documenter-dark .select.is-link select:active,html.theme--documenter-dark .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select.is-info:not(:hover)::after{border-color:#024c7d}html.theme--documenter-dark .select.is-info select{border-color:#024c7d}html.theme--documenter-dark .select.is-info select:hover,html.theme--documenter-dark .select.is-info select.is-hovered{border-color:#023d64}html.theme--documenter-dark .select.is-info select:focus,html.theme--documenter-dark .select.is-info select.is-focused,html.theme--documenter-dark .select.is-info select:active,html.theme--documenter-dark .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .select.is-success:not(:hover)::after{border-color:#008438}html.theme--documenter-dark .select.is-success select{border-color:#008438}html.theme--documenter-dark .select.is-success select:hover,html.theme--documenter-dark .select.is-success select.is-hovered{border-color:#006b2d}html.theme--documenter-dark .select.is-success select:focus,html.theme--documenter-dark .select.is-success select.is-focused,html.theme--documenter-dark .select.is-success select:active,html.theme--documenter-dark .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .select.is-warning:not(:hover)::after{border-color:#ad8100}html.theme--documenter-dark .select.is-warning select{border-color:#ad8100}html.theme--documenter-dark .select.is-warning select:hover,html.theme--documenter-dark .select.is-warning select.is-hovered{border-color:#946e00}html.theme--documenter-dark .select.is-warning select:focus,html.theme--documenter-dark .select.is-warning select.is-focused,html.theme--documenter-dark .select.is-warning select:active,html.theme--documenter-dark .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .select.is-danger:not(:hover)::after{border-color:#9e1b0d}html.theme--documenter-dark .select.is-danger select{border-color:#9e1b0d}html.theme--documenter-dark .select.is-danger select:hover,html.theme--documenter-dark .select.is-danger select.is-hovered{border-color:#86170b}html.theme--documenter-dark .select.is-danger select:focus,html.theme--documenter-dark .select.is-danger select.is-focused,html.theme--documenter-dark .select.is-danger select:active,html.theme--documenter-dark .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .select.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--documenter-dark .select.is-medium{font-size:1.25rem}html.theme--documenter-dark .select.is-large{font-size:1.5rem}html.theme--documenter-dark .select.is-disabled::after{border-color:#fff !important;opacity:0.5}html.theme--documenter-dark .select.is-fullwidth{width:100%}html.theme--documenter-dark .select.is-fullwidth select{width:100%}html.theme--documenter-dark .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--documenter-dark .select.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--documenter-dark .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .select.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--documenter-dark .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:hover .file-cta,html.theme--documenter-dark .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:focus .file-cta,html.theme--documenter-dark .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--documenter-dark .file.is-white:active .file-cta,html.theme--documenter-dark .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:hover .file-cta,html.theme--documenter-dark .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:focus .file-cta,html.theme--documenter-dark .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--documenter-dark .file.is-black:active .file-cta,html.theme--documenter-dark .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-light .file-cta{background-color:#ecf0f1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:hover .file-cta,html.theme--documenter-dark .file.is-light.is-hovered .file-cta{background-color:#e5eaec;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:focus .file-cta,html.theme--documenter-dark .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(236,240,241,0.25);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:active .file-cta,html.theme--documenter-dark .file.is-light.is-active .file-cta{background-color:#dde4e6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-dark .file-cta,html.theme--documenter-dark .content kbd.file .file-cta{background-color:#282f2f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-dark:hover .file-cta,html.theme--documenter-dark .content kbd.file:hover .file-cta,html.theme--documenter-dark .file.is-dark.is-hovered .file-cta,html.theme--documenter-dark .content kbd.file.is-hovered .file-cta{background-color:#232829;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-dark:focus .file-cta,html.theme--documenter-dark .content kbd.file:focus .file-cta,html.theme--documenter-dark .file.is-dark.is-focused .file-cta,html.theme--documenter-dark .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(40,47,47,0.25);color:#fff}html.theme--documenter-dark .file.is-dark:active .file-cta,html.theme--documenter-dark .content kbd.file:active .file-cta,html.theme--documenter-dark .file.is-dark.is-active .file-cta,html.theme--documenter-dark .content kbd.file.is-active .file-cta{background-color:#1d2122;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:hover .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--documenter-dark .file.is-primary.is-hovered .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:focus .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--documenter-dark .file.is-primary.is-focused .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(55,90,127,0.25);color:#fff}html.theme--documenter-dark .file.is-primary:active .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--documenter-dark .file.is-primary.is-active .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link .file-cta{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:hover .file-cta,html.theme--documenter-dark .file.is-link.is-hovered .file-cta{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:focus .file-cta,html.theme--documenter-dark .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(26,188,156,0.25);color:#fff}html.theme--documenter-dark .file.is-link:active .file-cta,html.theme--documenter-dark .file.is-link.is-active .file-cta{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info .file-cta{background-color:#024c7d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:hover .file-cta,html.theme--documenter-dark .file.is-info.is-hovered .file-cta{background-color:#024470;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:focus .file-cta,html.theme--documenter-dark .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(2,76,125,0.25);color:#fff}html.theme--documenter-dark .file.is-info:active .file-cta,html.theme--documenter-dark .file.is-info.is-active .file-cta{background-color:#023d64;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success .file-cta{background-color:#008438;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:hover .file-cta,html.theme--documenter-dark .file.is-success.is-hovered .file-cta{background-color:#073;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:focus .file-cta,html.theme--documenter-dark .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(0,132,56,0.25);color:#fff}html.theme--documenter-dark .file.is-success:active .file-cta,html.theme--documenter-dark .file.is-success.is-active .file-cta{background-color:#006b2d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning .file-cta{background-color:#ad8100;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning:hover .file-cta,html.theme--documenter-dark .file.is-warning.is-hovered .file-cta{background-color:#a07700;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning:focus .file-cta,html.theme--documenter-dark .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(173,129,0,0.25);color:#fff}html.theme--documenter-dark .file.is-warning:active .file-cta,html.theme--documenter-dark .file.is-warning.is-active .file-cta{background-color:#946e00;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger .file-cta{background-color:#9e1b0d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:hover .file-cta,html.theme--documenter-dark .file.is-danger.is-hovered .file-cta{background-color:#92190c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:focus .file-cta,html.theme--documenter-dark .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(158,27,13,0.25);color:#fff}html.theme--documenter-dark .file.is-danger:active .file-cta,html.theme--documenter-dark .file.is-danger.is-active .file-cta{background-color:#86170b;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--documenter-dark .file.is-normal{font-size:1rem}html.theme--documenter-dark .file.is-medium{font-size:1.25rem}html.theme--documenter-dark .file.is-medium .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-large{font-size:1.5rem}html.theme--documenter-dark .file.is-large .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--documenter-dark .file.has-name.is-empty .file-name{display:none}html.theme--documenter-dark .file.is-boxed .file-label{flex-direction:column}html.theme--documenter-dark .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--documenter-dark .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--documenter-dark .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--documenter-dark .file.is-boxed .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--documenter-dark .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--documenter-dark .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--documenter-dark .file.is-centered{justify-content:center}html.theme--documenter-dark .file.is-fullwidth .file-label{width:100%}html.theme--documenter-dark .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--documenter-dark .file.is-right{justify-content:flex-end}html.theme--documenter-dark .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--documenter-dark .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--documenter-dark .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--documenter-dark .file-label:hover .file-cta{background-color:#232829;color:#f2f2f2}html.theme--documenter-dark .file-label:hover .file-name{border-color:#596668}html.theme--documenter-dark .file-label:active .file-cta{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .file-label:active .file-name{border-color:#535f61}html.theme--documenter-dark .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--documenter-dark .file-cta{background-color:#282f2f;color:#fff}html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--documenter-dark .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--documenter-dark .file-icon .fa{font-size:14px}html.theme--documenter-dark .label{color:#f2f2f2;display:block;font-size:1rem;font-weight:700}html.theme--documenter-dark .label:not(:last-child){margin-bottom:0.5em}html.theme--documenter-dark .label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--documenter-dark .label.is-medium{font-size:1.25rem}html.theme--documenter-dark .label.is-large{font-size:1.5rem}html.theme--documenter-dark .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--documenter-dark .help.is-white{color:#fff}html.theme--documenter-dark .help.is-black{color:#0a0a0a}html.theme--documenter-dark .help.is-light{color:#ecf0f1}html.theme--documenter-dark .help.is-dark,html.theme--documenter-dark .content kbd.help{color:#282f2f}html.theme--documenter-dark .help.is-primary,html.theme--documenter-dark .docstring>section>a.help.docs-sourcelink{color:#375a7f}html.theme--documenter-dark .help.is-link{color:#1abc9c}html.theme--documenter-dark .help.is-info{color:#024c7d}html.theme--documenter-dark .help.is-success{color:#008438}html.theme--documenter-dark .help.is-warning{color:#ad8100}html.theme--documenter-dark .help.is-danger{color:#9e1b0d}html.theme--documenter-dark .field:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.has-addons{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--documenter-dark .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.has-addons.has-addons-centered{justify-content:center}html.theme--documenter-dark .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .field.is-grouped{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.is-grouped>.control{flex-shrink:0}html.theme--documenter-dark .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--documenter-dark .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field.is-horizontal{display:flex}}html.theme--documenter-dark .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--documenter-dark .field-label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-normal{padding-top:0.375em}html.theme--documenter-dark .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--documenter-dark .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--documenter-dark .field-body .field{margin-bottom:0}html.theme--documenter-dark .field-body>.field{flex-shrink:1}html.theme--documenter-dark .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--documenter-dark .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--documenter-dark .control.has-icons-left .input:focus~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-left .select:focus~.icon,html.theme--documenter-dark .control.has-icons-right .input:focus~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-right .select:focus~.icon{color:#282f2f}html.theme--documenter-dark .control.has-icons-left .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-small~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--documenter-dark .control.has-icons-left .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--documenter-dark .control.has-icons-left .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon{color:#5e6d6f;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--documenter-dark .control.has-icons-left .input,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--documenter-dark .control.has-icons-left .select select{padding-left:2.5em}html.theme--documenter-dark .control.has-icons-left .icon.is-left{left:0}html.theme--documenter-dark .control.has-icons-right .input,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--documenter-dark .control.has-icons-right .select select{padding-right:2.5em}html.theme--documenter-dark .control.has-icons-right .icon.is-right{right:0}html.theme--documenter-dark .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--documenter-dark .control.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--documenter-dark .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .control.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--documenter-dark .breadcrumb a{align-items:center;color:#1abc9c;display:flex;justify-content:center;padding:0 .75em}html.theme--documenter-dark .breadcrumb a:hover{color:#1dd2af}html.theme--documenter-dark .breadcrumb li{align-items:center;display:flex}html.theme--documenter-dark .breadcrumb li:first-child a{padding-left:0}html.theme--documenter-dark .breadcrumb li.is-active a{color:#f2f2f2;cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb li+li::before{color:#8c9b9d;content:"\0002f"}html.theme--documenter-dark .breadcrumb ul,html.theme--documenter-dark .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .breadcrumb .icon:first-child{margin-right:.5em}html.theme--documenter-dark .breadcrumb .icon:last-child{margin-left:.5em}html.theme--documenter-dark .breadcrumb.is-centered ol,html.theme--documenter-dark .breadcrumb.is-centered ul{justify-content:center}html.theme--documenter-dark .breadcrumb.is-right ol,html.theme--documenter-dark .breadcrumb.is-right ul{justify-content:flex-end}html.theme--documenter-dark .breadcrumb.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--documenter-dark .breadcrumb.is-medium{font-size:1.25rem}html.theme--documenter-dark .breadcrumb.is-large{font-size:1.5rem}html.theme--documenter-dark .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--documenter-dark .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--documenter-dark .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--documenter-dark .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--documenter-dark .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#fff;max-width:100%;position:relative}html.theme--documenter-dark .card-footer:first-child,html.theme--documenter-dark .card-content:first-child,html.theme--documenter-dark .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--documenter-dark .card-footer:last-child,html.theme--documenter-dark .card-content:last-child,html.theme--documenter-dark .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--documenter-dark .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--documenter-dark .card-header-title{align-items:center;color:#f2f2f2;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--documenter-dark .card-header-title.is-centered{justify-content:center}html.theme--documenter-dark .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--documenter-dark .card-image{display:block;position:relative}html.theme--documenter-dark .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--documenter-dark .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--documenter-dark .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--documenter-dark .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--documenter-dark .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--documenter-dark .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--documenter-dark .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--documenter-dark .dropdown.is-active .dropdown-menu,html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--documenter-dark .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--documenter-dark .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--documenter-dark .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .dropdown-content{background-color:#282f2f;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--documenter-dark .dropdown-item{color:#fff;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--documenter-dark a.dropdown-item,html.theme--documenter-dark button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--documenter-dark a.dropdown-item:hover,html.theme--documenter-dark button.dropdown-item:hover{background-color:#282f2f;color:#0a0a0a}html.theme--documenter-dark a.dropdown-item.is-active,html.theme--documenter-dark button.dropdown-item.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--documenter-dark .level{align-items:center;justify-content:space-between}html.theme--documenter-dark .level code{border-radius:.4em}html.theme--documenter-dark .level img{display:inline-block;vertical-align:top}html.theme--documenter-dark .level.is-mobile{display:flex}html.theme--documenter-dark .level.is-mobile .level-left,html.theme--documenter-dark .level.is-mobile .level-right{display:flex}html.theme--documenter-dark .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level{display:flex}html.theme--documenter-dark .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--documenter-dark .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--documenter-dark .level-item .title,html.theme--documenter-dark .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--documenter-dark .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--documenter-dark .level-left,html.theme--documenter-dark .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .level-left .level-item.is-flexible,html.theme--documenter-dark .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left .level-item:not(:last-child),html.theme--documenter-dark .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--documenter-dark .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left{display:flex}}html.theme--documenter-dark .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-right{display:flex}}html.theme--documenter-dark .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--documenter-dark .media .content:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .media .media{border-top:1px solid rgba(94,109,111,0.5);display:flex;padding-top:.75rem}html.theme--documenter-dark .media .media .content:not(:last-child),html.theme--documenter-dark .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--documenter-dark .media .media .media{padding-top:.5rem}html.theme--documenter-dark .media .media .media+.media{margin-top:.5rem}html.theme--documenter-dark .media+.media{border-top:1px solid rgba(94,109,111,0.5);margin-top:1rem;padding-top:1rem}html.theme--documenter-dark .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--documenter-dark .media-left,html.theme--documenter-dark .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .media-left{margin-right:1rem}html.theme--documenter-dark .media-right{margin-left:1rem}html.theme--documenter-dark .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .media-content{overflow-x:auto}}html.theme--documenter-dark .menu{font-size:1rem}html.theme--documenter-dark .menu.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--documenter-dark .menu.is-medium{font-size:1.25rem}html.theme--documenter-dark .menu.is-large{font-size:1.5rem}html.theme--documenter-dark .menu-list{line-height:1.25}html.theme--documenter-dark .menu-list a{border-radius:3px;color:#fff;display:block;padding:0.5em 0.75em}html.theme--documenter-dark .menu-list a:hover{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .menu-list a.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .menu-list li ul{border-left:1px solid #5e6d6f;margin:.75em;padding-left:.75em}html.theme--documenter-dark .menu-label{color:#fff;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--documenter-dark .menu-label:not(:first-child){margin-top:1em}html.theme--documenter-dark .menu-label:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .message{background-color:#282f2f;border-radius:.4em;font-size:1rem}html.theme--documenter-dark .message strong{color:currentColor}html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .message.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--documenter-dark .message.is-medium{font-size:1.25rem}html.theme--documenter-dark .message.is-large{font-size:1.5rem}html.theme--documenter-dark .message.is-white{background-color:#fff}html.theme--documenter-dark .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .message.is-white .message-body{border-color:#fff}html.theme--documenter-dark .message.is-black{background-color:#fafafa}html.theme--documenter-dark .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .message.is-black .message-body{border-color:#0a0a0a}html.theme--documenter-dark .message.is-light{background-color:#f9fafb}html.theme--documenter-dark .message.is-light .message-header{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .message.is-light .message-body{border-color:#ecf0f1}html.theme--documenter-dark .message.is-dark,html.theme--documenter-dark .content kbd.message{background-color:#f9fafa}html.theme--documenter-dark .message.is-dark .message-header,html.theme--documenter-dark .content kbd.message .message-header{background-color:#282f2f;color:#fff}html.theme--documenter-dark .message.is-dark .message-body,html.theme--documenter-dark .content kbd.message .message-body{border-color:#282f2f}html.theme--documenter-dark .message.is-primary,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink{background-color:#f1f5f9}html.theme--documenter-dark .message.is-primary .message-header,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-header{background-color:#375a7f;color:#fff}html.theme--documenter-dark .message.is-primary .message-body,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-body{border-color:#375a7f;color:#4d7eb2}html.theme--documenter-dark .message.is-link{background-color:#edfdf9}html.theme--documenter-dark .message.is-link .message-header{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .message.is-link .message-body{border-color:#1abc9c;color:#15987e}html.theme--documenter-dark .message.is-info{background-color:#ebf7ff}html.theme--documenter-dark .message.is-info .message-header{background-color:#024c7d;color:#fff}html.theme--documenter-dark .message.is-info .message-body{border-color:#024c7d;color:#0e9dfb}html.theme--documenter-dark .message.is-success{background-color:#ebfff3}html.theme--documenter-dark .message.is-success .message-header{background-color:#008438;color:#fff}html.theme--documenter-dark .message.is-success .message-body{border-color:#008438;color:#00eb64}html.theme--documenter-dark .message.is-warning{background-color:#fffaeb}html.theme--documenter-dark .message.is-warning .message-header{background-color:#ad8100;color:#fff}html.theme--documenter-dark .message.is-warning .message-body{border-color:#ad8100;color:#d19c00}html.theme--documenter-dark .message.is-danger{background-color:#fdeeec}html.theme--documenter-dark .message.is-danger .message-header{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .message.is-danger .message-body{border-color:#9e1b0d;color:#ec311d}html.theme--documenter-dark .message-header{align-items:center;background-color:#fff;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--documenter-dark .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--documenter-dark .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--documenter-dark .message-body{border-color:#5e6d6f;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#fff;padding:1.25em 1.5em}html.theme--documenter-dark .message-body code,html.theme--documenter-dark .message-body pre{background-color:#fff}html.theme--documenter-dark .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--documenter-dark .modal.is-active{display:flex}html.theme--documenter-dark .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--documenter-dark .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--documenter-dark .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--documenter-dark .modal-card-head,html.theme--documenter-dark .modal-card-foot{align-items:center;background-color:#282f2f;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--documenter-dark .modal-card-head{border-bottom:1px solid #5e6d6f;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--documenter-dark .modal-card-title{color:#f2f2f2;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--documenter-dark .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #5e6d6f}html.theme--documenter-dark .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--documenter-dark .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--documenter-dark .navbar{background-color:#375a7f;min-height:4rem;position:relative;z-index:30}html.theme--documenter-dark .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-white .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--documenter-dark .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-black .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--documenter-dark .navbar.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-light .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}}html.theme--documenter-dark .navbar.is-dark,html.theme--documenter-dark .content kbd.navbar{background-color:#282f2f;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-burger,html.theme--documenter-dark .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-dark .navbar-start>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-end>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#282f2f;color:#fff}}html.theme--documenter-dark .navbar.is-primary,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-burger,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-primary .navbar-start>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-end>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#375a7f;color:#fff}}html.theme--documenter-dark .navbar.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-link .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c;color:#fff}}html.theme--documenter-dark .navbar.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-info .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#024c7d;color:#fff}}html.theme--documenter-dark .navbar.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-success .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#008438;color:#fff}}html.theme--documenter-dark .navbar.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-warning .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ad8100;color:#fff}}html.theme--documenter-dark .navbar.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-danger .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#9e1b0d;color:#fff}}html.theme--documenter-dark .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--documenter-dark .navbar.has-shadow{box-shadow:0 2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-bottom,html.theme--documenter-dark .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-top{top:0}html.theme--documenter-dark html.has-navbar-fixed-top,html.theme--documenter-dark body.has-navbar-fixed-top{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom,html.theme--documenter-dark body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--documenter-dark .navbar-brand,html.theme--documenter-dark .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--documenter-dark .navbar-brand a.navbar-item:focus,html.theme--documenter-dark .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--documenter-dark .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--documenter-dark .navbar-burger{color:#fff;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--documenter-dark .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--documenter-dark .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--documenter-dark .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--documenter-dark .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--documenter-dark .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--documenter-dark .navbar-menu{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{color:#fff;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--documenter-dark .navbar-item .icon:only-child,html.theme--documenter-dark .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--documenter-dark a.navbar-item,html.theme--documenter-dark .navbar-link{cursor:pointer}html.theme--documenter-dark a.navbar-item:focus,html.theme--documenter-dark a.navbar-item:focus-within,html.theme--documenter-dark a.navbar-item:hover,html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link:focus,html.theme--documenter-dark .navbar-link:focus-within,html.theme--documenter-dark .navbar-link:hover,html.theme--documenter-dark .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-item{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .navbar-item img{max-height:1.75rem}html.theme--documenter-dark .navbar-item.has-dropdown{padding:0}html.theme--documenter-dark .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--documenter-dark .navbar-item.is-tab:focus,html.theme--documenter-dark .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c}html.theme--documenter-dark .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c;border-bottom-style:solid;border-bottom-width:3px;color:#1abc9c;padding-bottom:calc(0.5rem - 3px)}html.theme--documenter-dark .navbar-content{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--documenter-dark .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--documenter-dark .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar>.container{display:block}html.theme--documenter-dark .navbar-brand .navbar-item,html.theme--documenter-dark .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--documenter-dark .navbar-link::after{display:none}html.theme--documenter-dark .navbar-menu{background-color:#375a7f;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--documenter-dark .navbar-menu.is-active{display:block}html.theme--documenter-dark .navbar.is-fixed-bottom-touch,html.theme--documenter-dark .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-touch{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-touch{top:0}html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu,html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--documenter-dark html.has-navbar-fixed-top-touch,html.theme--documenter-dark body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-touch,html.theme--documenter-dark body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar,html.theme--documenter-dark .navbar-menu,html.theme--documenter-dark .navbar-start,html.theme--documenter-dark .navbar-end{align-items:stretch;display:flex}html.theme--documenter-dark .navbar{min-height:4rem}html.theme--documenter-dark .navbar.is-spaced{padding:1rem 2rem}html.theme--documenter-dark .navbar.is-spaced .navbar-start,html.theme--documenter-dark .navbar.is-spaced .navbar-end{align-items:center}html.theme--documenter-dark .navbar.is-spaced a.navbar-item,html.theme--documenter-dark .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover,html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover,html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-burger{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{align-items:center;display:flex}html.theme--documenter-dark .navbar-item.has-dropdown{align-items:stretch}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--documenter-dark .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--documenter-dark .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--documenter-dark .navbar-dropdown{background-color:#375a7f;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--documenter-dark .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}.navbar.is-spaced html.theme--documenter-dark .navbar-dropdown,html.theme--documenter-dark .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--documenter-dark .navbar-dropdown.is-right{left:auto;right:0}html.theme--documenter-dark .navbar-divider{display:block}html.theme--documenter-dark .navbar>.container .navbar-brand,html.theme--documenter-dark .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--documenter-dark .navbar>.container .navbar-menu,html.theme--documenter-dark .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop,html.theme--documenter-dark .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-desktop{top:0}html.theme--documenter-dark html.has-navbar-fixed-top-desktop,html.theme--documenter-dark body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop,html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-top,html.theme--documenter-dark body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom,html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link.is-active{color:#1abc9c}html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover),html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--documenter-dark .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--documenter-dark .pagination{font-size:1rem;margin:-.25rem}html.theme--documenter-dark .pagination.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--documenter-dark .pagination.is-medium{font-size:1.25rem}html.theme--documenter-dark .pagination.is-large{font-size:1.5rem}html.theme--documenter-dark .pagination.is-rounded .pagination-previous,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--documenter-dark .pagination.is-rounded .pagination-next,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--documenter-dark .pagination.is-rounded .pagination-link,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--documenter-dark .pagination,html.theme--documenter-dark .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link{border-color:#5e6d6f;color:#1abc9c;min-width:2.5em}html.theme--documenter-dark .pagination-previous:hover,html.theme--documenter-dark .pagination-next:hover,html.theme--documenter-dark .pagination-link:hover{border-color:#8c9b9d;color:#1dd2af}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus{border-color:#8c9b9d}html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-previous.is-disabled,html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-next.is-disabled,html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-link.is-disabled{background-color:#5e6d6f;border-color:#5e6d6f;box-shadow:none;color:#fff;opacity:0.5}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--documenter-dark .pagination-link.is-current{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .pagination-ellipsis{color:#8c9b9d;pointer-events:none}html.theme--documenter-dark .pagination-list{flex-wrap:wrap}html.theme--documenter-dark .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--documenter-dark .pagination{flex-wrap:wrap}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--documenter-dark .pagination-previous{order:2}html.theme--documenter-dark .pagination-next{order:3}html.theme--documenter-dark .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--documenter-dark .pagination.is-centered .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--documenter-dark .pagination.is-centered .pagination-next{order:3}html.theme--documenter-dark .pagination.is-right .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-right .pagination-next{order:2}html.theme--documenter-dark .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--documenter-dark .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--documenter-dark .panel:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--documenter-dark .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--documenter-dark .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--documenter-dark .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--documenter-dark .panel.is-light .panel-heading{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .panel.is-light .panel-tabs a.is-active{border-bottom-color:#ecf0f1}html.theme--documenter-dark .panel.is-light .panel-block.is-active .panel-icon{color:#ecf0f1}html.theme--documenter-dark .panel.is-dark .panel-heading,html.theme--documenter-dark .content kbd.panel .panel-heading{background-color:#282f2f;color:#fff}html.theme--documenter-dark .panel.is-dark .panel-tabs a.is-active,html.theme--documenter-dark .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#282f2f}html.theme--documenter-dark .panel.is-dark .panel-block.is-active .panel-icon,html.theme--documenter-dark .content kbd.panel .panel-block.is-active .panel-icon{color:#282f2f}html.theme--documenter-dark .panel.is-primary .panel-heading,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#375a7f;color:#fff}html.theme--documenter-dark .panel.is-primary .panel-tabs a.is-active,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#375a7f}html.theme--documenter-dark .panel.is-primary .panel-block.is-active .panel-icon,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#375a7f}html.theme--documenter-dark .panel.is-link .panel-heading{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .panel.is-link .panel-tabs a.is-active{border-bottom-color:#1abc9c}html.theme--documenter-dark .panel.is-link .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark .panel.is-info .panel-heading{background-color:#024c7d;color:#fff}html.theme--documenter-dark .panel.is-info .panel-tabs a.is-active{border-bottom-color:#024c7d}html.theme--documenter-dark .panel.is-info .panel-block.is-active .panel-icon{color:#024c7d}html.theme--documenter-dark .panel.is-success .panel-heading{background-color:#008438;color:#fff}html.theme--documenter-dark .panel.is-success .panel-tabs a.is-active{border-bottom-color:#008438}html.theme--documenter-dark .panel.is-success .panel-block.is-active .panel-icon{color:#008438}html.theme--documenter-dark .panel.is-warning .panel-heading{background-color:#ad8100;color:#fff}html.theme--documenter-dark .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ad8100}html.theme--documenter-dark .panel.is-warning .panel-block.is-active .panel-icon{color:#ad8100}html.theme--documenter-dark .panel.is-danger .panel-heading{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#9e1b0d}html.theme--documenter-dark .panel.is-danger .panel-block.is-active .panel-icon{color:#9e1b0d}html.theme--documenter-dark .panel-tabs:not(:last-child),html.theme--documenter-dark .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--documenter-dark .panel-heading{background-color:#343c3d;border-radius:8px 8px 0 0;color:#f2f2f2;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--documenter-dark .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--documenter-dark .panel-tabs a{border-bottom:1px solid #5e6d6f;margin-bottom:-1px;padding:0.5em}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#343c3d;color:#17a689}html.theme--documenter-dark .panel-list a{color:#fff}html.theme--documenter-dark .panel-list a:hover{color:#1abc9c}html.theme--documenter-dark .panel-block{align-items:center;color:#f2f2f2;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--documenter-dark .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--documenter-dark .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--documenter-dark .panel-block.is-wrapped{flex-wrap:wrap}html.theme--documenter-dark .panel-block.is-active{border-left-color:#1abc9c;color:#17a689}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--documenter-dark a.panel-block,html.theme--documenter-dark label.panel-block{cursor:pointer}html.theme--documenter-dark a.panel-block:hover,html.theme--documenter-dark label.panel-block:hover{background-color:#282f2f}html.theme--documenter-dark .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#fff;margin-right:.75em}html.theme--documenter-dark .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--documenter-dark .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--documenter-dark .tabs a{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;color:#fff;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--documenter-dark .tabs a:hover{border-bottom-color:#f2f2f2;color:#f2f2f2}html.theme--documenter-dark .tabs li{display:block}html.theme--documenter-dark .tabs li.is-active a{border-bottom-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .tabs ul{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--documenter-dark .tabs ul.is-left{padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--documenter-dark .tabs .icon:first-child{margin-right:.5em}html.theme--documenter-dark .tabs .icon:last-child{margin-left:.5em}html.theme--documenter-dark .tabs.is-centered ul{justify-content:center}html.theme--documenter-dark .tabs.is-right ul{justify-content:flex-end}html.theme--documenter-dark .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--documenter-dark .tabs.is-boxed a:hover{background-color:#282f2f;border-bottom-color:#5e6d6f}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#5e6d6f;border-bottom-color:rgba(0,0,0,0) !important}html.theme--documenter-dark .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .tabs.is-toggle a{border-color:#5e6d6f;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--documenter-dark .tabs.is-toggle a:hover{background-color:#282f2f;border-color:#8c9b9d;z-index:2}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--documenter-dark .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--documenter-dark .tabs.is-toggle li.is-active a{background-color:#1abc9c;border-color:#1abc9c;color:#fff;z-index:1}html.theme--documenter-dark .tabs.is-toggle ul{border-bottom:none}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--documenter-dark .tabs.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--documenter-dark .tabs.is-medium{font-size:1.25rem}html.theme--documenter-dark .tabs.is-large{font-size:1.5rem}html.theme--documenter-dark .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--documenter-dark .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--documenter-dark .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--documenter-dark .column.is-narrow-mobile{flex:none;width:unset}html.theme--documenter-dark .column.is-full-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-mobile{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--documenter-dark .column.is-0-mobile{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-mobile{margin-left:0%}html.theme--documenter-dark .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-mobile{margin-left:25%}html.theme--documenter-dark .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-mobile{margin-left:50%}html.theme--documenter-dark .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-mobile{margin-left:75%}html.theme--documenter-dark .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .column.is-narrow,html.theme--documenter-dark .column.is-narrow-tablet{flex:none;width:unset}html.theme--documenter-dark .column.is-full,html.theme--documenter-dark .column.is-full-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters,html.theme--documenter-dark .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds,html.theme--documenter-dark .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half,html.theme--documenter-dark .column.is-half-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third,html.theme--documenter-dark .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter,html.theme--documenter-dark .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth,html.theme--documenter-dark .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths,html.theme--documenter-dark .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths,html.theme--documenter-dark .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths,html.theme--documenter-dark .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters,html.theme--documenter-dark .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds,html.theme--documenter-dark .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half,html.theme--documenter-dark .column.is-offset-half-tablet{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third,html.theme--documenter-dark .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter,html.theme--documenter-dark .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth,html.theme--documenter-dark .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths,html.theme--documenter-dark .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths,html.theme--documenter-dark .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths,html.theme--documenter-dark .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--documenter-dark .column.is-0,html.theme--documenter-dark .column.is-0-tablet{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0,html.theme--documenter-dark .column.is-offset-0-tablet{margin-left:0%}html.theme--documenter-dark .column.is-1,html.theme--documenter-dark .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1,html.theme--documenter-dark .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2,html.theme--documenter-dark .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2,html.theme--documenter-dark .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3,html.theme--documenter-dark .column.is-3-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3,html.theme--documenter-dark .column.is-offset-3-tablet{margin-left:25%}html.theme--documenter-dark .column.is-4,html.theme--documenter-dark .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4,html.theme--documenter-dark .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5,html.theme--documenter-dark .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5,html.theme--documenter-dark .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6,html.theme--documenter-dark .column.is-6-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6,html.theme--documenter-dark .column.is-offset-6-tablet{margin-left:50%}html.theme--documenter-dark .column.is-7,html.theme--documenter-dark .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7,html.theme--documenter-dark .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8,html.theme--documenter-dark .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8,html.theme--documenter-dark .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9,html.theme--documenter-dark .column.is-9-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9,html.theme--documenter-dark .column.is-offset-9-tablet{margin-left:75%}html.theme--documenter-dark .column.is-10,html.theme--documenter-dark .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10,html.theme--documenter-dark .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11,html.theme--documenter-dark .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11,html.theme--documenter-dark .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12,html.theme--documenter-dark .column.is-12-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12,html.theme--documenter-dark .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--documenter-dark .column.is-narrow-touch{flex:none;width:unset}html.theme--documenter-dark .column.is-full-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-touch{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-touch{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-touch{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-touch{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-touch{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--documenter-dark .column.is-0-touch{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-touch{margin-left:0%}html.theme--documenter-dark .column.is-1-touch{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-touch{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-touch{margin-left:25%}html.theme--documenter-dark .column.is-4-touch{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-touch{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-touch{margin-left:50%}html.theme--documenter-dark .column.is-7-touch{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-touch{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-touch{margin-left:75%}html.theme--documenter-dark .column.is-10-touch{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-touch{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--documenter-dark .column.is-narrow-desktop{flex:none;width:unset}html.theme--documenter-dark .column.is-full-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-desktop{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--documenter-dark .column.is-0-desktop{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-desktop{margin-left:0%}html.theme--documenter-dark .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-desktop{margin-left:25%}html.theme--documenter-dark .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-desktop{margin-left:50%}html.theme--documenter-dark .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-desktop{margin-left:75%}html.theme--documenter-dark .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--documenter-dark .column.is-narrow-widescreen{flex:none;width:unset}html.theme--documenter-dark .column.is-full-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--documenter-dark .column.is-0-widescreen{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-widescreen{margin-left:0%}html.theme--documenter-dark .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--documenter-dark .column.is-narrow-fullhd{flex:none;width:unset}html.theme--documenter-dark .column.is-full-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--documenter-dark .column.is-0-fullhd{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-fullhd{margin-left:0%}html.theme--documenter-dark .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-fullhd{margin-left:100%}}html.theme--documenter-dark .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .columns:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--documenter-dark .columns.is-centered{justify-content:center}html.theme--documenter-dark .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--documenter-dark .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--documenter-dark .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .columns.is-gapless:last-child{margin-bottom:0}html.theme--documenter-dark .columns.is-mobile{display:flex}html.theme--documenter-dark .columns.is-multiline{flex-wrap:wrap}html.theme--documenter-dark .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-desktop{display:flex}}html.theme--documenter-dark .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--documenter-dark .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--documenter-dark .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--documenter-dark .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--documenter-dark .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--documenter-dark .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--documenter-dark .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--documenter-dark .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--documenter-dark .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--documenter-dark .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--documenter-dark .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--documenter-dark .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--documenter-dark .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .tile.is-child{margin:0 !important}html.theme--documenter-dark .tile.is-parent{padding:.75rem}html.theme--documenter-dark .tile.is-vertical{flex-direction:column}html.theme--documenter-dark .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--documenter-dark .tile:not(.is-child){display:flex}html.theme--documenter-dark .tile.is-1{flex:none;width:8.33333337%}html.theme--documenter-dark .tile.is-2{flex:none;width:16.66666674%}html.theme--documenter-dark .tile.is-3{flex:none;width:25%}html.theme--documenter-dark .tile.is-4{flex:none;width:33.33333337%}html.theme--documenter-dark .tile.is-5{flex:none;width:41.66666674%}html.theme--documenter-dark .tile.is-6{flex:none;width:50%}html.theme--documenter-dark .tile.is-7{flex:none;width:58.33333337%}html.theme--documenter-dark .tile.is-8{flex:none;width:66.66666674%}html.theme--documenter-dark .tile.is-9{flex:none;width:75%}html.theme--documenter-dark .tile.is-10{flex:none;width:83.33333337%}html.theme--documenter-dark .tile.is-11{flex:none;width:91.66666674%}html.theme--documenter-dark .tile.is-12{flex:none;width:100%}}html.theme--documenter-dark .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--documenter-dark .hero .navbar{background:none}html.theme--documenter-dark .hero .tabs ul{border-bottom:none}html.theme--documenter-dark .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-white strong{color:inherit}html.theme--documenter-dark .hero.is-white .title{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--documenter-dark .hero.is-white .subtitle a:not(.button),html.theme--documenter-dark .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-white .navbar-menu{background-color:#fff}}html.theme--documenter-dark .hero.is-white .navbar-item,html.theme--documenter-dark .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--documenter-dark .hero.is-white a.navbar-item:hover,html.theme--documenter-dark .hero.is-white a.navbar-item.is-active,html.theme--documenter-dark .hero.is-white .navbar-link:hover,html.theme--documenter-dark .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--documenter-dark .hero.is-white .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--documenter-dark .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-black strong{color:inherit}html.theme--documenter-dark .hero.is-black .title{color:#fff}html.theme--documenter-dark .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-black .subtitle a:not(.button),html.theme--documenter-dark .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--documenter-dark .hero.is-black .navbar-item,html.theme--documenter-dark .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-black a.navbar-item:hover,html.theme--documenter-dark .hero.is-black a.navbar-item.is-active,html.theme--documenter-dark .hero.is-black .navbar-link:hover,html.theme--documenter-dark .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-black .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--documenter-dark .hero.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-light strong{color:inherit}html.theme--documenter-dark .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--documenter-dark .hero.is-light .subtitle a:not(.button),html.theme--documenter-dark .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-light .navbar-menu{background-color:#ecf0f1}}html.theme--documenter-dark .hero.is-light .navbar-item,html.theme--documenter-dark .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light a.navbar-item:hover,html.theme--documenter-dark .hero.is-light a.navbar-item.is-active,html.theme--documenter-dark .hero.is-light .navbar-link:hover,html.theme--documenter-dark .hero.is-light .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--documenter-dark .hero.is-light .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-light .tabs li.is-active a{color:#ecf0f1 !important;opacity:1}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .hero.is-light.is-bold{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}}html.theme--documenter-dark .hero.is-dark,html.theme--documenter-dark .content kbd.hero{background-color:#282f2f;color:#fff}html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-dark strong,html.theme--documenter-dark .content kbd.hero strong{color:inherit}html.theme--documenter-dark .hero.is-dark .title,html.theme--documenter-dark .content kbd.hero .title{color:#fff}html.theme--documenter-dark .hero.is-dark .subtitle,html.theme--documenter-dark .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button),html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button),html.theme--documenter-dark .hero.is-dark .subtitle strong,html.theme--documenter-dark .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-dark .navbar-menu,html.theme--documenter-dark .content kbd.hero .navbar-menu{background-color:#282f2f}}html.theme--documenter-dark .hero.is-dark .navbar-item,html.theme--documenter-dark .content kbd.hero .navbar-item,html.theme--documenter-dark .hero.is-dark .navbar-link,html.theme--documenter-dark .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-dark a.navbar-item:hover,html.theme--documenter-dark .content kbd.hero a.navbar-item:hover,html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active,html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active,html.theme--documenter-dark .hero.is-dark .navbar-link:hover,html.theme--documenter-dark .content kbd.hero .navbar-link:hover,html.theme--documenter-dark .hero.is-dark .navbar-link.is-active,html.theme--documenter-dark .content kbd.hero .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .hero.is-dark .tabs a,html.theme--documenter-dark .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-dark .tabs a:hover,html.theme--documenter-dark .content kbd.hero .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-dark .tabs li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs li.is-active a{color:#282f2f !important;opacity:1}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#282f2f}html.theme--documenter-dark .hero.is-dark.is-bold,html.theme--documenter-dark .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu,html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}}html.theme--documenter-dark .hero.is-primary,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-primary strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--documenter-dark .hero.is-primary .title,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--documenter-dark .hero.is-primary .subtitle,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--documenter-dark .hero.is-primary .subtitle strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-primary .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#375a7f}}html.theme--documenter-dark .hero.is-primary .navbar-item,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--documenter-dark .hero.is-primary .navbar-link,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-primary a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--documenter-dark .hero.is-primary .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--documenter-dark .hero.is-primary .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .hero.is-primary .tabs a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-primary .tabs a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-primary .tabs li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#375a7f !important;opacity:1}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#375a7f}html.theme--documenter-dark .hero.is-primary.is-bold,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}}html.theme--documenter-dark .hero.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-link strong{color:inherit}html.theme--documenter-dark .hero.is-link .title{color:#fff}html.theme--documenter-dark .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-link .subtitle a:not(.button),html.theme--documenter-dark .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-link .navbar-menu{background-color:#1abc9c}}html.theme--documenter-dark .hero.is-link .navbar-item,html.theme--documenter-dark .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-link a.navbar-item:hover,html.theme--documenter-dark .hero.is-link a.navbar-item.is-active,html.theme--documenter-dark .hero.is-link .navbar-link:hover,html.theme--documenter-dark .hero.is-link .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-link .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-link .tabs li.is-active a{color:#1abc9c !important;opacity:1}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1abc9c}html.theme--documenter-dark .hero.is-link.is-bold{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}}html.theme--documenter-dark .hero.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-info strong{color:inherit}html.theme--documenter-dark .hero.is-info .title{color:#fff}html.theme--documenter-dark .hero.is-info .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-info .subtitle a:not(.button),html.theme--documenter-dark .hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-info .navbar-menu{background-color:#024c7d}}html.theme--documenter-dark .hero.is-info .navbar-item,html.theme--documenter-dark .hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-info a.navbar-item:hover,html.theme--documenter-dark .hero.is-info a.navbar-item.is-active,html.theme--documenter-dark .hero.is-info .navbar-link:hover,html.theme--documenter-dark .hero.is-info .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .hero.is-info .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-info .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-info .tabs li.is-active a{color:#024c7d !important;opacity:1}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#024c7d}html.theme--documenter-dark .hero.is-info.is-bold{background-image:linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%)}}html.theme--documenter-dark .hero.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-success strong{color:inherit}html.theme--documenter-dark .hero.is-success .title{color:#fff}html.theme--documenter-dark .hero.is-success .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-success .subtitle a:not(.button),html.theme--documenter-dark .hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-success .navbar-menu{background-color:#008438}}html.theme--documenter-dark .hero.is-success .navbar-item,html.theme--documenter-dark .hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-success a.navbar-item:hover,html.theme--documenter-dark .hero.is-success a.navbar-item.is-active,html.theme--documenter-dark .hero.is-success .navbar-link:hover,html.theme--documenter-dark .hero.is-success .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .hero.is-success .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-success .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-success .tabs li.is-active a{color:#008438 !important;opacity:1}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#008438}html.theme--documenter-dark .hero.is-success.is-bold{background-image:linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%)}}html.theme--documenter-dark .hero.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-warning strong{color:inherit}html.theme--documenter-dark .hero.is-warning .title{color:#fff}html.theme--documenter-dark .hero.is-warning .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button),html.theme--documenter-dark .hero.is-warning .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-warning .navbar-menu{background-color:#ad8100}}html.theme--documenter-dark .hero.is-warning .navbar-item,html.theme--documenter-dark .hero.is-warning .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-warning a.navbar-item:hover,html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active,html.theme--documenter-dark .hero.is-warning .navbar-link:hover,html.theme--documenter-dark .hero.is-warning .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .hero.is-warning .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-warning .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-warning .tabs li.is-active a{color:#ad8100 !important;opacity:1}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ad8100}html.theme--documenter-dark .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%)}}html.theme--documenter-dark .hero.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-danger strong{color:inherit}html.theme--documenter-dark .hero.is-danger .title{color:#fff}html.theme--documenter-dark .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button),html.theme--documenter-dark .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-danger .navbar-menu{background-color:#9e1b0d}}html.theme--documenter-dark .hero.is-danger .navbar-item,html.theme--documenter-dark .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-danger a.navbar-item:hover,html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active,html.theme--documenter-dark .hero.is-danger .navbar-link:hover,html.theme--documenter-dark .hero.is-danger .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-danger .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-danger .tabs li.is-active a{color:#9e1b0d !important;opacity:1}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#9e1b0d}html.theme--documenter-dark .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%)}}html.theme--documenter-dark .hero.is-small .hero-body,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--documenter-dark .hero.is-halfheight .hero-body,html.theme--documenter-dark .hero.is-fullheight .hero-body,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--documenter-dark .hero.is-halfheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .hero.is-halfheight{min-height:50vh}html.theme--documenter-dark .hero.is-fullheight{min-height:100vh}html.theme--documenter-dark .hero-video{overflow:hidden}html.theme--documenter-dark .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--documenter-dark .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-video{display:none}}html.theme--documenter-dark .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-buttons .button{display:flex}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-buttons{display:flex;justify-content:center}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--documenter-dark .hero-head,html.theme--documenter-dark .hero-foot{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-body{padding:3rem 3rem}}html.theme--documenter-dark .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--documenter-dark .section{padding:3rem 3rem}html.theme--documenter-dark .section.is-medium{padding:9rem 4.5rem}html.theme--documenter-dark .section.is-large{padding:18rem 6rem}}html.theme--documenter-dark .footer{background-color:#282f2f;padding:3rem 1.5rem 6rem}html.theme--documenter-dark hr{height:1px}html.theme--documenter-dark h6{text-transform:uppercase;letter-spacing:0.5px}html.theme--documenter-dark .hero{background-color:#343c3d}html.theme--documenter-dark a{transition:all 200ms ease}html.theme--documenter-dark .button{transition:all 200ms ease;border-width:1px;color:#fff}html.theme--documenter-dark .button.is-active,html.theme--documenter-dark .button.is-focused,html.theme--documenter-dark .button:active,html.theme--documenter-dark .button:focus{box-shadow:0 0 0 2px rgba(140,155,157,0.5)}html.theme--documenter-dark .button.is-white.is-hovered,html.theme--documenter-dark .button.is-white:hover{background-color:#fff}html.theme--documenter-dark .button.is-white.is-active,html.theme--documenter-dark .button.is-white.is-focused,html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white:focus{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,0.5)}html.theme--documenter-dark .button.is-black.is-hovered,html.theme--documenter-dark .button.is-black:hover{background-color:#1d1d1d}html.theme--documenter-dark .button.is-black.is-active,html.theme--documenter-dark .button.is-black.is-focused,html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black:focus{border-color:#0a0a0a;box-shadow:0 0 0 2px rgba(10,10,10,0.5)}html.theme--documenter-dark .button.is-light.is-hovered,html.theme--documenter-dark .button.is-light:hover{background-color:#fff}html.theme--documenter-dark .button.is-light.is-active,html.theme--documenter-dark .button.is-light.is-focused,html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light:focus{border-color:#ecf0f1;box-shadow:0 0 0 2px rgba(236,240,241,0.5)}html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered,html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover{background-color:#3a4344}html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused,html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus{border-color:#282f2f;box-shadow:0 0 0 2px rgba(40,47,47,0.5)}html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover{background-color:#436d9a}html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink,html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus{border-color:#375a7f;box-shadow:0 0 0 2px rgba(55,90,127,0.5)}html.theme--documenter-dark .button.is-link.is-hovered,html.theme--documenter-dark .button.is-link:hover{background-color:#1fdeb8}html.theme--documenter-dark .button.is-link.is-active,html.theme--documenter-dark .button.is-link.is-focused,html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link:focus{border-color:#1abc9c;box-shadow:0 0 0 2px rgba(26,188,156,0.5)}html.theme--documenter-dark .button.is-info.is-hovered,html.theme--documenter-dark .button.is-info:hover{background-color:#0363a3}html.theme--documenter-dark .button.is-info.is-active,html.theme--documenter-dark .button.is-info.is-focused,html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info:focus{border-color:#024c7d;box-shadow:0 0 0 2px rgba(2,76,125,0.5)}html.theme--documenter-dark .button.is-success.is-hovered,html.theme--documenter-dark .button.is-success:hover{background-color:#00aa48}html.theme--documenter-dark .button.is-success.is-active,html.theme--documenter-dark .button.is-success.is-focused,html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success:focus{border-color:#008438;box-shadow:0 0 0 2px rgba(0,132,56,0.5)}html.theme--documenter-dark .button.is-warning.is-hovered,html.theme--documenter-dark .button.is-warning:hover{background-color:#d39e00}html.theme--documenter-dark .button.is-warning.is-active,html.theme--documenter-dark .button.is-warning.is-focused,html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning:focus{border-color:#ad8100;box-shadow:0 0 0 2px rgba(173,129,0,0.5)}html.theme--documenter-dark .button.is-danger.is-hovered,html.theme--documenter-dark .button.is-danger:hover{background-color:#c12110}html.theme--documenter-dark .button.is-danger.is-active,html.theme--documenter-dark .button.is-danger.is-focused,html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger:focus{border-color:#9e1b0d;box-shadow:0 0 0 2px rgba(158,27,13,0.5)}html.theme--documenter-dark .label{color:#dbdee0}html.theme--documenter-dark .button,html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .select,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea{height:2.5em}html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .select:after,html.theme--documenter-dark .select select{border-width:1px}html.theme--documenter-dark .control.has-addons .button,html.theme--documenter-dark .control.has-addons .input,html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search>input,html.theme--documenter-dark .control.has-addons .select{margin-right:-1px}html.theme--documenter-dark .notification{background-color:#343c3d}html.theme--documenter-dark .card{box-shadow:none;border:1px solid #343c3d;background-color:#282f2f;border-radius:.4em}html.theme--documenter-dark .card .card-image img{border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-header{box-shadow:none;background-color:rgba(18,18,18,0.2);border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-footer{background-color:rgba(18,18,18,0.2)}html.theme--documenter-dark .card .card-footer,html.theme--documenter-dark .card .card-footer-item{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .notification.is-white a:not(.button){color:#0a0a0a;text-decoration:underline}html.theme--documenter-dark .notification.is-black a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-light a:not(.button){color:rgba(0,0,0,0.7);text-decoration:underline}html.theme--documenter-dark .notification.is-dark a:not(.button),html.theme--documenter-dark .content kbd.notification a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-primary a:not(.button),html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-link a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-info a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-success a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-warning a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-danger a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .tag,html.theme--documenter-dark .content kbd,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{border-radius:.4em}html.theme--documenter-dark .menu-list a{transition:all 300ms ease}html.theme--documenter-dark .modal-card-body{background-color:#282f2f}html.theme--documenter-dark .modal-card-foot,html.theme--documenter-dark .modal-card-head{border-color:#343c3d}html.theme--documenter-dark .message-header{font-weight:700;background-color:#343c3d;color:#fff}html.theme--documenter-dark .message-body{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .navbar{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent{background:none}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar .navbar-menu{background-color:#375a7f;border-radius:0 0 .4em .4em}}html.theme--documenter-dark .hero .navbar,html.theme--documenter-dark body>.navbar{border-radius:0}html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous{border-width:1px}html.theme--documenter-dark .panel-block,html.theme--documenter-dark .panel-heading,html.theme--documenter-dark .panel-tabs{border-width:1px}html.theme--documenter-dark .panel-block:first-child,html.theme--documenter-dark .panel-heading:first-child,html.theme--documenter-dark .panel-tabs:first-child{border-top-width:1px}html.theme--documenter-dark .panel-heading{font-weight:700}html.theme--documenter-dark .panel-tabs a{border-width:1px;margin-bottom:-1px}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#17a689}html.theme--documenter-dark .panel-block:hover{color:#1dd2af}html.theme--documenter-dark .panel-block:hover .panel-icon{color:#1dd2af}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#17a689}html.theme--documenter-dark .tabs a{border-bottom-width:1px;margin-bottom:-1px}html.theme--documenter-dark .tabs ul{border-bottom-width:1px}html.theme--documenter-dark .tabs.is-boxed a{border-width:1px}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#1f2424}html.theme--documenter-dark .tabs.is-toggle li a{border-width:1px;margin-bottom:0}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark h1 .docs-heading-anchor,html.theme--documenter-dark h1 .docs-heading-anchor:hover,html.theme--documenter-dark h1 .docs-heading-anchor:visited,html.theme--documenter-dark h2 .docs-heading-anchor,html.theme--documenter-dark h2 .docs-heading-anchor:hover,html.theme--documenter-dark h2 .docs-heading-anchor:visited,html.theme--documenter-dark h3 .docs-heading-anchor,html.theme--documenter-dark h3 .docs-heading-anchor:hover,html.theme--documenter-dark h3 .docs-heading-anchor:visited,html.theme--documenter-dark h4 .docs-heading-anchor,html.theme--documenter-dark h4 .docs-heading-anchor:hover,html.theme--documenter-dark h4 .docs-heading-anchor:visited,html.theme--documenter-dark h5 .docs-heading-anchor,html.theme--documenter-dark h5 .docs-heading-anchor:hover,html.theme--documenter-dark h5 .docs-heading-anchor:visited,html.theme--documenter-dark h6 .docs-heading-anchor,html.theme--documenter-dark h6 .docs-heading-anchor:hover,html.theme--documenter-dark h6 .docs-heading-anchor:visited{color:#f2f2f2}html.theme--documenter-dark h1 .docs-heading-anchor-permalink,html.theme--documenter-dark h2 .docs-heading-anchor-permalink,html.theme--documenter-dark h3 .docs-heading-anchor-permalink,html.theme--documenter-dark h4 .docs-heading-anchor-permalink,html.theme--documenter-dark h5 .docs-heading-anchor-permalink,html.theme--documenter-dark h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--documenter-dark .docs-light-only{display:none !important}html.theme--documenter-dark pre{position:relative;overflow:hidden}html.theme--documenter-dark pre code,html.theme--documenter-dark pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--documenter-dark pre code:first-of-type,html.theme--documenter-dark pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--documenter-dark pre code:last-of-type,html.theme--documenter-dark pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--documenter-dark pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#fff;cursor:pointer;text-align:center}html.theme--documenter-dark pre .copy-button:focus,html.theme--documenter-dark pre .copy-button:hover{opacity:1;background:rgba(255,255,255,0.1);color:#1abc9c}html.theme--documenter-dark pre .copy-button.success{color:#259a12;opacity:1}html.theme--documenter-dark pre .copy-button.error{color:#cb3c33;opacity:1}html.theme--documenter-dark pre:hover .copy-button{opacity:1}html.theme--documenter-dark .admonition{background-color:#282f2f;border-style:solid;border-width:1px;border-color:#5e6d6f;border-radius:.4em;font-size:1rem}html.theme--documenter-dark .admonition strong{color:currentColor}html.theme--documenter-dark .admonition.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--documenter-dark .admonition.is-medium{font-size:1.25rem}html.theme--documenter-dark .admonition.is-large{font-size:1.5rem}html.theme--documenter-dark .admonition.is-default{background-color:#282f2f;border-color:#5e6d6f}html.theme--documenter-dark .admonition.is-default>.admonition-header{background-color:#5e6d6f;color:#fff}html.theme--documenter-dark .admonition.is-default>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-info{background-color:#282f2f;border-color:#024c7d}html.theme--documenter-dark .admonition.is-info>.admonition-header{background-color:#024c7d;color:#fff}html.theme--documenter-dark .admonition.is-info>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-success{background-color:#282f2f;border-color:#008438}html.theme--documenter-dark .admonition.is-success>.admonition-header{background-color:#008438;color:#fff}html.theme--documenter-dark .admonition.is-success>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-warning{background-color:#282f2f;border-color:#ad8100}html.theme--documenter-dark .admonition.is-warning>.admonition-header{background-color:#ad8100;color:#fff}html.theme--documenter-dark .admonition.is-warning>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-danger{background-color:#282f2f;border-color:#9e1b0d}html.theme--documenter-dark .admonition.is-danger>.admonition-header{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .admonition.is-danger>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-compat{background-color:#282f2f;border-color:#137886}html.theme--documenter-dark .admonition.is-compat>.admonition-header{background-color:#137886;color:#fff}html.theme--documenter-dark .admonition.is-compat>.admonition-body{color:#fff}html.theme--documenter-dark .admonition-header{color:#fff;background-color:#5e6d6f;align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--documenter-dark .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--documenter-dark details.admonition.is-details>.admonition-header{list-style:none}html.theme--documenter-dark details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--documenter-dark details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--documenter-dark .admonition-body{color:#fff;padding:0.5rem .75rem}html.theme--documenter-dark .admonition-body pre{background-color:#282f2f}html.theme--documenter-dark .admonition-body code{background-color:rgba(255,255,255,0.05)}html.theme--documenter-dark .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:1px solid #5e6d6f;box-shadow:none;max-width:100%}html.theme--documenter-dark .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#282f2f;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>header code{background-color:transparent}html.theme--documenter-dark .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--documenter-dark .docstring>header .docstring-binding{margin-right:0.3em}html.theme--documenter-dark .docstring>header .docstring-category{margin-left:0.3em}html.theme--documenter-dark .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>section:last-child{border-bottom:none}html.theme--documenter-dark .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--documenter-dark .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--documenter-dark .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--documenter-dark .documenter-example-output{background-color:#1f2424}html.theme--documenter-dark .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#282f2f;color:#fff;border-bottom:3px solid #9e1b0d;padding:10px 35px;text-align:center;font-size:15px}html.theme--documenter-dark .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--documenter-dark .outdated-warning-overlay a{color:#1abc9c}html.theme--documenter-dark .outdated-warning-overlay a:hover{color:#1dd2af}html.theme--documenter-dark .content pre{border:1px solid #5e6d6f}html.theme--documenter-dark .content code{font-weight:inherit}html.theme--documenter-dark .content a code{color:#1abc9c}html.theme--documenter-dark .content h1 code,html.theme--documenter-dark .content h2 code,html.theme--documenter-dark .content h3 code,html.theme--documenter-dark .content h4 code,html.theme--documenter-dark .content h5 code,html.theme--documenter-dark .content h6 code{color:#f2f2f2}html.theme--documenter-dark .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--documenter-dark .content blockquote>ul:first-child,html.theme--documenter-dark .content blockquote>ol:first-child,html.theme--documenter-dark .content .admonition-body>ul:first-child,html.theme--documenter-dark .content .admonition-body>ol:first-child{margin-top:0}html.theme--documenter-dark pre,html.theme--documenter-dark code{font-variant-ligatures:no-contextual}html.theme--documenter-dark .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb a.is-disabled,html.theme--documenter-dark .breadcrumb a.is-disabled:hover{color:#f2f2f2}html.theme--documenter-dark .hljs{background:initial !important}html.theme--documenter-dark .katex .katex-mathml{top:0;right:0}html.theme--documenter-dark .katex-display,html.theme--documenter-dark mjx-container,html.theme--documenter-dark .MathJax_Display{margin:0.5em 0 !important}html.theme--documenter-dark html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--documenter-dark li.no-marker{list-style:none}html.theme--documenter-dark #documenter .docs-main>article{overflow-wrap:break-word}html.theme--documenter-dark #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main{width:100%}html.theme--documenter-dark #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-main>header,html.theme--documenter-dark #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar{background-color:#1f2424;border-bottom:1px solid #5e6d6f;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--documenter-dark #documenter .docs-main section.footnotes{border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--documenter-dark #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #5e6d6f;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--documenter-dark #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--documenter-dark #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--documenter-dark #documenter .docs-sidebar{display:flex;flex-direction:column;color:#fff;background-color:#282f2f;border-right:1px solid #5e6d6f;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--documenter-dark #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar{left:0;top:0}}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a,html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a:hover{color:#fff}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #5e6d6f;display:none;padding:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #5e6d6f;padding-bottom:1.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#fff;background:#282f2f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#fff;background-color:#32393a}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #5e6d6f;border-bottom:1px solid #5e6d6f;background-color:#1f2424}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#1f2424;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#32393a;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--documenter-dark #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}html.theme--documenter-dark kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--documenter-dark .search-min-width-50{min-width:50%}html.theme--documenter-dark .search-min-height-100{min-height:100%}html.theme--documenter-dark .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--documenter-dark .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--documenter-dark .search-result-link:hover,html.theme--documenter-dark .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--documenter-dark .search-result-link .property-search-result-badge,html.theme--documenter-dark .search-result-link .search-filter{transition:all 300ms}html.theme--documenter-dark .property-search-result-badge,html.theme--documenter-dark .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--documenter-dark .search-result-link:hover .property-search-result-badge,html.theme--documenter-dark .search-result-link:hover .search-filter,html.theme--documenter-dark .search-result-link:focus .property-search-result-badge,html.theme--documenter-dark .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--documenter-dark .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--documenter-dark .search-filter:hover,html.theme--documenter-dark .search-filter:focus{color:#333}html.theme--documenter-dark .search-filter-selected{color:#f5f5f5;background-color:rgba(139,0,139,0.5)}html.theme--documenter-dark .search-filter-selected:hover,html.theme--documenter-dark .search-filter-selected:focus{color:#f5f5f5}html.theme--documenter-dark .search-result-highlight{background-color:#ffdd57;color:black}html.theme--documenter-dark .search-divider{border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .search-result-title{width:85%;color:#f5f5f5}html.theme--documenter-dark .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--documenter-dark .w-100{width:100%}html.theme--documenter-dark .gap-2{gap:0.5rem}html.theme--documenter-dark .gap-4{gap:1rem}html.theme--documenter-dark .gap-8{gap:2rem}html.theme--documenter-dark{background-color:#1f2424;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark .ansi span.sgr1{font-weight:bolder}html.theme--documenter-dark .ansi span.sgr2{font-weight:lighter}html.theme--documenter-dark .ansi span.sgr3{font-style:italic}html.theme--documenter-dark .ansi span.sgr4{text-decoration:underline}html.theme--documenter-dark .ansi span.sgr7{color:#1f2424;background-color:#fff}html.theme--documenter-dark .ansi span.sgr8{color:transparent}html.theme--documenter-dark .ansi span.sgr8 span{color:transparent}html.theme--documenter-dark .ansi span.sgr9{text-decoration:line-through}html.theme--documenter-dark .ansi span.sgr30{color:#242424}html.theme--documenter-dark .ansi span.sgr31{color:#f6705f}html.theme--documenter-dark .ansi span.sgr32{color:#4fb43a}html.theme--documenter-dark .ansi span.sgr33{color:#f4c72f}html.theme--documenter-dark .ansi span.sgr34{color:#7587f0}html.theme--documenter-dark .ansi span.sgr35{color:#bc89d3}html.theme--documenter-dark .ansi span.sgr36{color:#49b6ca}html.theme--documenter-dark .ansi span.sgr37{color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr40{background-color:#242424}html.theme--documenter-dark .ansi span.sgr41{background-color:#f6705f}html.theme--documenter-dark .ansi span.sgr42{background-color:#4fb43a}html.theme--documenter-dark .ansi span.sgr43{background-color:#f4c72f}html.theme--documenter-dark .ansi span.sgr44{background-color:#7587f0}html.theme--documenter-dark .ansi span.sgr45{background-color:#bc89d3}html.theme--documenter-dark .ansi span.sgr46{background-color:#49b6ca}html.theme--documenter-dark .ansi span.sgr47{background-color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr90{color:#92a0a2}html.theme--documenter-dark .ansi span.sgr91{color:#ff8674}html.theme--documenter-dark .ansi span.sgr92{color:#79d462}html.theme--documenter-dark .ansi span.sgr93{color:#ffe76b}html.theme--documenter-dark .ansi span.sgr94{color:#8a98ff}html.theme--documenter-dark .ansi span.sgr95{color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr96{color:#6bc8db}html.theme--documenter-dark .ansi span.sgr97{color:#ecf0f1}html.theme--documenter-dark .ansi span.sgr100{background-color:#92a0a2}html.theme--documenter-dark .ansi span.sgr101{background-color:#ff8674}html.theme--documenter-dark .ansi span.sgr102{background-color:#79d462}html.theme--documenter-dark .ansi span.sgr103{background-color:#ffe76b}html.theme--documenter-dark .ansi span.sgr104{background-color:#8a98ff}html.theme--documenter-dark .ansi span.sgr105{background-color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr106{background-color:#6bc8db}html.theme--documenter-dark .ansi span.sgr107{background-color:#ecf0f1}html.theme--documenter-dark code.language-julia-repl>span.hljs-meta{color:#4fb43a;font-weight:bolder}html.theme--documenter-dark .hljs{background:#2b2b2b;color:#f8f8f2}html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-quote{color:#d4d0ab}html.theme--documenter-dark .hljs-variable,html.theme--documenter-dark .hljs-template-variable,html.theme--documenter-dark .hljs-tag,html.theme--documenter-dark .hljs-name,html.theme--documenter-dark .hljs-selector-id,html.theme--documenter-dark .hljs-selector-class,html.theme--documenter-dark .hljs-regexp,html.theme--documenter-dark .hljs-deletion{color:#ffa07a}html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-link{color:#f5ab35}html.theme--documenter-dark .hljs-attribute{color:#ffd700}html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-addition{color:#abe338}html.theme--documenter-dark .hljs-title,html.theme--documenter-dark .hljs-section{color:#00e0e0}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{color:#dcc6e0}html.theme--documenter-dark .hljs-emphasis{font-style:italic}html.theme--documenter-dark .hljs-strong{font-weight:bold}@media screen and (-ms-high-contrast: active){html.theme--documenter-dark .hljs-addition,html.theme--documenter-dark .hljs-attribute,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-link,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-quote{color:highlight}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{font-weight:bold}}html.theme--documenter-dark .hljs-subst{color:#f8f8f2} diff --git a/dev/assets/themes/documenter-light.css b/dev/assets/themes/documenter-light.css deleted file mode 100644 index 60a317a..0000000 --- a/dev/assets/themes/documenter-light.css +++ /dev/null @@ -1,9 +0,0 @@ -.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.is-active.button{outline:none}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled],.pagination-ellipsis[disabled],.file-cta[disabled],.file-name[disabled],.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],.button[disabled],fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] .button{cursor:not-allowed}.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}.admonition:not(:last-child),.tabs:not(:last-child),.pagination:not(:last-child),.message:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,0.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,0.4)}.is-small.modal-close,#documenter .docs-sidebar form.docs-search>input.modal-close,.is-small.delete,#documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.modal-background,.modal,.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#4eb5de !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#27a1d2 !important}.has-background-primary{background-color:#4eb5de !important}.has-text-primary-light{color:#eef8fc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#c3e6f4 !important}.has-background-primary-light{background-color:#eef8fc !important}.has-text-primary-dark{color:#1a6d8e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#228eb9 !important}.has-background-primary-dark{background-color:#1a6d8e !important}.has-text-link{color:#2e63b8 !important}a.has-text-link:hover,a.has-text-link:focus{color:#244d8f !important}.has-background-link{background-color:#2e63b8 !important}.has-text-link-light{color:#eff3fb !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c6d6f1 !important}.has-background-link-light{background-color:#eff3fb !important}.has-text-link-dark{color:#3169c4 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#5485d4 !important}.has-background-link-dark{background-color:#3169c4 !important}.has-text-info{color:#209cee !important}a.has-text-info:hover,a.has-text-info:focus{color:#1081cb !important}.has-background-info{background-color:#209cee !important}.has-text-info-light{color:#ecf7fe !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#bde2fa !important}.has-background-info-light{background-color:#ecf7fe !important}.has-text-info-dark{color:#0e72b4 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#1190e3 !important}.has-background-info-dark{background-color:#0e72b4 !important}.has-text-success{color:#22c35b !important}a.has-text-success:hover,a.has-text-success:focus{color:#1a9847 !important}.has-background-success{background-color:#22c35b !important}.has-text-success-light{color:#eefcf3 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c2f4d4 !important}.has-background-success-light{background-color:#eefcf3 !important}.has-text-success-dark{color:#198f43 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#21bb57 !important}.has-background-success-dark{background-color:#198f43 !important}.has-text-warning{color:#ffdd57 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#ffd324 !important}.has-background-warning{background-color:#ffdd57 !important}.has-text-warning-light{color:#fffbeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#fff1b8 !important}.has-background-warning-light{background-color:#fffbeb !important}.has-text-warning-dark{color:#947600 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#c79f00 !important}.has-background-warning-dark{background-color:#947600 !important}.has-text-danger{color:#da0b00 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a70800 !important}.has-background-danger{background-color:#da0b00 !important}.has-text-danger-light{color:#ffeceb !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#ffbbb8 !important}.has-background-danger-light{background-color:#ffeceb !important}.has-text-danger-dark{color:#f50c00 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#ff3429 !important}.has-background-danger-dark{background-color:#f50c00 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#6b6b6b !important}.has-background-grey{background-color:#6b6b6b !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,.docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}body{color:#222;font-size:1em;font-weight:400;line-height:1.5}a{color:#2e63b8;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:rgba(0,0,0,0.05);color:#000;font-size:.875em;font-weight:normal;padding:.1em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type="checkbox"],input[type="radio"]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#222;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#222;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#222}@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:#bbb;color:#222;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #2e63b8}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #2e63b8}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#222;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button #documenter .docs-sidebar form.docs-search>input.icon,#documenter .docs-sidebar .button form.docs-search>input.icon,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#3c5dcd;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#222;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#222}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#222}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#2e63b8;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#2e63b8;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-dark,.content kbd.button{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.content kbd.button:hover,.button.is-dark.is-hovered,.content kbd.button.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.content kbd.button:focus,.button.is-dark.is-focused,.content kbd.button.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.content kbd.button:focus:not(:active),.button.is-dark.is-focused:not(:active),.content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.button.is-dark:active,.content kbd.button:active,.button.is-dark.is-active,.content kbd.button.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],.content kbd.button[disabled],fieldset[disabled] .button.is-dark,fieldset[disabled] .content kbd.button,.content fieldset[disabled] kbd.button{background-color:#363636;border-color:#363636;box-shadow:none}.button.is-dark.is-inverted,.content kbd.button.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.content kbd.button.is-inverted:hover,.button.is-dark.is-inverted.is-hovered,.content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],.content kbd.button.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted,fieldset[disabled] .content kbd.button.is-inverted,.content fieldset[disabled] kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after,.content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined,.content kbd.button.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.content kbd.button.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.content kbd.button.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.content kbd.button.is-outlined:focus,.button.is-dark.is-outlined.is-focused,.content kbd.button.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after,.content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.content kbd.button.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.content kbd.button.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after,.content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined[disabled],.content kbd.button.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined,fieldset[disabled] .content kbd.button.is-outlined,.content fieldset[disabled] kbd.button.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined,.content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.content kbd.button.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.content kbd.button.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.content kbd.button.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused,.content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.content kbd.button.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.content kbd.button.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],.content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined,fieldset[disabled] .content kbd.button.is-inverted.is-outlined,.content fieldset[disabled] kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary,.docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:transparent;color:#fff}.button.is-primary:hover,.docstring>section>a.button.docs-sourcelink:hover,.button.is-primary.is-hovered,.docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#43b1dc;border-color:transparent;color:#fff}.button.is-primary:focus,.docstring>section>a.button.docs-sourcelink:focus,.button.is-primary.is-focused,.docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.docstring>section>a.button.docs-sourcelink:focus:not(:active),.button.is-primary.is-focused:not(:active),.docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.button.is-primary:active,.docstring>section>a.button.docs-sourcelink:active,.button.is-primary.is-active,.docstring>section>a.button.is-active.docs-sourcelink{background-color:#39acda;border-color:transparent;color:#fff}.button.is-primary[disabled],.docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary,fieldset[disabled] .docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;box-shadow:none}.button.is-primary.is-inverted,.docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted:hover,.docstring>section>a.button.is-inverted.docs-sourcelink:hover,.button.is-primary.is-inverted.is-hovered,.docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],.docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted,fieldset[disabled] .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#4eb5de}.button.is-primary.is-loading::after,.docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined,.docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;color:#4eb5de}.button.is-primary.is-outlined:hover,.docstring>section>a.button.is-outlined.docs-sourcelink:hover,.button.is-primary.is-outlined.is-hovered,.docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-outlined:focus,.docstring>section>a.button.is-outlined.docs-sourcelink:focus,.button.is-primary.is-outlined.is-focused,.docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.button.is-primary.is-outlined.is-loading::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],.docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-outlined,fieldset[disabled] .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;box-shadow:none;color:#4eb5de}.button.is-primary.is-inverted.is-outlined,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-inverted.is-outlined:focus,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,.button.is-primary.is-inverted.is-outlined.is-focused,.docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-inverted.is-outlined[disabled],.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined,fieldset[disabled] .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light,.docstring>section>a.button.is-light.docs-sourcelink{background-color:#eef8fc;color:#1a6d8e}.button.is-primary.is-light:hover,.docstring>section>a.button.is-light.docs-sourcelink:hover,.button.is-primary.is-light.is-hovered,.docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e3f3fa;border-color:transparent;color:#1a6d8e}.button.is-primary.is-light:active,.docstring>section>a.button.is-light.docs-sourcelink:active,.button.is-primary.is-light.is-active,.docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d8eff8;border-color:transparent;color:#1a6d8e}.button.is-link{background-color:#2e63b8;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#2b5eae;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button.is-link:active,.button.is-link.is-active{background-color:#2958a4;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#2e63b8;border-color:#2e63b8;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#2e63b8}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;color:#2e63b8}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;box-shadow:none;color:#2e63b8}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff3fb;color:#3169c4}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e4ecf8;border-color:transparent;color:#3169c4}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dae5f6;border-color:transparent;color:#3169c4}.button.is-info{background-color:#209cee;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#1497ed;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.button.is-info:active,.button.is-info.is-active{background-color:#1190e3;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#209cee;border-color:#209cee;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#209cee}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#209cee}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#209cee;color:#209cee}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#209cee;border-color:#209cee;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #209cee #209cee !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#209cee;box-shadow:none;color:#209cee}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#209cee}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #209cee #209cee !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#ecf7fe;color:#0e72b4}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e0f1fd;border-color:transparent;color:#0e72b4}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#d4ecfc;border-color:transparent;color:#0e72b4}.button.is-success{background-color:#22c35b;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#20b856;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.button.is-success:active,.button.is-success.is-active{background-color:#1ead51;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#22c35b;border-color:#22c35b;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#22c35b}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#22c35b}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#22c35b;color:#22c35b}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#22c35b;border-color:#22c35b;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #22c35b #22c35b !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#22c35b;box-shadow:none;color:#22c35b}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#22c35b}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #22c35b #22c35b !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#eefcf3;color:#198f43}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e3faeb;border-color:transparent;color:#198f43}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#d8f8e3;border-color:transparent;color:#198f43}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffda4a;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd83e;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffdd57;border-color:#ffdd57;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#ffdd57}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ffdd57}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,0.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;box-shadow:none;color:#ffdd57}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ffdd57}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-warning.is-light{background-color:#fffbeb;color:#947600}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff8de;border-color:transparent;color:#947600}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff6d1;border-color:transparent;color:#947600}.button.is-danger{background-color:#da0b00;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#cd0a00;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#c10a00;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#da0b00;border-color:#da0b00;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#da0b00}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#da0b00}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#da0b00;color:#da0b00}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#da0b00;border-color:#da0b00;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #da0b00 #da0b00 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#da0b00;box-shadow:none;color:#da0b00}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#da0b00}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #da0b00 #da0b00 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#ffeceb;color:#f50c00}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#ffe0de;border-color:transparent;color:#f50c00}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#ffd3d1;border-color:transparent;color:#f50c00}.button.is-small,#documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}.button.is-small:not(.is-rounded),#documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#6b6b6b;box-shadow:none;pointer-events:none}.button.is-rounded,#documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:0.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){.button.is-responsive.is-small,#documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.65625rem}.button.is-responsive.is-medium{font-size:.75rem}.button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.button.is-responsive.is-small,#documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.75rem}.button.is-responsive.is-medium{font-size:1rem}.button.is-responsive.is-large{font-size:1.25rem}}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){.container{max-width:992px}}@media screen and (max-width: 1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:0.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#222;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:0.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:0.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:0.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:0.8em}.content h5{font-size:1.125em;margin-bottom:0.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}.content ol.is-lower-roman:not([type]){list-style-type:lower-roman}.content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}.content ol.is-upper-roman:not([type]){list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:0.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.content table th{color:#222}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#222}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#222}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small,#documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}.content.is-normal{font-size:1rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small,#documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image,#documenter .docs-sidebar .docs-logo>img{display:block;position:relative}.image img,#documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}.image img.is-rounded,#documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}.image.is-fullwidth,#documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,#documenter .docs-sidebar .docs-logo>img.is-square,.image.is-1by1,#documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}.image.is-5by4,#documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}.image.is-4by3,#documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}.image.is-3by2,#documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}.image.is-5by3,#documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}.image.is-16by9,#documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}.image.is-2by1,#documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}.image.is-3by1,#documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}.image.is-4by5,#documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}.image.is-3by4,#documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}.image.is-2by3,#documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}.image.is-3by5,#documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}.image.is-9by16,#documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}.image.is-1by2,#documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}.image.is-1by3,#documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}.image.is-16x16,#documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}.image.is-24x24,#documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}.image.is-32x32,#documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}.image.is-48x48,#documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}.image.is-64x64,#documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}.image.is-96x96,#documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}.image.is-128x128,#documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:0.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.notification.is-dark,.content kbd.notification{background-color:#363636;color:#fff}.notification.is-primary,.docstring>section>a.notification.docs-sourcelink{background-color:#4eb5de;color:#fff}.notification.is-primary.is-light,.docstring>section>a.notification.is-light.docs-sourcelink{background-color:#eef8fc;color:#1a6d8e}.notification.is-link{background-color:#2e63b8;color:#fff}.notification.is-link.is-light{background-color:#eff3fb;color:#3169c4}.notification.is-info{background-color:#209cee;color:#fff}.notification.is-info.is-light{background-color:#ecf7fe;color:#0e72b4}.notification.is-success{background-color:#22c35b;color:#fff}.notification.is-success.is-light{background-color:#eefcf3;color:#198f43}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.notification.is-warning.is-light{background-color:#fffbeb;color:#947600}.notification.is-danger{background-color:#da0b00;color:#fff}.notification.is-danger.is-light{background-color:#ffeceb;color:#f50c00}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#222}.progress::-moz-progress-bar{background-color:#222}.progress::-ms-fill{background-color:#222;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #ededed 30%)}.progress.is-dark::-webkit-progress-value,.content kbd.progress::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar,.content kbd.progress::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill,.content kbd.progress::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate,.content kbd.progress:indeterminate{background-image:linear-gradient(to right, #363636 30%, #ededed 30%)}.progress.is-primary::-webkit-progress-value,.docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#4eb5de}.progress.is-primary::-moz-progress-bar,.docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#4eb5de}.progress.is-primary::-ms-fill,.docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#4eb5de}.progress.is-primary:indeterminate,.docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #4eb5de 30%, #ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#2e63b8}.progress.is-link::-moz-progress-bar{background-color:#2e63b8}.progress.is-link::-ms-fill{background-color:#2e63b8}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #2e63b8 30%, #ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#209cee}.progress.is-info::-moz-progress-bar{background-color:#209cee}.progress.is-info::-ms-fill{background-color:#209cee}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #209cee 30%, #ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#22c35b}.progress.is-success::-moz-progress-bar{background-color:#22c35b}.progress.is-success::-ms-fill{background-color:#22c35b}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #22c35b 30%, #ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ffdd57 30%, #ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#da0b00}.progress.is-danger::-moz-progress-bar{background-color:#da0b00}.progress.is-danger::-ms-fill{background-color:#da0b00}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #da0b00 30%, #ededed 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right, #222 30%, #ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small,#documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#222}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.table td.is-link,.table th.is-link{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.table td.is-info,.table th.is-info{background-color:#209cee;border-color:#209cee;color:#fff}.table td.is-success,.table th.is-success{background-color:#22c35b;border-color:#22c35b;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,0.7)}.table td.is-danger,.table th.is-danger{background-color:#da0b00;border-color:#da0b00;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#4eb5de;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#222}.table th:not([align]){text-align:left}.table tr.is-selected{background-color:#4eb5de;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:rgba(0,0,0,0)}.table thead td,.table thead th{border-width:0 0 2px;color:#222}.table tfoot{background-color:rgba(0,0,0,0)}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#222}.table tbody{background-color:rgba(0,0,0,0)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:0.25em 0.5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag,.tags .content kbd,.content .tags kbd,.tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}.tags .tag:not(:last-child),.tags .content kbd:not(:last-child),.content .tags kbd:not(:last-child),.tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large),.tags.are-medium .content kbd:not(.is-normal):not(.is-large),.content .tags.are-medium kbd:not(.is-normal):not(.is-large),.tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium),.tags.are-large .content kbd:not(.is-normal):not(.is-medium),.content .tags.are-large kbd:not(.is-normal):not(.is-medium),.tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag,.tags.is-centered .content kbd,.content .tags.is-centered kbd,.tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child),.tags.is-right .content kbd:not(:first-child),.content .tags.is-right kbd:not(:first-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}.tags.is-right .tag:not(:last-child),.tags.is-right .content kbd:not(:last-child),.content .tags.is-right kbd:not(:last-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}.tags.has-addons .tag,.tags.has-addons .content kbd,.content .tags.has-addons kbd,.tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}.tags.has-addons .tag:not(:first-child),.tags.has-addons .content kbd:not(:first-child),.content .tags.has-addons kbd:not(:first-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child),.tags.has-addons .content kbd:not(:last-child),.content .tags.has-addons kbd:not(:last-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#222;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.tag:not(body) .delete,.content kbd:not(body) .delete,.docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag.is-white:not(body),.content kbd.is-white:not(body),.docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}.tag.is-black:not(body),.content kbd.is-black:not(body),.docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}.tag.is-light:not(body),.content kbd.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.tag.is-dark:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink.is-dark:not(body),.content .docstring>section>kbd:not(body){background-color:#363636;color:#fff}.tag.is-primary:not(body),.content kbd.is-primary:not(body),.docstring>section>a.docs-sourcelink:not(body){background-color:#4eb5de;color:#fff}.tag.is-primary.is-light:not(body),.content kbd.is-primary.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#eef8fc;color:#1a6d8e}.tag.is-link:not(body),.content kbd.is-link:not(body),.docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#2e63b8;color:#fff}.tag.is-link.is-light:not(body),.content kbd.is-link.is-light:not(body),.docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#eff3fb;color:#3169c4}.tag.is-info:not(body),.content kbd.is-info:not(body),.docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#209cee;color:#fff}.tag.is-info.is-light:not(body),.content kbd.is-info.is-light:not(body),.docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#ecf7fe;color:#0e72b4}.tag.is-success:not(body),.content kbd.is-success:not(body),.docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#22c35b;color:#fff}.tag.is-success.is-light:not(body),.content kbd.is-success.is-light:not(body),.docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#eefcf3;color:#198f43}.tag.is-warning:not(body),.content kbd.is-warning:not(body),.docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ffdd57;color:rgba(0,0,0,0.7)}.tag.is-warning.is-light:not(body),.content kbd.is-warning.is-light:not(body),.docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fffbeb;color:#947600}.tag.is-danger:not(body),.content kbd.is-danger:not(body),.docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#da0b00;color:#fff}.tag.is-danger.is-light:not(body),.content kbd.is-danger.is-light:not(body),.docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#ffeceb;color:#f50c00}.tag.is-normal:not(body),.content kbd.is-normal:not(body),.docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}.tag.is-medium:not(body),.content kbd.is-medium:not(body),.docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}.tag.is-large:not(body),.content kbd.is-large:not(body),.docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child),.content kbd:not(body) .icon:first-child:not(:last-child),.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child),.content kbd:not(body) .icon:last-child:not(:first-child),.docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child,.content kbd:not(body) .icon:first-child:last-child,.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag.is-delete:not(body),.content kbd.is-delete:not(body),.docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before,.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}.tag.is-delete:not(body):hover,.content kbd.is-delete:not(body):hover,.docstring>section>a.docs-sourcelink.is-delete:not(body):hover,.tag.is-delete:not(body):focus,.content kbd.is-delete:not(body):focus,.docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#e8e8e8}.tag.is-delete:not(body):active,.content kbd.is-delete:not(body):active,.docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#dbdbdb}.tag.is-rounded:not(body),#documenter .docs-sidebar form.docs-search>input:not(body),.content kbd.is-rounded:not(body),#documenter .docs-sidebar .content form.docs-search>input:not(body),.docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}a.tag:hover,.docstring>section>a.docs-sourcelink:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.title .content kbd,.content .title kbd,.title .docstring>section>a.docs-sourcelink,.subtitle .tag,.subtitle .content kbd,.content .subtitle kbd,.subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}.title{color:#222;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#222;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#222;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#222}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#707070}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#707070}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#707070}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#707070}.select select:hover,.textarea:hover,.input:hover,#documenter .docs-sidebar form.docs-search>input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input,#documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{border-color:#2e63b8;box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#6b6b6b}.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,.input[disabled]::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,.input[disabled]::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-webkit-input-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,.input[disabled]:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,.input[disabled]:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-ms-input-placeholder{color:rgba(107,107,107,0.3)}.textarea,.input,#documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}.textarea[readonly],.input[readonly],#documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}.is-white.textarea,.is-white.input,#documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,#documenter .docs-sidebar form.docs-search>input.is-white:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-white.textarea:active,.is-white.input:active,#documenter .docs-sidebar form.docs-search>input.is-white:active,.is-white.is-active.textarea,.is-white.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.is-black.textarea,.is-black.input,#documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,#documenter .docs-sidebar form.docs-search>input.is-black:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-black.textarea:active,.is-black.input:active,#documenter .docs-sidebar form.docs-search>input.is-black:active,.is-black.is-active.textarea,.is-black.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.is-light.textarea,.is-light.input,#documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,#documenter .docs-sidebar form.docs-search>input.is-light:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-light.textarea:active,.is-light.input:active,#documenter .docs-sidebar form.docs-search>input.is-light:active,.is-light.is-active.textarea,.is-light.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.is-dark.textarea,.content kbd.textarea,.is-dark.input,#documenter .docs-sidebar form.docs-search>input.is-dark,.content kbd.input{border-color:#363636}.is-dark.textarea:focus,.content kbd.textarea:focus,.is-dark.input:focus,#documenter .docs-sidebar form.docs-search>input.is-dark:focus,.content kbd.input:focus,.is-dark.is-focused.textarea,.content kbd.is-focused.textarea,.is-dark.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.content kbd.is-focused.input,#documenter .docs-sidebar .content form.docs-search>input.is-focused,.is-dark.textarea:active,.content kbd.textarea:active,.is-dark.input:active,#documenter .docs-sidebar form.docs-search>input.is-dark:active,.content kbd.input:active,.is-dark.is-active.textarea,.content kbd.is-active.textarea,.is-dark.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.content kbd.is-active.input,#documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.is-primary.textarea,.docstring>section>a.textarea.docs-sourcelink,.is-primary.input,#documenter .docs-sidebar form.docs-search>input.is-primary,.docstring>section>a.input.docs-sourcelink{border-color:#4eb5de}.is-primary.textarea:focus,.docstring>section>a.textarea.docs-sourcelink:focus,.is-primary.input:focus,#documenter .docs-sidebar form.docs-search>input.is-primary:focus,.docstring>section>a.input.docs-sourcelink:focus,.is-primary.is-focused.textarea,.docstring>section>a.is-focused.textarea.docs-sourcelink,.is-primary.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.docstring>section>a.is-focused.input.docs-sourcelink,.is-primary.textarea:active,.docstring>section>a.textarea.docs-sourcelink:active,.is-primary.input:active,#documenter .docs-sidebar form.docs-search>input.is-primary:active,.docstring>section>a.input.docs-sourcelink:active,.is-primary.is-active.textarea,.docstring>section>a.is-active.textarea.docs-sourcelink,.is-primary.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.is-link.textarea,.is-link.input,#documenter .docs-sidebar form.docs-search>input.is-link{border-color:#2e63b8}.is-link.textarea:focus,.is-link.input:focus,#documenter .docs-sidebar form.docs-search>input.is-link:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-link.textarea:active,.is-link.input:active,#documenter .docs-sidebar form.docs-search>input.is-link:active,.is-link.is-active.textarea,.is-link.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.is-info.textarea,.is-info.input,#documenter .docs-sidebar form.docs-search>input.is-info{border-color:#209cee}.is-info.textarea:focus,.is-info.input:focus,#documenter .docs-sidebar form.docs-search>input.is-info:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-info.textarea:active,.is-info.input:active,#documenter .docs-sidebar form.docs-search>input.is-info:active,.is-info.is-active.textarea,.is-info.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.is-success.textarea,.is-success.input,#documenter .docs-sidebar form.docs-search>input.is-success{border-color:#22c35b}.is-success.textarea:focus,.is-success.input:focus,#documenter .docs-sidebar form.docs-search>input.is-success:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-success.textarea:active,.is-success.input:active,#documenter .docs-sidebar form.docs-search>input.is-success:active,.is-success.is-active.textarea,.is-success.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.is-warning.textarea,.is-warning.input,#documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ffdd57}.is-warning.textarea:focus,.is-warning.input:focus,#documenter .docs-sidebar form.docs-search>input.is-warning:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-warning.textarea:active,.is-warning.input:active,#documenter .docs-sidebar form.docs-search>input.is-warning:active,.is-warning.is-active.textarea,.is-warning.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.is-danger.textarea,.is-danger.input,#documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#da0b00}.is-danger.textarea:focus,.is-danger.input:focus,#documenter .docs-sidebar form.docs-search>input.is-danger:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-danger.textarea:active,.is-danger.input:active,#documenter .docs-sidebar form.docs-search>input.is-danger:active,.is-danger.is-active.textarea,.is-danger.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.is-small.textarea,.is-small.input,#documenter .docs-sidebar form.docs-search>input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input,#documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}.is-large.textarea,.is-large.input,#documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input,#documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}.is-inline.textarea,.is-inline.input,#documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}.input.is-rounded,#documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}.input.is-static,#documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#222}.radio[disabled],.checkbox[disabled],fieldset[disabled] .radio,fieldset[disabled] .checkbox,.radio input[disabled],.checkbox input[disabled]{color:#6b6b6b;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#2e63b8;right:1.125em;z-index:4}.select.is-rounded select,#documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:0.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#222}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.select.is-dark:not(:hover)::after,.content kbd.select:not(:hover)::after{border-color:#363636}.select.is-dark select,.content kbd.select select{border-color:#363636}.select.is-dark select:hover,.content kbd.select select:hover,.select.is-dark select.is-hovered,.content kbd.select select.is-hovered{border-color:#292929}.select.is-dark select:focus,.content kbd.select select:focus,.select.is-dark select.is-focused,.content kbd.select select.is-focused,.select.is-dark select:active,.content kbd.select select:active,.select.is-dark select.is-active,.content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.select.is-primary:not(:hover)::after,.docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#4eb5de}.select.is-primary select,.docstring>section>a.select.docs-sourcelink select{border-color:#4eb5de}.select.is-primary select:hover,.docstring>section>a.select.docs-sourcelink select:hover,.select.is-primary select.is-hovered,.docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#39acda}.select.is-primary select:focus,.docstring>section>a.select.docs-sourcelink select:focus,.select.is-primary select.is-focused,.docstring>section>a.select.docs-sourcelink select.is-focused,.select.is-primary select:active,.docstring>section>a.select.docs-sourcelink select:active,.select.is-primary select.is-active,.docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.select.is-link:not(:hover)::after{border-color:#2e63b8}.select.is-link select{border-color:#2e63b8}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#2958a4}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select.is-info:not(:hover)::after{border-color:#209cee}.select.is-info select{border-color:#209cee}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#1190e3}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.select.is-success:not(:hover)::after{border-color:#22c35b}.select.is-success select{border-color:#22c35b}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#1ead51}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.select.is-warning:not(:hover)::after{border-color:#ffdd57}.select.is-warning select{border-color:#ffdd57}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#ffd83e}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.select.is-danger:not(:hover)::after{border-color:#da0b00}.select.is-danger select{border-color:#da0b00}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#c10a00}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.select.is-small,#documenter .docs-sidebar form.docs-search>input.select{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#6b6b6b !important;opacity:0.5}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}.select.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-dark .file-cta,.content kbd.file .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark:hover .file-cta,.content kbd.file:hover .file-cta,.file.is-dark.is-hovered .file-cta,.content kbd.file.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark:focus .file-cta,.content kbd.file:focus .file-cta,.file.is-dark.is-focused .file-cta,.content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(54,54,54,0.25);color:#fff}.file.is-dark:active .file-cta,.content kbd.file:active .file-cta,.file.is-dark.is-active .file-cta,.content kbd.file.is-active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta,.docstring>section>a.file.docs-sourcelink .file-cta{background-color:#4eb5de;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.docstring>section>a.file.docs-sourcelink:hover .file-cta,.file.is-primary.is-hovered .file-cta,.docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#43b1dc;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.docstring>section>a.file.docs-sourcelink:focus .file-cta,.file.is-primary.is-focused .file-cta,.docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(78,181,222,0.25);color:#fff}.file.is-primary:active .file-cta,.docstring>section>a.file.docs-sourcelink:active .file-cta,.file.is-primary.is-active .file-cta,.docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#39acda;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#2e63b8;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#2b5eae;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(46,99,184,0.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#2958a4;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#209cee;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#1497ed;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(32,156,238,0.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#1190e3;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#22c35b;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#20b856;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(34,195,91,0.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#1ead51;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#ffda4a;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,221,87,0.25);color:rgba(0,0,0,0.7)}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#ffd83e;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-danger .file-cta{background-color:#da0b00;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#cd0a00;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(218,11,0,0.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#c10a00;border-color:transparent;color:#fff}.file.is-small,#documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa,#documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#222}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#222}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#222}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#222;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:0.5em}.label.is-small,#documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:0.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark,.content kbd.help{color:#363636}.help.is-primary,.docstring>section>a.help.docs-sourcelink{color:#4eb5de}.help.is-link{color:#2e63b8}.help.is-info{color:#209cee}.help.is-success{color:#22c35b}.help.is-warning{color:#ffdd57}.help.is-danger{color:#da0b00}.field:not(:last-child){margin-bottom:0.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button.is-hovered:not([disabled]),.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,.field.has-addons .control .input.is-hovered:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button.is-focused:not([disabled]),.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button.is-active:not([disabled]),.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,.field.has-addons .control .input.is-focused:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,.field.has-addons .control .input.is-active:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select.is-focused:not([disabled]),.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select.is-active:not([disabled]){z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button.is-focused:not([disabled]):hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button.is-active:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,.field.has-addons .control .input.is-focused:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,.field.has-addons .control .input.is-active:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select.is-focused:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small,#documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}.field-label.is-normal{padding-top:0.375em}.field-label.is-medium{font-size:1.25rem;padding-top:0.375em}.field-label.is-large{font-size:1.5rem;padding-top:0.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#222}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}.control.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#2e63b8;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#222;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small,#documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:#bbb;color:#222;max-width:100%;position:relative}.card-footer:first-child,.card-content:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-footer:last-child,.card-content:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}.card-header-title{align-items:center;color:#222;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:rgba(0,0,0,0);padding:1.5rem}.card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:#bbb;padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#222;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#2e63b8;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,0.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,0.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small,#documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#222;display:block;padding:0.5em 0.75em}.menu-list a:hover{background-color:#f5f5f5;color:#222}.menu-list a.is-active{background-color:#2e63b8;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#6b6b6b;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small,#documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark,.content kbd.message{background-color:#fafafa}.message.is-dark .message-header,.content kbd.message .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body,.content kbd.message .message-body{border-color:#363636}.message.is-primary,.docstring>section>a.message.docs-sourcelink{background-color:#eef8fc}.message.is-primary .message-header,.docstring>section>a.message.docs-sourcelink .message-header{background-color:#4eb5de;color:#fff}.message.is-primary .message-body,.docstring>section>a.message.docs-sourcelink .message-body{border-color:#4eb5de;color:#1a6d8e}.message.is-link{background-color:#eff3fb}.message.is-link .message-header{background-color:#2e63b8;color:#fff}.message.is-link .message-body{border-color:#2e63b8;color:#3169c4}.message.is-info{background-color:#ecf7fe}.message.is-info .message-header{background-color:#209cee;color:#fff}.message.is-info .message-body{border-color:#209cee;color:#0e72b4}.message.is-success{background-color:#eefcf3}.message.is-success .message-header{background-color:#22c35b;color:#fff}.message.is-success .message-body{border-color:#22c35b;color:#198f43}.message.is-warning{background-color:#fffbeb}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#947600}.message.is-danger{background-color:#ffeceb}.message.is-danger .message-header{background-color:#da0b00;color:#fff}.message.is-danger .message-body{border-color:#da0b00;color:#f50c00}.message-header{align-items:center;background-color:#222;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#222;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:rgba(0,0,0,0)}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,0.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#222;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}.navbar.is-dark,.content kbd.navbar{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.content kbd.navbar .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link,.content kbd.navbar .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.content kbd.navbar .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.content kbd.navbar .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.content kbd.navbar .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.content kbd.navbar .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.content kbd.navbar .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active,.content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after,.content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger,.content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-dark .navbar-start>.navbar-item,.content kbd.navbar .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.content kbd.navbar .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.content kbd.navbar .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link,.content kbd.navbar .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.content kbd.navbar .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.content kbd.navbar .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.content kbd.navbar .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.content kbd.navbar .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.content kbd.navbar .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.content kbd.navbar .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.content kbd.navbar .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.content kbd.navbar .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.content kbd.navbar .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.content kbd.navbar .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.content kbd.navbar .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active,.content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link::after,.content kbd.navbar .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after,.content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active,.content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary,.docstring>section>a.navbar.docs-sourcelink{background-color:#4eb5de;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger,.docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-primary .navbar-start>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#4eb5de;color:#fff}}.navbar.is-link{background-color:#2e63b8;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#2e63b8;color:#fff}}.navbar.is-info{background-color:#209cee;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#209cee;color:#fff}}.navbar.is-success{background-color:#22c35b;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#22c35b;color:#fff}}.navbar.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffdd57;color:rgba(0,0,0,0.7)}}.navbar.is-danger{background-color:#da0b00;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#da0b00;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#222;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,0.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#222;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#2e63b8}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(0.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8}.navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8;border-bottom-style:solid;border-bottom-width:3px;color:#2e63b8;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#2e63b8;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1056px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small,#documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,.pagination.is-rounded .pagination-next,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#222;min-width:2.5em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#3c5dcd}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}.pagination-previous[disabled],.pagination-previous.is-disabled,.pagination-next[disabled],.pagination-next.is-disabled,.pagination-link[disabled],.pagination-link.is-disabled{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#6b6b6b;opacity:0.5}.pagination-previous,.pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:#bbb;font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading,.content kbd.panel .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active,.content kbd.panel .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon,.content kbd.panel .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading,.docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#4eb5de;color:#fff}.panel.is-primary .panel-tabs a.is-active,.docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#4eb5de}.panel.is-primary .panel-block.is-active .panel-icon,.docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#4eb5de}.panel.is-link .panel-heading{background-color:#2e63b8;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#2e63b8}.panel.is-link .panel-block.is-active .panel-icon{color:#2e63b8}.panel.is-info .panel-heading{background-color:#209cee;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#209cee}.panel.is-info .panel-block.is-active .panel-icon{color:#209cee}.panel.is-success .panel-heading{background-color:#22c35b;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#22c35b}.panel.is-success .panel-block.is-active .panel-icon{color:#22c35b}.panel.is-warning .panel-heading{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffdd57}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffdd57}.panel.is-danger .panel-heading{background-color:#da0b00;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#da0b00}.panel.is-danger .panel-block.is-active .panel-icon{color:#da0b00}.panel-tabs:not(:last-child),.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#222;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:0.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#222}.panel-list a:hover{color:#2e63b8}.panel-block{align-items:center;color:#222;display:flex;justify-content:flex-start;padding:0.5em 0.75em}.panel-block input[type="checkbox"]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#2e63b8;color:#363636}.panel-block.is-active .panel-icon{color:#2e63b8}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#6b6b6b;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#222;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#222;color:#222}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#2e63b8;color:#2e63b8}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:0.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:rgba(0,0,0,0) !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#2e63b8;border-color:#2e63b8;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small,#documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>.column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>.column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>.column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>.column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.33333337%}.column.is-offset-1-mobile{margin-left:8.33333337%}.column.is-2-mobile{flex:none;width:16.66666674%}.column.is-offset-2-mobile{margin-left:16.66666674%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333337%}.column.is-offset-4-mobile{margin-left:33.33333337%}.column.is-5-mobile{flex:none;width:41.66666674%}.column.is-offset-5-mobile{margin-left:41.66666674%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333337%}.column.is-offset-7-mobile{margin-left:58.33333337%}.column.is-8-mobile{flex:none;width:66.66666674%}.column.is-offset-8-mobile{margin-left:66.66666674%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333337%}.column.is-offset-10-mobile{margin-left:83.33333337%}.column.is-11-mobile{flex:none;width:91.66666674%}.column.is-offset-11-mobile{margin-left:91.66666674%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333337%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333337%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66666674%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66666674%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333337%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333337%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66666674%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66666674%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333337%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333337%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66666674%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66666674%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333337%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333337%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66666674%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66666674%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.33333337%}.column.is-offset-1-touch{margin-left:8.33333337%}.column.is-2-touch{flex:none;width:16.66666674%}.column.is-offset-2-touch{margin-left:16.66666674%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333337%}.column.is-offset-4-touch{margin-left:33.33333337%}.column.is-5-touch{flex:none;width:41.66666674%}.column.is-offset-5-touch{margin-left:41.66666674%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333337%}.column.is-offset-7-touch{margin-left:58.33333337%}.column.is-8-touch{flex:none;width:66.66666674%}.column.is-offset-8-touch{margin-left:66.66666674%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333337%}.column.is-offset-10-touch{margin-left:83.33333337%}.column.is-11-touch{flex:none;width:91.66666674%}.column.is-offset-11-touch{margin-left:91.66666674%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.33333337%}.column.is-offset-1-desktop{margin-left:8.33333337%}.column.is-2-desktop{flex:none;width:16.66666674%}.column.is-offset-2-desktop{margin-left:16.66666674%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333337%}.column.is-offset-4-desktop{margin-left:33.33333337%}.column.is-5-desktop{flex:none;width:41.66666674%}.column.is-offset-5-desktop{margin-left:41.66666674%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333337%}.column.is-offset-7-desktop{margin-left:58.33333337%}.column.is-8-desktop{flex:none;width:66.66666674%}.column.is-offset-8-desktop{margin-left:66.66666674%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333337%}.column.is-offset-10-desktop{margin-left:83.33333337%}.column.is-11-desktop{flex:none;width:91.66666674%}.column.is-offset-11-desktop{margin-left:91.66666674%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.33333337%}.column.is-offset-1-widescreen{margin-left:8.33333337%}.column.is-2-widescreen{flex:none;width:16.66666674%}.column.is-offset-2-widescreen{margin-left:16.66666674%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333337%}.column.is-offset-4-widescreen{margin-left:33.33333337%}.column.is-5-widescreen{flex:none;width:41.66666674%}.column.is-offset-5-widescreen{margin-left:41.66666674%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333337%}.column.is-offset-7-widescreen{margin-left:58.33333337%}.column.is-8-widescreen{flex:none;width:66.66666674%}.column.is-offset-8-widescreen{margin-left:66.66666674%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333337%}.column.is-offset-10-widescreen{margin-left:83.33333337%}.column.is-11-widescreen{flex:none;width:91.66666674%}.column.is-offset-11-widescreen{margin-left:91.66666674%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.33333337%}.column.is-offset-1-fullhd{margin-left:8.33333337%}.column.is-2-fullhd{flex:none;width:16.66666674%}.column.is-offset-2-fullhd{margin-left:16.66666674%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333337%}.column.is-offset-4-fullhd{margin-left:33.33333337%}.column.is-5-fullhd{flex:none;width:41.66666674%}.column.is-offset-5-fullhd{margin-left:41.66666674%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333337%}.column.is-offset-7-fullhd{margin-left:58.33333337%}.column.is-8-fullhd{flex:none;width:66.66666674%}.column.is-offset-8-fullhd{margin-left:66.66666674%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333337%}.column.is-offset-10-fullhd{margin-left:83.33333337%}.column.is-11-fullhd{flex:none;width:91.66666674%}.column.is-offset-11-fullhd{margin-left:91.66666674%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: .25rem}}.columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: .5rem}}.columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: .75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333337%}.tile.is-2{flex:none;width:16.66666674%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333337%}.tile.is-5{flex:none;width:41.66666674%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333337%}.tile.is-8{flex:none;width:66.66666674%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333337%}.tile.is-11{flex:none;width:91.66666674%}.tile.is-12{flex:none;width:100%}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,0.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,0.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:0.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,0.7)}.hero.is-light .subtitle{color:rgba(0,0,0,0.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}.hero.is-dark,.content kbd.hero{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong,.content kbd.hero strong{color:inherit}.hero.is-dark .title,.content kbd.hero .title{color:#fff}.hero.is-dark .subtitle,.content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}.hero.is-dark .subtitle a:not(.button),.content kbd.hero .subtitle a:not(.button),.hero.is-dark .subtitle strong,.content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-dark .navbar-menu,.content kbd.hero .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.content kbd.hero .navbar-item,.hero.is-dark .navbar-link,.content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-dark a.navbar-item:hover,.content kbd.hero a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.content kbd.hero a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.content kbd.hero .navbar-link:hover,.hero.is-dark .navbar-link.is-active,.content kbd.hero .navbar-link.is-active{background-color:#292929;color:#fff}.hero.is-dark .tabs a,.content kbd.hero .tabs a{color:#fff;opacity:0.9}.hero.is-dark .tabs a:hover,.content kbd.hero .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a,.content kbd.hero .tabs li.is-active a{color:#363636 !important;opacity:1}.hero.is-dark .tabs.is-boxed a,.content kbd.hero .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a,.content kbd.hero .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.content kbd.hero .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover,.content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.content kbd.hero .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.content kbd.hero .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold,.content kbd.hero.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu,.content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary,.docstring>section>a.hero.docs-sourcelink{background-color:#4eb5de;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong,.docstring>section>a.hero.docs-sourcelink strong{color:inherit}.hero.is-primary .title,.docstring>section>a.hero.docs-sourcelink .title{color:#fff}.hero.is-primary .subtitle,.docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}.hero.is-primary .subtitle a:not(.button),.docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),.hero.is-primary .subtitle strong,.docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-primary .navbar-menu,.docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#4eb5de}}.hero.is-primary .navbar-item,.docstring>section>a.hero.docs-sourcelink .navbar-item,.hero.is-primary .navbar-link,.docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-primary a.navbar-item:hover,.docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.docstring>section>a.hero.docs-sourcelink .navbar-link:hover,.hero.is-primary .navbar-link.is-active,.docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#39acda;color:#fff}.hero.is-primary .tabs a,.docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}.hero.is-primary .tabs a:hover,.docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#4eb5de !important;opacity:1}.hero.is-primary .tabs.is-boxed a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#4eb5de}.hero.is-primary.is-bold,.docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu,.docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}}.hero.is-link{background-color:#2e63b8;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,0.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-link .navbar-menu{background-color:#2e63b8}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#2958a4;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:0.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#2e63b8 !important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#2e63b8}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}}.hero.is-info{background-color:#209cee;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,0.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-info .navbar-menu{background-color:#209cee}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#1190e3;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:0.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#209cee !important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#209cee}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%)}}.hero.is-success{background-color:#22c35b;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,0.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-success .navbar-menu{background-color:#22c35b}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#1ead51;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:0.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#22c35b !important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#22c35b}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,0.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#ffdd57 !important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%)}}.hero.is-danger{background-color:#da0b00;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-danger .navbar-menu{background-color:#da0b00}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#c10a00;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:0.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#da0b00 !important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#da0b00}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%)}}.hero.is-small .hero-body,#documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{.hero-body{padding:3rem 3rem}}.section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}h1 .docs-heading-anchor,h1 .docs-heading-anchor:hover,h1 .docs-heading-anchor:visited,h2 .docs-heading-anchor,h2 .docs-heading-anchor:hover,h2 .docs-heading-anchor:visited,h3 .docs-heading-anchor,h3 .docs-heading-anchor:hover,h3 .docs-heading-anchor:visited,h4 .docs-heading-anchor,h4 .docs-heading-anchor:hover,h4 .docs-heading-anchor:visited,h5 .docs-heading-anchor,h5 .docs-heading-anchor:hover,h5 .docs-heading-anchor:visited,h6 .docs-heading-anchor,h6 .docs-heading-anchor:hover,h6 .docs-heading-anchor:visited{color:#222}h1 .docs-heading-anchor-permalink,h2 .docs-heading-anchor-permalink,h3 .docs-heading-anchor-permalink,h4 .docs-heading-anchor-permalink,h5 .docs-heading-anchor-permalink,h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}h1 .docs-heading-anchor-permalink::before,h2 .docs-heading-anchor-permalink::before,h3 .docs-heading-anchor-permalink::before,h4 .docs-heading-anchor-permalink::before,h5 .docs-heading-anchor-permalink::before,h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}h1:hover .docs-heading-anchor-permalink,h2:hover .docs-heading-anchor-permalink,h3:hover .docs-heading-anchor-permalink,h4:hover .docs-heading-anchor-permalink,h5:hover .docs-heading-anchor-permalink,h6:hover .docs-heading-anchor-permalink{visibility:visible}.docs-dark-only{display:none !important}pre{position:relative;overflow:hidden}pre code,pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}pre code:first-of-type,pre code.hljs:first-of-type{padding-top:0.5rem !important}pre code:last-of-type,pre code.hljs:last-of-type{padding-bottom:0.5rem !important}pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#222;cursor:pointer;text-align:center}pre .copy-button:focus,pre .copy-button:hover{opacity:1;background:rgba(34,34,34,0.1);color:#2e63b8}pre .copy-button.success{color:#259a12;opacity:1}pre .copy-button.error{color:#cb3c33;opacity:1}pre:hover .copy-button{opacity:1}.admonition{background-color:#b5b5b5;border-style:solid;border-width:1px;border-color:#363636;border-radius:4px;font-size:1rem}.admonition strong{color:currentColor}.admonition.is-small,#documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}.admonition.is-medium{font-size:1.25rem}.admonition.is-large{font-size:1.5rem}.admonition.is-default{background-color:#b5b5b5;border-color:#363636}.admonition.is-default>.admonition-header{background-color:#363636;color:#fff}.admonition.is-default>.admonition-body{color:#fff}.admonition.is-info{background-color:#def0fc;border-color:#209cee}.admonition.is-info>.admonition-header{background-color:#209cee;color:#fff}.admonition.is-info>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-success{background-color:#bdf4d1;border-color:#22c35b}.admonition.is-success>.admonition-header{background-color:#22c35b;color:#fff}.admonition.is-success>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-warning{background-color:#fff3c5;border-color:#ffdd57}.admonition.is-warning>.admonition-header{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.admonition.is-warning>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-danger{background-color:#ffaba7;border-color:#da0b00}.admonition.is-danger>.admonition-header{background-color:#da0b00;color:#fff}.admonition.is-danger>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-compat{background-color:#bdeff5;border-color:#1db5c9}.admonition.is-compat>.admonition-header{background-color:#1db5c9;color:#fff}.admonition.is-compat>.admonition-body{color:rgba(0,0,0,0.7)}.admonition-header{color:#fff;background-color:#363636;align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}details.admonition.is-details>.admonition-header{list-style:none}details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}.admonition-body{color:#222;padding:0.5rem .75rem}.admonition-body pre{background-color:#f5f5f5}.admonition-body code{background-color:rgba(0,0,0,0.05)}.docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:1px solid #dbdbdb;box-shadow:2px 2px 3px rgba(10,10,10,0.1);max-width:100%}.docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#f5f5f5;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #dbdbdb}.docstring>header code{background-color:transparent}.docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}.docstring>header .docstring-binding{margin-right:0.3em}.docstring>header .docstring-category{margin-left:0.3em}.docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #dbdbdb}.docstring>section:last-child{border-bottom:none}.docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}.docstring>section>a.docs-sourcelink:focus{opacity:1 !important}.docstring:hover>section>a.docs-sourcelink{opacity:0.2}.docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}.docstring>section:hover a.docs-sourcelink{opacity:1}.documenter-example-output{background-color:#fff}.outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#ffaba7;color:rgba(0,0,0,0.7);border-bottom:3px solid #da0b00;padding:10px 35px;text-align:center;font-size:15px}.outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}.outdated-warning-overlay a{color:#2e63b8}.outdated-warning-overlay a:hover{color:#363636}.content pre{border:1px solid #dbdbdb}.content code{font-weight:inherit}.content a code{color:#2e63b8}.content h1 code,.content h2 code,.content h3 code,.content h4 code,.content h5 code,.content h6 code{color:#222}.content table{display:block;width:initial;max-width:100%;overflow-x:auto}.content blockquote>ul:first-child,.content blockquote>ol:first-child,.content .admonition-body>ul:first-child,.content .admonition-body>ol:first-child{margin-top:0}pre,code{font-variant-ligatures:no-contextual}.breadcrumb a.is-disabled{cursor:default;pointer-events:none}.breadcrumb a.is-disabled,.breadcrumb a.is-disabled:hover{color:#222}.hljs{background:initial !important}.katex .katex-mathml{top:0;right:0}.katex-display,mjx-container,.MathJax_Display{margin:0.5em 0 !important}html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}li.no-marker{list-style:none}#documenter .docs-main>article{overflow-wrap:break-word}#documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){#documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){#documenter .docs-main{width:100%}#documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}#documenter .docs-main>header,#documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}#documenter .docs-main header.docs-navbar{background-color:#fff;border-bottom:1px solid #dbdbdb;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}#documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1}#documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}#documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}#documenter .docs-main header.docs-navbar .docs-right .docs-icon,#documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}#documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}#documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}#documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #bbb;transition-duration:0.7s;-webkit-transition-duration:0.7s}#documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}#documenter .docs-main section.footnotes{border-top:1px solid #dbdbdb}#documenter .docs-main section.footnotes li .tag:first-child,#documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,#documenter .docs-main section.footnotes li .content kbd:first-child,.content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}#documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #dbdbdb;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){#documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}#documenter .docs-main .docs-footer .docs-footer-nextpage,#documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}#documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}#documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}#documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}#documenter .docs-sidebar{display:flex;flex-direction:column;color:#0a0a0a;background-color:#f5f5f5;border-right:1px solid #dbdbdb;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}#documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #bbb}@media screen and (min-width: 1056px){#documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){#documenter .docs-sidebar{left:0;top:0}}#documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}#documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}#documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}#documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}#documenter .docs-sidebar .docs-package-name a,#documenter .docs-sidebar .docs-package-name a:hover{color:#0a0a0a}#documenter .docs-sidebar .docs-version-selector{border-top:1px solid #dbdbdb;display:none;padding:0.5rem}#documenter .docs-sidebar .docs-version-selector.visible{display:flex}#documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #dbdbdb;padding-bottom:1.5rem}#documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}#documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}#documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}#documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}#documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}#documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}#documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}#documenter .docs-sidebar ul.docs-menu .tocitem,#documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#0a0a0a;background:#f5f5f5}#documenter .docs-sidebar ul.docs-menu a.tocitem:hover,#documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#0a0a0a;background-color:#ebebeb}#documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #dbdbdb;border-bottom:1px solid #dbdbdb;background-color:#fff}#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#fff;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#ebebeb;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}#documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}#documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}#documenter .docs-sidebar form.docs-search>input{width:14.4rem}#documenter .docs-sidebar #documenter-search-query{color:#707070;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){#documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#ccc}}@media screen and (max-width: 1055px){#documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#ccc}}kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(0,0,0,0.6);box-shadow:0 2px 0 1px rgba(0,0,0,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}.search-min-width-50{min-width:50%}.search-min-height-100{min-height:100%}.search-modal-card-body{max-height:calc(100vh - 15rem)}.search-result-link{border-radius:0.7em;transition:all 300ms}.search-result-link:hover,.search-result-link:focus{background-color:rgba(0,128,128,0.1)}.search-result-link .property-search-result-badge,.search-result-link .search-filter{transition:all 300ms}.property-search-result-badge,.search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}.search-result-link:hover .property-search-result-badge,.search-result-link:hover .search-filter,.search-result-link:focus .property-search-result-badge,.search-result-link:focus .search-filter{color:#f1f5f9;background-color:#333}.search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}.search-filter:hover,.search-filter:focus{color:#333}.search-filter-selected{color:#f5f5f5;background-color:rgba(139,0,139,0.5)}.search-filter-selected:hover,.search-filter-selected:focus{color:#f5f5f5}.search-result-highlight{background-color:#ffdd57;color:black}.search-divider{border-bottom:1px solid #dbdbdb}.search-result-title{width:85%;color:#333}.search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}#search-modal .modal-card-body::-webkit-scrollbar,#search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}#search-modal .modal-card-body::-webkit-scrollbar-thumb,#search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}#search-modal .modal-card-body::-webkit-scrollbar-track,#search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}.w-100{width:100%}.gap-2{gap:0.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.ansi span.sgr1{font-weight:bolder}.ansi span.sgr2{font-weight:lighter}.ansi span.sgr3{font-style:italic}.ansi span.sgr4{text-decoration:underline}.ansi span.sgr7{color:#fff;background-color:#222}.ansi span.sgr8{color:transparent}.ansi span.sgr8 span{color:transparent}.ansi span.sgr9{text-decoration:line-through}.ansi span.sgr30{color:#242424}.ansi span.sgr31{color:#a7201f}.ansi span.sgr32{color:#066f00}.ansi span.sgr33{color:#856b00}.ansi span.sgr34{color:#2149b0}.ansi span.sgr35{color:#7d4498}.ansi span.sgr36{color:#007989}.ansi span.sgr37{color:gray}.ansi span.sgr40{background-color:#242424}.ansi span.sgr41{background-color:#a7201f}.ansi span.sgr42{background-color:#066f00}.ansi span.sgr43{background-color:#856b00}.ansi span.sgr44{background-color:#2149b0}.ansi span.sgr45{background-color:#7d4498}.ansi span.sgr46{background-color:#007989}.ansi span.sgr47{background-color:gray}.ansi span.sgr90{color:#616161}.ansi span.sgr91{color:#cb3c33}.ansi span.sgr92{color:#0e8300}.ansi span.sgr93{color:#a98800}.ansi span.sgr94{color:#3c5dcd}.ansi span.sgr95{color:#9256af}.ansi span.sgr96{color:#008fa3}.ansi span.sgr97{color:#f5f5f5}.ansi span.sgr100{background-color:#616161}.ansi span.sgr101{background-color:#cb3c33}.ansi span.sgr102{background-color:#0e8300}.ansi span.sgr103{background-color:#a98800}.ansi span.sgr104{background-color:#3c5dcd}.ansi span.sgr105{background-color:#9256af}.ansi span.sgr106{background-color:#008fa3}.ansi span.sgr107{background-color:#f5f5f5}code.language-julia-repl>span.hljs-meta{color:#066f00;font-weight:bolder}/*! - Theme: Default - Description: Original highlight.js style - Author: (c) Ivan Sagalaev - Maintainer: @highlightjs/core-team - Website: https://highlightjs.org/ - License: see project LICENSE - Touched: 2021 -*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#F3F3F3;color:#444}.hljs-comment{color:#697070}.hljs-tag,.hljs-punctuation{color:#444a}.hljs-tag .hljs-name,.hljs-tag .hljs-attr{color:#444}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-operator,.hljs-selector-pseudo{color:#ab5656}.hljs-literal{color:#695}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} diff --git a/dev/assets/themeswap.js b/dev/assets/themeswap.js deleted file mode 100644 index 9f5eebe..0000000 --- a/dev/assets/themeswap.js +++ /dev/null @@ -1,84 +0,0 @@ -// Small function to quickly swap out themes. Gets put into the tag.. -function set_theme_from_local_storage() { - // Initialize the theme to null, which means default - var theme = null; - // If the browser supports the localstorage and is not disabled then try to get the - // documenter theme - if (window.localStorage != null) { - // Get the user-picked theme from localStorage. May be `null`, which means the default - // theme. - theme = window.localStorage.getItem("documenter-theme"); - } - // Check if the users preference is for dark color scheme - var darkPreference = - window.matchMedia("(prefers-color-scheme: dark)").matches === true; - // Initialize a few variables for the loop: - // - // - active: will contain the index of the theme that should be active. Note that there - // is no guarantee that localStorage contains sane values. If `active` stays `null` - // we either could not find the theme or it is the default (primary) theme anyway. - // Either way, we then need to stick to the primary theme. - // - // - disabled: style sheets that should be disabled (i.e. all the theme style sheets - // that are not the currently active theme) - var active = null; - var disabled = []; - var primaryLightTheme = null; - var primaryDarkTheme = null; - for (var i = 0; i < document.styleSheets.length; i++) { - var ss = document.styleSheets[i]; - // The tag of each style sheet is expected to have a data-theme-name attribute - // which must contain the name of the theme. The names in localStorage much match this. - var themename = ss.ownerNode.getAttribute("data-theme-name"); - // attribute not set => non-theme stylesheet => ignore - if (themename === null) continue; - // To distinguish the default (primary) theme, it needs to have the data-theme-primary - // attribute set. - if (ss.ownerNode.getAttribute("data-theme-primary") !== null) { - primaryLightTheme = themename; - } - // Check if the theme is primary dark theme so that we could store its name in darkTheme - if (ss.ownerNode.getAttribute("data-theme-primary-dark") !== null) { - primaryDarkTheme = themename; - } - // If we find a matching theme (and it's not the default), we'll set active to non-null - if (themename === theme) active = i; - // Store the style sheets of inactive themes so that we could disable them - if (themename !== theme) disabled.push(ss); - } - var activeTheme = null; - if (active !== null) { - // If we did find an active theme, we'll (1) add the theme--$(theme) class to - document.getElementsByTagName("html")[0].className = "theme--" + theme; - activeTheme = theme; - } else { - // If we did _not_ find an active theme, then we need to fall back to the primary theme - // which can either be dark or light, depending on the user's OS preference. - var activeTheme = darkPreference ? primaryDarkTheme : primaryLightTheme; - // In case it somehow happens that the relevant primary theme was not found in the - // preceding loop, we abort without doing anything. - if (activeTheme === null) { - console.error("Unable to determine primary theme."); - return; - } - // When switching to the primary light theme, then we must not have a class name - // for the tag. That's only for non-primary or the primary dark theme. - if (darkPreference) { - document.getElementsByTagName("html")[0].className = - "theme--" + activeTheme; - } else { - document.getElementsByTagName("html")[0].className = ""; - } - } - for (var i = 0; i < document.styleSheets.length; i++) { - var ss = document.styleSheets[i]; - // The tag of each style sheet is expected to have a data-theme-name attribute - // which must contain the name of the theme. The names in localStorage much match this. - var themename = ss.ownerNode.getAttribute("data-theme-name"); - // attribute not set => non-theme stylesheet => ignore - if (themename === null) continue; - // we'll disable all the stylesheets, except for the active one - ss.disabled = !(themename == activeTheme); - } -} -set_theme_from_local_storage(); diff --git a/dev/assets/figures/tubemap.png b/dev/assets/tubemap.Bhp6-3Q9.png similarity index 100% rename from dev/assets/figures/tubemap.png rename to dev/assets/tubemap.Bhp6-3Q9.png diff --git a/dev/assets/warner.js b/dev/assets/warner.js deleted file mode 100644 index 3f6f5d0..0000000 --- a/dev/assets/warner.js +++ /dev/null @@ -1,52 +0,0 @@ -function maybeAddWarning() { - // DOCUMENTER_NEWEST is defined in versions.js, DOCUMENTER_CURRENT_VERSION and DOCUMENTER_STABLE - // in siteinfo.js. - // If either of these are undefined something went horribly wrong, so we abort. - if ( - window.DOCUMENTER_NEWEST === undefined || - window.DOCUMENTER_CURRENT_VERSION === undefined || - window.DOCUMENTER_STABLE === undefined - ) { - return; - } - - // Current version is not a version number, so we can't tell if it's the newest version. Abort. - if (!/v(\d+\.)*\d+/.test(window.DOCUMENTER_CURRENT_VERSION)) { - return; - } - - // Current version is newest version, so no need to add a warning. - if (window.DOCUMENTER_NEWEST === window.DOCUMENTER_CURRENT_VERSION) { - return; - } - - // Add a noindex meta tag (unless one exists) so that search engines don't index this version of the docs. - if (document.body.querySelector('meta[name="robots"]') === null) { - const meta = document.createElement("meta"); - meta.name = "robots"; - meta.content = "noindex"; - - document.getElementsByTagName("head")[0].appendChild(meta); - } - - const div = document.createElement("div"); - div.classList.add("outdated-warning-overlay"); - const closer = document.createElement("button"); - closer.classList.add("outdated-warning-closer", "delete"); - closer.addEventListener("click", function () { - document.body.removeChild(div); - }); - const href = window.documenterBaseURL + "/../" + window.DOCUMENTER_STABLE; - div.innerHTML = - 'This documentation is not for the latest stable release, but for either the development version or an older release.
Click here to go to the documentation for the latest stable release.'; - div.appendChild(closer); - document.body.appendChild(div); -} - -if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", maybeAddWarning); -} else { - maybeAddWarning(); -} diff --git a/dev/basics.html b/dev/basics.html new file mode 100644 index 0000000..7bed163 --- /dev/null +++ b/dev/basics.html @@ -0,0 +1,758 @@ + + + + + + Graph theory | Karnak.jl + + + + + + + + + + + + + + +
Skip to content

Graph theory

This section contains an introduction to basic graph theory using the Graphs.jl package, illustrated with figures made with Karnak.jl. You don't need any prior knowledge of graphs, but you should be familiar with the basics of programming in Julia.

Note

All the figures in this manual are generated when the pages are built by Documenter.jl, and the code to draw them is included here. To run the examples, you'll need the packages Karnak, Graphs, NetworkLayout, Colors, and possibly SimpleWeightedGraphs.

Graphs, vertices, and edges

Graph theory is used for analysing networks and the relationships between things in the network.

Code for this figure

This code generates the figure below.

julia
using Karnak, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs
+d = @drawsvg begin
+    background("grey10")
+    sethue("yellow")
+    fontsize(12)
+    g = Graph(3, 3)
+    add_vertex!(g)
+    add_edge!(g, 3, 4)
+    drawgraph(g,
+        layout=spring,
+        margin=50,
+        edgecurvature=0.2,
+        edgegaps=30,
+        edgestrokeweights=2,
+        vertexlabels = (v) -> "thing $(v)",
+        vertexshapes = :circle,
+        vertexfillcolors = [RGB(Karnak.Luxor.julia_red...), RGB(Karnak.Luxor.julia_purple...), RGB(Karnak.Luxor.julia_green...), RGB(Karnak.Luxor.julia_blue...)],
+        vertexshapesizes = 25,
+        vertexlabeltextcolors = colorant"white",
+        edgelabels=(n, s, d, f, t) -> begin
+            θ = slope(f, t)
+            fontsize(12)
+            translate(midpoint(f, t))
+            rotate(θ)
+            sethue("white")
+            label("$s and $d", [:n, :n, :s, :n][n], O, offset=10)
+            sethue("orange")
+            label("edge $n", [:n, :n, :s, :n][n], O, offset=-15)
+        end,
+        )
+end 600 350

A typical graph consists of:

  • vertices, which represent the things or entities, and

  • edges, which describe how two things or entities connect and relate to each other

Vertices are also called nodes in the world of graph theory.

The Graphs.jl package provides many ways to create graphs. We'll start off with this basic approach:

julia
using Graphs
+g = Graph()

The Graph() function creates a new empty graph and stores it in g. (SimpleGraph() is an alternative to Graph().) Let's add a single vertex:

julia
add_vertex!(g)

We can easily add a number of new vertices:

julia
add_vertices!(g, 3)

The graph has four vertices now. We can refer to them as 1, 2, 3, and 4.

We'll join some pairs of vertices with an edge:

julia
add_edge!(g, 1, 2)  # join vertex 1 with vertex 2
+add_edge!(g, 1, 3)
+add_edge!(g, 2, 3)
+add_edge!(g, 1, 4)

In Graphs.jl, vertices are always numbered from 1 to n.

g is now a {4, 4} undirected simple Int64 graph}.

It's time to see some kind of visual representation of the graph we've made.

julia
using Karnak, Graphs
+
+g = Graph()
+add_vertices!(g, 4)
+add_edge!(g, 1, 2)
+add_edge!(g, 1, 3)
+add_edge!(g, 2, 3)
+add_edge!(g, 1, 4)
+
+@drawsvg begin
+    background("grey10")
+    sethue("orange")
+    drawgraph(g, vertexlabels = [1, 2, 3, 4])
+end 600 300

This is just one of the many ways this graph can be represented visually. The locations of the vertices as drawn here are not part of the graph's definition. The default styling uses the current Luxor color, with small circles marking the vertex positions. drawgraph() places the graphics for the graph on the current Luxor drawing.

Note

SVG is used in this manual because it's a good format for line drawings, but you can also use Karnak.jl to create PDF or PNG. See the Luxor documentation for details. PNG is a good choice if the graphics get very complex, since large SVGs can tax web browsers.

Undirected and directed graphs

We'll meet two main types of graph, undirected and directed. In our undirected graph g above, vertex 1 and vertex 2 are neighbors, connected with an edge, but there's no way to specify or see a direction for that connection. For example, if the graph was modelling people making financial transactions, we couldn't tell whether the person at vertex 1 sent money to the person at vertex 2, or received money from them.

In Graphs.jl, we can create directed graphs with DiGraph() (also SimpleDiGraph()).

julia
gd = DiGraph()
+add_vertices!(gd, 4)
+add_edge!(gd, 1, 2)
+add_edge!(gd, 1, 3)
+add_edge!(gd, 2, 3)
+add_edge!(gd, 1, 4) # vertex 1 to vertex 4
+add_edge!(gd, 4, 1) # vertex 4 to vertex 1
+
+@drawsvg begin
+    background("grey10")
+    sethue("thistle1")
+    drawgraph(gd, vertexlabels = [1, 2, 3, 4], edgecurvature=5)
+end 600 300

Note

In this representation of our directed graph gd, we can see the direction of the edges joining the vertices. The edgecurvature keyword has been used to specify a small amount of curvature for each edge. Otherwise, with the default drawing settings, the two edges connecting vertices 1 and 4 would have been drawn overlapping, and difficult to distiguish at a glance.

Very simple graphs

Creating graphs by typing the connections manually is tedious, so we can use functions such as the Graph/SimpleGraph and DiGraph/SimpleDiGraph constructor functions:

julia
g = Graph(10, 5) # 10 vertices, 5 edges
+
+d1 = @drawsvg begin
+    background("grey10")
+    sethue("gold")
+    drawgraph(g, vertexlabels = vertices(g))
+end 400 300
+
+gd = SimpleDiGraph(5, 3) # 5 vertices, 3, edges
+
+d2 = @drawsvg begin
+    background("grey10")
+    setline(0.5)
+    sethue("firebrick")
+    drawgraph(gd, vertexlabels = vertices(g))
+end 400 300
+
+hcat(d1, d2)

Neither of these two graphs is a connected graph. In a connected graph, every vertex is connected to every other via some path, a sequence of edges.

We can define how many vertices and edges the graph should have. An undirected graph with 10 vertices can have between 0 to 45 (binomial(10, 2)) edges, a directed graph up to 90 edges.

Well-known graphs

Graphs have been studied for a few centuries, so there are many familiar and well-known graphs and types of graph.

In a complete graph, every vertex is connected to every other vertex.

julia
N = 10
+g = complete_graph(N)
+@drawsvg begin
+   background("grey10")
+   setline(0.5)
+   sethue("pink")
+   drawgraph(g, vertexlabels = vertices(g))
+end 600 300

There's also a complete_digraph() function.

julia
N = 7
+g = complete_digraph(N)
+@drawsvg begin
+    background("grey10")
+    setline(0.5)
+    sethue("orange")
+    drawgraph(g, vertexlabels = vertices(g), edgecurvature = 2)
+end 600 300

In a bi-partite graph, every vertex belongs to one of two groups. Each vertex in the first group is connected to one or more vertices in the second group.

The next figure shows the complete version of a bi-partite graph. Each vertex is connected to every other vertex in the other group.

julia
N = 10
+g = complete_bipartite_graph(N, N)
+H = 300
+W = 550
+@drawsvg begin
+    background("grey10")
+    pts = vcat(
+        [between(O + (-W / 2, -H / 2), O + (-W / 2, H / 2), i) for i in range(0, 1, length=N)], # left
+        [between(O + (W / 2, H / 2), O + (W / 2, -H / 2), i) for i in range(0, 1, length=N)] # right
+    )
+    sethue("aquamarine")
+    drawgraph(g, vertexlabels = 1:nv(g), layout = pts, edgestrokeweights=0.5)
+end 600 400

Here, we calculated the coordinates of the vertices and passed the resulting pts to the layout keyword.

A grid graph doesn't need much explanation:

julia
M = 4
+N = 5
+g = Graphs.grid([M, N])
+@drawsvg begin
+    background("grey10")
+    setline(0.5)
+    sethue("greenyellow")
+    drawgraph(g, vertexlabels = 1:nv(g), layout=stress)
+end 600 300

Star graphs (star_graph(n)) and wheel graphs (wheel_graph(n)) deliver what their names promise.

julia
g = star_graph(12)
+@drawsvg begin
+    background("grey10")
+    sethue("orange")
+    drawgraph(g, vertexlabels=1:nv(g), layout=stress)
+end 600 300
julia
g = wheel_graph(12)
+@drawsvg begin
+    background("grey10")
+    sethue("palegreen")
+    drawgraph(g, vertexlabels=1:nv(g), layout=stress)
+end 600 300

There are star_digraph() and wheel_digraph() DiGraph versions too.

Even more well-known graphs

There are probably as many graphs as there are possible games of chess. In both fields, the more commonly-seen patterns have been studied extensively by enthusiasts for years.

Many well-known graphs are provided by the smallgraph() function. Supply one of the available symbols, such as :bull, or :house.

Code for this figure

This code generates the figure below.

julia
using Karnak, Graphs, NetworkLayout
+smallgraphs = (
+    (:bull, "bull"),
+    (:chvatal, "chvatal"),
+    (:cubical, "cubical"),
+    (:desargues, "desargues"),
+    (:diamond, "diamond"),
+    (:dodecahedral, "dodecahedral"),
+    (:frucht, "frucht"),
+    (:heawood, "heawood"),
+    (:house, "house"),
+    (:housex, "housex"),
+    (:icosahedral, "icosahedral"),
+    (:karate, "karate"),
+    (:krackhardtkite, "krackhardtkite"),
+    (:moebiuskantor, "moebiusantor"),
+    (:octahedral, "octahedral"),
+    (:pappus, "pappus"),
+    (:petersen, "petersen"),
+    (:sedgewickmaze, "sedgewick"),
+    (:tetrahedral, "tetrahedral"),
+    (:truncatedcube, "truncatedcube"),
+    (:truncatedtetrahedron, "truncatedtetrahedron"),
+    (:truncatedtetrahedron_dir, "truncatedtetrahedron"),
+    (:tutte, "tutte"))
+
+colors = ["paleturquoise", "chartreuse", "thistle1", "pink",
+"gold", "wheat", "olivedrab1", "palegreen", "turquoise1",
+"lightgreen", "plum1", "plum", "violet", "hotpink"]
+
+smallgraphs = @drawsvg begin
+    background("grey10")
+    sethue("orange")
+    ng = length(smallgraphs)
+    N = convert(Int, ceil(sqrt(ng)))
+    tiles = Tiler(800, 800, N, N)
+    setline(0.5)
+    for (pos, n) in tiles
+        @layer begin
+            n > ng && break
+            translate(pos)
+            sethue(colors[mod1(n, end)])
+            bbox = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))
+            g = smallgraph(first(smallgraphs[n]))
+            drawgraph(g, boundingbox = bbox, vertexshapesizes = 2, layout = stress)
+            sethue("cyan")
+            text(string(last(smallgraphs[n])), halign = :center, boxbottomcenter(bbox))
+        end
+    end
+end 800 800

It's easy to find out more about these well-known graphs online, such as on the wikipedia. Some of the graphs in this figure would benefit from individual ‘tuning’ of the various layout parameters.

Here's a larger view of the Petersen graph (named after Danish mathematician Julius Petersen, who first described it in 1898).

julia
@drawsvg begin
+    background("grey10")
+    pg = smallgraph(:petersen)
+    sethue("orange")
+    drawgraph(pg, vertexlabels = 1:nv(pg), layout = Shell(nlist=[6:10,]))
+end 600 300

Here's a cubical graph:

julia
@drawsvg begin
+    background("grey10")
+    g = smallgraph(:cubical)
+    sethue("orange")
+    drawgraph(g, layout = spring)
+end 600 300

Getting some information about the graph

There are lots of functions for obtaining information about a graph.

How many vertices?

julia
julia> pg = smallgraph(:petersen)
+julia> nv(pg)
+10

How many edges?

julia
julia> ne(pg)
+15

Which vertices are connected with vertex 1? - ie what are the neighbors of a particular vertex?

julia
julia> neighbors(pg, 1)
+5-element Vector{Int64}:
+ 2
+ 5
+ 6

We can iterate over vertices and edges. To step through each vertex, use the vertices iterator function:

julia
for e in vertices(pg)
+    println(e)
+end
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10

Iterating over edges with the edges iterator function will give a value of type Edge. The src() and dst() functions applied to an edge argument return the numbers of the source and destination vertices respectively.

julia
for e in edges(pg)
+    println(src(e), " => ", dst(e))
+end
+
+1 => 2
+1 => 5
+1 => 6
+2 => 3
+2 => 7
+3 => 4
+3 => 8
+4 => 5
+4 => 9
+5 => 10
+6 => 8
+6 => 9
+7 => 9
+7 => 10
+8 => 10

To add a vertex:

julia
pg1 = smallgraph(:petersen)
+add_vertex!(pg1) # returns true if successful

To add an edge:

julia
add_edge!(pg1, 10, 11) # join 10 to 11

It's sometimes useful to be able to see these relationships between neighbors visually. This example looks for the neighbors of vertex 10 and draws them in thick red lines:

julia
@drawsvg begin
+
+background("grey10")
+pg = smallgraph(:petersen)
+
+vertexofinterest = 10
+
+E = Int[]
+for (n, e) in enumerate(edges(pg))
+    if dst(e) == vertexofinterest || src(e) == vertexofinterest
+        push!(E, n)
+    end
+end
+
+edgewts = [dst(e)  E ? 4 : 1 for e in edges(pg)]
+
+drawgraph(pg,
+    vertexlabels = 1:nv(pg),
+    layout = Shell(nlist=[6:10,]),
+    vertexfillcolors = (v) -> ((v == vertexofinterest) ||
+    v  neighbors(pg, vertexofinterest)) && colorant"rebeccapurple",
+    vertexshapesizes = [v == vertexofinterest ? 20 : 10 for v in 1:nv(pg)],
+    edgestrokecolors = (e, f, t, s, d) -> (e  E) ?
+        colorant"red" : colorant"thistle1",
+    edgestrokeweights = edgewts
+    )
+end 600 300

Other useful functions include has_vertex(g, v) and has_edge(g, s, d).

Degree

The degree of a vertex is the number of edges that meet at that vertex. This is shown in the figure below both in the vertex labels and also color-coded:

julia
@drawsvg begin
+background("grey10")
+sethue("gold")
+g = smallgraph(:krackhardtkite)
+
+drawgraph(g, layout=spring,
+    vertexfillcolors = (vtx) -> distinguishable_colors(nv(g), transform=tritanopic)[degree(g, vtx)],
+    vertexshapesizes = 20,
+    margin=40,
+    vertexlabels = (vtx) -> string(degree(g, vtx)),
+    vertexlabelfontsizes = 20,
+    vertexlabeltextcolors = [colorant"black", colorant"white"]
+    )
+end 600 300

Graphs as matrices

Graphs can be represented as matrices - some say that graph theory is really the study of a particular set of matrices... We'll meet the adjacency matrix and the incidence matrix (and there's an array called the adjacency list too).

Adjacency matrix

A graph G with n vertices can be represented by a square matrix A with n rows and columns. The matrix consists of 1s and 0s. A value of 1 means that there's a connection between two vertices with those indices. For example, if vertex 5 is connected with vertex 4, then A[5, 4] contains 1. The adjacency_matrix() function displays the matrix for a graph:

julia
julia> adjacency_matrix(pg)
+10×10 SparseArrays.SparseMatrixCSC{Int64, Int64} with 30 stored entries:
+  1  1  1
+ 1  1  1
+  1  1  1
+  1  1  1
+ 1  1  1
+ 1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1

(This one:)

julia
@drawsvg begin
+background("grey10")
+pg = smallgraph(:petersen)
+sethue("orange")
+drawgraph(pg, vertexlabels = 1:nv(pg), layout = Shell(nlist=[6:10,]))
+end 600 400

Notice that this matrix, for a Petersen graph, is symmetrical about the top-left/bottom-right diagonal, because, in an undirected graph, a connection from vertex 4 to vertex 5 is also a connection from vertex 5 to 4. The vertical sum of each column (and the horizontal sum of each row) is the number of edges shared by that vertex,

We can provide an adjacency matrix to the graph construction functions to create a graph. For example, this matrix recreates the House graph (aka smallgraph(:house)) from its adjacency matrix:

julia
m = [0 1 1 0 0;
+     1 0 0 1 0;
+     1 0 0 1 1;
+     0 1 1 0 1;
+     0 0 1 1 0]
+
+@drawsvg begin
+    background("grey10")
+    hg = Graph(m)
+    sethue("palegreen")
+    drawgraph(hg, vertexlabels=1:nv(hg), layout=stress)
+end 800 400

Incidence matrix

We can also represent a graph G with a matrix M consisting of 1s, -1s, and 0s, where the rows are vertices and the columns are edges. M is called an incidence matrix.

julia
julia> incidence_matrix(pg)
+10×15 SparseArrays.SparseMatrixCSC{Int64, Int64} with 30 stored entries:
+ 1  1  1
+ 1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1
+  1  1  1

The first column of this matrix is an edge between vertex 1 and vertex 2, whereas the first column of the adjacency matrix defines the vertices that are connected with vertex 1.

For a directed graph:

julia
julia> dg = DiGraph(3, 3)
+
+julia> incidence_matrix(dg)
+
+3×3 SparseArrays.SparseMatrixCSC{Int64, Int64} with 6 stored entries:
+ -1   1   1
+  1  -1
+  -1

Here, negative values are used, so 1 and -1 are used to indicate directions. The first column,-1 1 0, specifies that the first edge goes from 2 to 1.

An incidence matrix is another useful way of quickly defining a graph. That's why we can pass an incidence matrix to the Graph() and DiGraph() functions to create new graphs.

For example, here's a familiar image:

julia
g = [0 1 1;
+     1 0 1;
+     1 1 0]
+
+@drawsvg begin
+background("grey20")
+drawgraph(Graph(g),
+    layout = ngon(O + (0, 20), 80, 3, π/6, vertices=true),
+    vertexshapes = :circle,
+    vertexshapesizes = 40,
+    edgestrokeweights = 15,
+    edgestrokecolors = colorant"gold",
+    vertexfillcolors = [colorant"#CB3C33",
+        colorant"#389826", colorant"#9558B2"])
+end 600 250

Adjacency list

Another way of representing a graph is by using an array of arrays in the form of an adjacency list. This array has n elements to represent a graph with n vertices. The first element of the array is an array of those vertex numbers that are connected with vertex 1. Element 2 holds the vertex numbers connected with vertex 2,and so on, up to element n.

For example, this adjacency list:

julia
[
+    [2, 5, 7],  # vertex 1 connects with 2, 5, and 7
+    [1, 3, 9],  # vertex 2 connects with 1, 3, and 9
+    [2, 4, 11],
+    [3, 5, 13],
+    [1, 4, 15],
+    [7, 15, 20],
+    [1, 6, 8],
+    [7, 9, 16],
+    [2, 8, 10],
+    [9, 11, 17],
+    [3, 10, 12],
+    [11, 13, 18],
+    [4, 12, 14],
+    [13, 15, 19],
+    [5, 6, 14],
+    [8, 17, 20],
+    [10, 16, 18],
+    [12, 17, 19],
+    [14, 18, 20],
+    [6, 16, 19]
+]

defines a graph with 20 vertices. The Graph() function accepts such an adjacency list, preceded by the number of edges.

julia
g = Graph(30, [
+    [2, 5, 7],
+    [1, 3, 9],
+    [2, 4, 11],
+    [3, 5, 13],
+    [1, 4, 15],
+    [7, 15, 20],
+    [1, 6, 8],
+    [7, 9, 16],
+    [2, 8, 10],
+    [9, 11, 17],
+    [3, 10, 12],
+    [11, 13, 18],
+    [4, 12, 14],
+    [13, 15, 19],
+    [5, 6, 14],
+    [8, 17, 20],
+    [10, 16, 18],
+    [12, 17, 19],
+    [14, 18, 20],
+    [6, 16, 19]])
+
+@drawsvg begin
+    background("grey10")
+    sethue("orange")
+    drawgraph(g, layout=stress)
+end 600 300

Graphs.jl uses adjacency lists internally. If we peek inside a graph and look at its fields, we'll see something like this, for a Directed Graph:

fieldnames(DiGraph)
+(:ne, :fadjlist, :badjlist)

Here, fadjlist is a forward adjacency list which defines how each vertex connects to other vertices, and badjlist is a backward adjacency list which defines how each vertex receives connections from other vertices.

Paths, cycles, routes, and traversals

Graphs help us answer questions about connectivity and relationships. For example, think of a railway network as a graph, with the stations as vertices, and the tracks as edges. We want to ask questions such as "Can we get from A to B by train?", which therefore becomes the question "Are there sufficient edges between vertices in the graph such that we can find a continuous path that goes from vertex A to vertex B?".

Graphs.jl has many features for traversing graphs and finding paths. We can look at just a few of them here.

Note

The study of graphs uses a lot of terminology, and many of the terms also have informal and familiar meanings. Usually the informal meanings are reasonably accurate and appropriate, but note that the words also have more precise definitions in the literature.

Paths and cycles

A path is a sequence of edges between some start vertex and some end vertex, such that a continuous unbroken route is available.

A cycle is a path where the start and end vertices are the same - a closed path. Other vertices in the path occur just once. These are also called circuits in some sources.

The cycle_basis() function finds all the cycles in a graph (at least, it finds a basis of an undirected graph, which is a minimal collection of cycles that can be added to make all the cycles). The result is an array of arrays of vertex numbers.

julia> pg = smallgraph(:petersen)
+julia> cycles = cycle_basis(pg)
+6-element Vector{Vector{Int64}}:
+ [1, 6, 8, 10, 5]
+ [4, 9, 6, 8, 10, 5]
+ [7, 9, 6, 8, 10]
+ [4, 3, 8, 10, 5]
+ [1, 2, 3, 8, 10, 5]
+ [7, 2, 3, 8, 10]
julia
@drawsvg begin
+    background("grey10")
+    sethue("magenta")
+    pg = smallgraph(:petersen)
+
+    cycles = cycle_basis(pg)
+    table = Table(2, length(cycles) ÷ 2, 220, 160)
+
+    for (n, cycle) in enumerate(cycles)
+        cycleedges = [Edge(cycle[i], cycle[mod1(i + 1, end)]) for i in 1:length(cycle)]
+        @layer begin
+            translate(table[n])
+            bb = BoundingBox(box(O, table.colwidths[1], table.rowheights[1]))
+            sethue("grey60")
+            drawgraph(pg,
+                layout = stress,
+                vertexshapes = :none,
+                boundingbox = bb)
+            sethue(HSB(rescale(n, 1, length(cycles) + 1, 0, 360), 0.8, 0.6))
+            drawgraph(pg,
+                layout = stress,
+                boundingbox = bb,
+                vertexshapes = (v) -> begin
+                    v  cycle && box(O, 12, 12, :fill)
+                end,
+                vertexshapesizes = 30,
+                vertexlabels = (v) -> v  cycle && string(v),
+                edgestrokeweights = 5,
+                edgelist = cycleedges,
+            )
+        end
+    end
+end 600 300

For digraphs, you can use simplecycles() to find every cycle.

This example shows every cycle of a complete digraph {4, 12}.

julia
sdg = complete_digraph(4)
+
+cycles = simplecycles(sdg)
+
+@drawsvg begin
+    background("grey10")
+    sethue("orange")
+    tiles = Tiler(600, 600, 4, 4)
+    for (pos, n) in tiles
+        cycle = cycles[n]
+        cycle_path = [Edge(cycle[i], cycle[mod1(i + 1, end)]) for i in 1:length(cycle)]
+        @layer begin
+            translate(pos)
+            tilebox = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))
+            text(string(cycle), halign=:center, boxbottomcenter(tilebox))
+            sethue(HSV(rand(0:360), 0.6, 0.9))
+            drawgraph(sdg, layout=squaregrid,
+                boundingbox = tilebox,
+                edgelist = cycle_path,
+                vertexlabels = (v) -> v  cycle ? string(v) : "",
+                vertexlabeltextcolors= colorant"white",
+                vertexlabeloffsetdistances = 10,
+                vertexlabeloffsetangles = [π, 0],
+                vertexshapes = :none,
+                edgelines = (edgenumber, edgesrc, edgedest, from, to) ->
+                    begin
+                        newpath()
+                        arc2sagitta(from, to, 5, :stroke)
+                    end)
+        end
+    end
+end 600 600

There can be a lot of cycles in a graph. For example, a complete_digraph(10) has 1,110,073 cycles. Graphs.jl has tools for working with cycles efficiently.

Visiting every vertex once

It's useful to know how to visit every vertex just once.

You can do this for DiGraphs if you can find a cycle that's the same length as the graph. However, there might be a lot of possibilities, since there could be many such cycles. This example uses simplecycles() to find all of them (there are over 400 for this graph), so only the first one with the right length is used.

julia
@drawsvg begin
+background("grey10")
+g = complete_digraph(6)
+
+tour = first(filter(cycle -> length(cycle) == nv(g), simplecycles(g)))
+
+vertexlist_to_edgelist(vlist) = [Edge(p[1] => p[2]) for p in zip(vlist, circshift(vlist, -1))]
+
+sethue("grey50")
+
+drawgraph(g, layout = spring)
+
+sethue("orange")
+drawgraph(g, layout = spring,
+    edgelist = vertexlist_to_edgelist(tour),
+    edgestrokeweights = 10,
+    )
+end 800 400

Trees

A tree is a connected graph with no cycles. A rooted tree is a tree graph in which one vertex has been designated as the root, or origin. Rooted tree graphs can be drawn using the Buchheim layout algorithm (named after the developer, Christoph Buchheim).

In the next example, we start with a binary tree, in which each vertex is connected to no more than two others - but we'll add one more vertex so that it's no longer a binary tree.

Code for this figure

This code generates the figure below.

julia
using Karnak, Graphs, NetworkLayout, Colors
+
+d = @drawsvg begin
+    background("grey10")
+    sethue("purple")
+    fontsize(12)
+
+    bt = binary_tree(4)
+    g = SimpleDiGraph(collect(edges(bt)))
+
+    # add another vertex
+    add_vertex!(g)
+    add_edge!(g, 7, 16)
+
+    drawgraph(g,
+        layout=buchheim,
+        margin=20,
+        edgestrokeweights=2,
+        edgegaps=12,
+        vertexlabels = 1:nv(g),
+        vertexshapes=:circle,
+        vertexfillcolors=[RGB(Karnak.Luxor.julia_red...),
+            RGB(Karnak.Luxor.julia_purple...),
+            RGB(Karnak.Luxor.julia_green...),
+            RGB(Karnak.Luxor.julia_blue...)],
+        vertexshapesizes=12,
+        vertexlabeltextcolors=colorant"white",
+    )
+end 600 350

Shortest paths: the A* algorithm

One way to find the shortest path between two vertices is to use the a_star() function, and provide the graph, the start vertex, and the end vertex. The function returns a list of edges.

(The unusual name of this function is just a reference to the name of the algorithm, A*, first published in 1968 by Peter Hart, Nils Nilsson, and Bertram Raphael.)

The function finds the shortest path and returns an array of edges that define the path.

julia
@drawsvg begin
+background("grey10")
+sethue("lemonchiffon")
+g = binary_tree(5)
+dirg = SimpleDiGraph(collect(edges(g)))
+astar = a_star(dirg, 1, 21)
+drawgraph(dirg, layout=buchheim,
+    vertexlabels = 1:nv(g),
+    vertexshapes = (vtx) -> box(O, 30, 20, :fill),
+    vertexlabelfontsizes = 16,
+    edgegaps=20,
+    edgestrokeweights= 5,
+    edgestrokecolors = (edgenumber, s, d, f, t) -> (s  src.(astar) && d  dst.(astar)) ?
+        colorant"gold" : colorant"grey40",
+    vertexfillcolors = (vtx) -> (vtx  src.(astar) ||
+        vtx  dst.(astar)) && colorant"gold"
+    )
+end 800 400

One use for the A* algorithm is for finding paths through mazes. In the next example, a grid graph is subjected to some random vandalism, removing quite a few edges. Then a route through the maze was easily found by a_star().

julia
using Random
+Random.seed!(6)
+
+@drawsvg begin
+background("grey10")
+
+W, H = 20, 20
+g = grid((W, H))
+
+# vandalize the grid:
+let
+    c = 0
+    while c < 200
+        v = rand(1:W*H)
+        rem_edge!(g, v, [v-1, v+1, v-W, v+H][rand(1:end)]) && (c += 1)
+    end
+end
+
+# find a route
+astar = a_star(g, 1, W * H)
+
+sethue("grey60")
+setlinecap("square")
+drawgraph(g,
+    vertexshapesizes = 0,
+    layout=squaregrid,
+    edgestrokeweights = 12)
+
+sethue("red")
+drawgraph(g,
+    vertexshapes = :none,
+    layout=squaregrid,
+    edgelist=astar,
+    edgegaps=0,
+    edgestrokeweights=5)
+
+end 600 600

Shortest paths: Dijkstra's algorithm

A well-known algorithm for finding the shortest path between graph vertices is named for its creator, Edsger W. Dijkstra. He wrote about his inspiration:

"I designed it in about twenty minutes. One morning I was shopping in Amsterdam with my young fiancée, and tired, we sat down on the café terrace to drink a cup of coffee and I was just thinking about whether I could do this, and I then designed the algorithm for the shortest path.

In Graphs.jl, this algorithm is available with dijkstra_shortest_paths(). After running this function, the result is an object with various pieces of information about all the shortest paths: this is a DijkstraState object, with fields parents, dists, predecessors, pathcounts, closest_vertices. There's an enumerate_paths() function which can extract the vertex information for a specific path from the DijkstraState object.

The following code animates the results of examining a grid graph using Dijkstra's algorithm. The shortest paths between the first vertex and every other vertex are drawn in a series of frames, one by one.

julia
function frame(scene, framenumber, g)
+    framenumber == 1 && return
+
+    # run Dijkstra's algorithm
+
+    ds = dijkstra_shortest_paths(g, 1, allpaths=true, trackvertices=true)
+
+    # for which destination vertex?
+    destv = framenumber
+
+    # get the vertices on the path
+    _, ep = enumerate_paths(ds, [1, destv])
+
+    # convert to edges
+    vlist = [Edge(p[1] => p[2]) for p in zip(ep, circshift(ep, -1))]
+
+    # draw background graph
+    background("grey10")
+    sethue("grey40")
+    drawgraph(g, layout=squaregrid, vertexshapes=:none)
+    path = Point[]
+
+    # draw shortest path
+    drawgraph(g,
+        layout=squaregrid,
+        vertexlabelfontsizes=30,
+        vertexshapes=:none,
+        edgelist = vlist[1:end-1],
+        edgefunction = (n, s, d, f, t) -> begin
+            push!(path, f)
+            push!(path, t)
+        end)
+    sethue("orange")
+    setline(10)
+    setlinejoin("bevel")
+    poly(path, :stroke, close=false)
+    sethue("red")
+    circle.(path[[1, end]], 10, :fill)
+end
+
+function main()
+    g = grid((20, 20))
+    amovie = Movie(600, 600, "dijkstra")
+    animate(amovie,
+        Scene(amovie, (s, f) -> frame(s, f, g), 1:400),
+        framerate=10)
+end
+
+main()

Weighted graphs

Up to now, our graphs have been like maps of train or metro networks, focusing on connections, rather than on, say, distances and journey times. Edges have been effectively always one unit long, and shortest path calculations can't take into account the true length of edges. But some systems modelled by graphs require this knowledge, which is where weighted graphs are useful.

A weighted graph, which can be either undirected or directed, has numeric values assigned to each edge. This value is called the "weight" of an edge, and it's usually a positive integer, but can be anything.

The word "weight" is interpreted according to context and the nature of the system modelled by the graph. For example, a higher value for the weight of an edge could mean a longer journey time or more expensive fuel costs, for map-style graphs, but it could signify high attraction levels for a social network graph.

To use weighted graphs, we must install a separate package, SimpleWeightedGraphs.jl, and load it alongside Graphs.jl.

To create a new weighted graph:

julia
using Graphs, SimpleWeightedGraphs
+
+julia> g = SimpleWeightedGraph()

This creates a new, empty, weighted, undirected, graph. Or we can pass an existing graph to this function:

julia
julia> wg = SimpleWeightedGraph(Graph(6, 15), 4.0)

To get the weights of the edge between two vertices, use get_weight():

julia
julia> get_weight(wg, 1, 2)

To change the weight of the edge between two vertices, use add_edge():

julia
julia> add_edge!(graph, from, to, weight)

You can provide a list of weights to the edgelabels keyword, which can accept a vector of edge weights.

julia
g = SimpleWeightedGraph(3)
+add_edge!(g, 1, 2, 12)
+add_edge!(g, 1, 3, 13)
+add_edge!(g, 2, 3, 23)
+
+edgeweights = [g.weights[e.src, e.dst] for e in edges(g)]
+
+@drawsvg begin
+    background("black")
+    sethue("magenta")
+    fontsize(20)
+    drawgraph(
+        g,
+        vertexshapesizes = 15,
+        vertexlabels = 1:nv(g),
+        edgelabelfontsizes = 40,
+        edgelabels = edgeweights
+    )
+end

In the next example, we set the default weight of every edge to 4.0 when the graph is created, and changed just one edge's weight:

julia
wg = SimpleWeightedGraph(Graph(6, 15), 4.0)
+add_edge!(wg, 1, 2, 10_000_000)
+@drawsvg begin
+background("grey10")
+sethue("gold")
+drawgraph(wg, edgecurvature=10,
+    vertexlabels = 1:nv(wg),
+    edgelabels = (k, s, d, f, t) -> begin
+        weight = get_weight(wg, s, d)
+            if weight > 10
+                sethue("white")
+                box(midpoint(f, t), 30, 16, :fill)
+                setcolor("magenta")
+            else
+                sethue(HSB(rescale(k, 1, ne(wg), 0, 360), 0.7, 0.6))
+            end
+            text(string(weight), midpoint(f,t), halign=:center, valign=:middle)
+        end,
+    edgegaps = 10
+    )
+end 600 300

A look at the graph's adjacency matrix shows that the weights have replaced the 1s:

julia
julia> adjacency_matrix(wg)
+6×6 SparseArrays.SparseMatrixCSC{Float64, Int64} with 30 stored entries:
+     1.0e7  4.0  4.0  4.0  4.0
+ 1.0e7     4.0  4.0  4.0  4.0
+ 4.0    4.0   4.0  4.0  4.0
+ 4.0    4.0    4.0   4.0  4.0
+ 4.0    4.0    4.0  4.0   4.0
+ 4.0    4.0    4.0  4.0  4.0

For a directed graph, each edge can have two weights, one from src to dst, the other from dst to src.

Spanning trees

A spanning tree is a set of edges that connect all the vertices of a graph together, without forming any cycles. There are various functions for finding spanning trees in Graphs.jl, including algorithms by Otakar Borůvka (boruvka_mst()), Joseph Kruskal (kruskal_mst()), and Robert Prim (prim_mst()). (Immortality can be attained by inventing a new graph-spanning algorithm.)

When used on a weighted graph, these functions find the minimum possible tree - the tree that scores the lowest when the weights of the edges are added up. (Some of these functions can also find the highest-scoring trees.)

julia
@drawsvg begin
+background("grey10")
+
+g = SimpleWeightedGraph(smallgraph(:octahedral))
+
+for e in edges(g)
+    add_edge!(g, src(e), dst(e), rand(1:10))
+end
+add_edge!(g, 1, 4, 200)
+
+sethue("grey50")
+drawgraph(g, layout=spring, vertexshapesizes = 20, edgestrokeweights = 3,
+    edgelabels = (k, src, dest, f, t) ->
+    (sethue("cyan"); label(string(get_weight(g, src, dest)), :nw, midpoint(f, t))))
+
+mst, weights = boruvka_mst(g)
+sethue("gold")
+drawgraph(g, vertexshapes = :none, layout=spring, edgelist = mst, edgestrokeweights = 15)
+
+mst = kruskal_mst(g)
+sethue("green")
+drawgraph(g, layout=spring, vertexshapes = :none, edgelist = mst, edgestrokeweights = 10)
+
+mst = prim_mst(g)
+sethue("red")
+drawgraph(g, layout=spring, vertexshapes = :none, edgelist = mst, edgestrokeweights = 3)
+
+sethue("black")
+drawgraph(g, layout=spring, vertexlabels = 1:nv(g), edgelines=:none)
+
+end 600 400

Notice how all the spanning trees found have avoided the edge joining 1 and 4, which has a weight of 200.0.

Next, here's boruka_mst() looking for the maximum spanning tree; Edge(1 => 4) is always included every time the function runs.

julia
using Karnak, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs
+
+@drawsvg begin
+    background("grey10")
+    tiles = Tiler(600, 600, 2, 2)
+    let
+        g = SimpleWeightedGraph(smallgraph(:octahedral))
+        for (pos, n) in tiles
+            for e in edges(g)
+                add_edge!(g, src(e), dst(e), rand(1:10))
+            end
+            add_edge!(g, 1, 4, 200)
+            @layer begin
+                translate(pos)
+                bb = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))
+                sethue("grey50")
+                mst, weights = boruvka_mst(g, minimize=false)
+                drawgraph(g,
+                    boundingbox=bb,
+                    layout=spring,
+                    vertexshapesizes=10,
+                    edgestrokeweights=3,
+                    edgelabels=(k, src, dest, f, t) -> begin
+                        sethue("orange")
+                        label(string(get_weight(g, src, dest)), :nw, midpoint(f, t))
+                        end,)
+
+                sethue("gold")
+                drawgraph(g,
+                    boundingbox=bb,
+                    layout=spring,
+                    vertexshapes=:none,
+                    edgelist=mst,
+                    edgestrokeweights=5,)
+
+                drawgraph(
+                    g,
+                    boundingbox=bb,
+                    layout=spring,
+                    vertexlabels=1:nv(g),
+                    vertexshapes=:circle,
+                    vertexshapesizes=7.5,
+                    edgegaps=0,
+                    edgelines=:none,)
+            end
+        end
+    end
+end 600 600

Centrality

Centrality is a measure of the importance of vertices in a graph. It might describe the importance of "influencers" in social networks, or the importance of certain key positions in a transport network. Graphs.jl offers a number of ways to measure the centrality of vertices in a graph. Refer to the manual's "Centrality Measures" section for details.

Here's betweenness_centrality() applied to the Karate Club network. The vertices are sized and colored using the vector of values returned in bc.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:karate)
+bc = betweenness_centrality(g)
+sethue("gold")
+drawgraph(g, layout = spring,
+    vertexlabels = string.(round.(100bc, digits = 1)),
+    vertexshapesizes = 15 .+ 30bc,
+    vertexfillcolors = HSB.(rescale.(bc, 0, maximum(bc), 150, 360), 0.7, 0.8),
+    )
+end 800 600

Graph coloring

A simple graph coloring is a way of choosing colors for the vertices of a graph so that no adjacent vertices have the same color. The greedy_color() function finds a random graph coloring for a graph. The total number of colors, and an array of integers representing the colors, are returned in fields num_colors and colors (as integers between 1 and n).

In the following example, only three colors are needed such that no edge connects vertices with the same color. Colors.jl has a distinguishable_colors() function that finds n colors which look sufficiently different:

julia
@drawsvg begin
+    background("grey10")
+    g = smallgraph(:octahedral)
+    gc = greedy_color(g)
+    dcolors = distinguishable_colors(gc.num_colors)
+    sethue("gold")
+    drawgraph(g, layout=stress,
+        vertexfillcolors = dcolors[gc.colors],
+        vertexshapesizes = 30)
+end 800 400

Here gc.num_colors is 3. However, a complete graph might require many colors because there are so many connected vertices. For example, gc.num_colors is now 20:

julia
@drawsvg begin
+    background("grey10")
+    g = complete_graph(20)
+    gc = greedy_color(g)
+    dcolors = distinguishable_colors(gc.num_colors)
+    sethue("grey50")
+    drawgraph(g, layout=stress,
+        vertexfillcolors = dcolors[gc.colors],
+        vertexshapesizes = 20)
+end 600 300
+ + + + \ No newline at end of file diff --git a/dev/basics/0be78faf.svg b/dev/basics/0be78faf.svg deleted file mode 100644 index 9ab8da4..0000000 --- a/dev/basics/0be78faf.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/0d4966ab.svg b/dev/basics/0d4966ab.svg deleted file mode 100644 index 8dd3808..0000000 --- a/dev/basics/0d4966ab.svg +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/1d30dbfe.svg b/dev/basics/1d30dbfe.svg deleted file mode 100644 index 20694f9..0000000 --- a/dev/basics/1d30dbfe.svg +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/29d7e378.svg b/dev/basics/29d7e378.svg deleted file mode 100644 index a4d85ff..0000000 --- a/dev/basics/29d7e378.svg +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/2dd0cb73.svg b/dev/basics/2dd0cb73.svg deleted file mode 100644 index 7f4c435..0000000 --- a/dev/basics/2dd0cb73.svg +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/34b1489c.svg b/dev/basics/34b1489c.svg deleted file mode 100644 index b9831e9..0000000 --- a/dev/basics/34b1489c.svg +++ /dev/null @@ -1,420 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/3d72107d.svg b/dev/basics/3d72107d.svg deleted file mode 100644 index 2e37b9b..0000000 --- a/dev/basics/3d72107d.svg +++ /dev/null @@ -1,1004 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/482ee6c7.svg b/dev/basics/482ee6c7.svg deleted file mode 100644 index d23da6c..0000000 --- a/dev/basics/482ee6c7.svg +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/56ece130.svg b/dev/basics/56ece130.svg deleted file mode 100644 index d0ced9a..0000000 --- a/dev/basics/56ece130.svg +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/5952ecd2.svg b/dev/basics/5952ecd2.svg deleted file mode 100644 index 400d558..0000000 --- a/dev/basics/5952ecd2.svg +++ /dev/null @@ -1,1195 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/5f0ece29.svg b/dev/basics/5f0ece29.svg deleted file mode 100644 index 2c28930..0000000 --- a/dev/basics/5f0ece29.svg +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/6092e352.svg b/dev/basics/6092e352.svg deleted file mode 100644 index 035b9d3..0000000 --- a/dev/basics/6092e352.svg +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/8996a572.svg b/dev/basics/8996a572.svg deleted file mode 100644 index 76e75c0..0000000 --- a/dev/basics/8996a572.svg +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/8fe3d2eb.svg b/dev/basics/8fe3d2eb.svg deleted file mode 100644 index 5a434f9..0000000 --- a/dev/basics/8fe3d2eb.svg +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/a58a2a63.svg b/dev/basics/a58a2a63.svg deleted file mode 100644 index 9c44e59..0000000 --- a/dev/basics/a58a2a63.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/a657f237.svg b/dev/basics/a657f237.svg deleted file mode 100644 index 658f48d..0000000 --- a/dev/basics/a657f237.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/ab83bef0.svg b/dev/basics/ab83bef0.svg deleted file mode 100644 index 3d1515d..0000000 --- a/dev/basics/ab83bef0.svg +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/b9675bf3.svg b/dev/basics/b9675bf3.svg deleted file mode 100644 index defe903..0000000 --- a/dev/basics/b9675bf3.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/cb5bc43d.svg b/dev/basics/cb5bc43d.svg deleted file mode 100644 index 3c0407f..0000000 --- a/dev/basics/cb5bc43d.svg +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/cd230396.svg b/dev/basics/cd230396.svg deleted file mode 100644 index c66ef53..0000000 --- a/dev/basics/cd230396.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/db29410b.svg b/dev/basics/db29410b.svg deleted file mode 100644 index 37fa231..0000000 --- a/dev/basics/db29410b.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/ddad0a85.svg b/dev/basics/ddad0a85.svg deleted file mode 100644 index 682f7f3..0000000 --- a/dev/basics/ddad0a85.svg +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/e0ab67c3.svg b/dev/basics/e0ab67c3.svg deleted file mode 100644 index 6013628..0000000 --- a/dev/basics/e0ab67c3.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/ed15b939.svg b/dev/basics/ed15b939.svg deleted file mode 100644 index 5794212..0000000 --- a/dev/basics/ed15b939.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/f0be920d.svg b/dev/basics/f0be920d.svg deleted file mode 100644 index e9b3471..0000000 --- a/dev/basics/f0be920d.svg +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/f1aa2511.svg b/dev/basics/f1aa2511.svg deleted file mode 100644 index 33ab8fd..0000000 --- a/dev/basics/f1aa2511.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/f879495e.svg b/dev/basics/f879495e.svg deleted file mode 100644 index a3caa04..0000000 --- a/dev/basics/f879495e.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/basics/index.html b/dev/basics/index.html deleted file mode 100644 index d938cba..0000000 --- a/dev/basics/index.html +++ /dev/null @@ -1,841 +0,0 @@ - -Basic graphs · Karnak

Graph theory

This section contains an introduction to basic graph theory using the Graphs.jl package, illustrated with figures made with Karnak.jl. You don't need any prior knowledge of graphs, but you should be familiar with the basics of programming in Julia.

Note

All the figures in this manual are generated when the pages are built by Documenter.jl, and the code to draw them is included here. To run the examples, you'll need the packages Karnak, Graphs, NetworkLayout, Colors, and possibly SimpleWeightedGraphs.

Graphs, vertices, and edges

Graph theory is used for analysing networks and the relationships between things in the network.

Code for this figure

This code generates the figure below.

using Karnak, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs
-d = @drawsvg begin
-    background("grey10")
-    sethue("yellow")
-    fontsize(12)
-    g = Graph(3, 3)
-    add_vertex!(g)
-    add_edge!(g, 3, 4)
-    drawgraph(g,
-        layout=spring,
-        margin=50,
-        edgecurvature=0.2,
-        edgegaps=30,
-        edgestrokeweights=2,
-        vertexlabels = (v) -> "thing $(v)",
-        vertexshapes = :circle,
-        vertexfillcolors = [RGB(Karnak.Luxor.julia_red...), RGB(Karnak.Luxor.julia_purple...), RGB(Karnak.Luxor.julia_green...), RGB(Karnak.Luxor.julia_blue...)],
-        vertexshapesizes = 25,
-        vertexlabeltextcolors = colorant"white",
-        edgelabels=(n, s, d, f, t) -> begin
-            θ = slope(f, t)
-            fontsize(12)
-            translate(midpoint(f, t))
-            rotate(θ)
-            sethue("white")
-            label("$s and $d", [:n, :n, :s, :n][n], O, offset=10)
-            sethue("orange")
-            label("edge $n", [:n, :n, :s, :n][n], O, offset=-15)
-        end,
-        )
-end 600 350
Example block output

A typical graph consists of:

  • vertices, which represent the things or entities, and

  • edges, which describe how two things or entities connect and relate to each other

Vertices are also called nodes in the world of graph theory.

The Graphs.jl package provides many ways to create graphs. We'll start off with this basic approach:

using Graphs
-g = Graph()

The Graph() function creates a new empty graph and stores it in g. (SimpleGraph() is an alternative to Graph().) Let's add a single vertex:

add_vertex!(g)

We can easily add a number of new vertices:

add_vertices!(g, 3)

The graph has four vertices now. We can refer to them as 1, 2, 3, and 4.

We'll join some pairs of vertices with an edge:

add_edge!(g, 1, 2)  # join vertex 1 with vertex 2
-add_edge!(g, 1, 3)
-add_edge!(g, 2, 3)
-add_edge!(g, 1, 4)

In Graphs.jl, vertices are always numbered from 1 to n.

g is now a {4, 4} undirected simple Int64 graph}.

It's time to see some kind of visual representation of the graph we've made.

using Karnak, Graphs
-
-g = Graph()
-add_vertices!(g, 4)
-add_edge!(g, 1, 2)
-add_edge!(g, 1, 3)
-add_edge!(g, 2, 3)
-add_edge!(g, 1, 4)
-
-@drawsvg begin
-    background("grey10")
-    sethue("orange")
-    drawgraph(g, vertexlabels = [1, 2, 3, 4])
-end 600 300

This is just one of the many ways this graph can be represented visually. The locations of the vertices as drawn here are not part of the graph's definition. The default styling uses the current Luxor color, with small circles marking the vertex positions. drawgraph() places the graphics for the graph on the current Luxor drawing.

Note

SVG is used in this manual because it's a good format for line drawings, but you can also use Karnak.jl to create PDF or PNG. See the Luxor documentation for details. PNG is a good choice if the graphics get very complex, since large SVGs can tax web browsers.

Undirected and directed graphs

We'll meet two main types of graph, undirected and directed. In our undirected graph g above, vertex 1 and vertex 2 are neighbors, connected with an edge, but there's no way to specify or see a direction for that connection. For example, if the graph was modelling people making financial transactions, we couldn't tell whether the person at vertex 1 sent money to the person at vertex 2, or received money from them.

In Graphs.jl, we can create directed graphs with DiGraph() (also SimpleDiGraph()).

gd = DiGraph()
-add_vertices!(gd, 4)
-add_edge!(gd, 1, 2)
-add_edge!(gd, 1, 3)
-add_edge!(gd, 2, 3)
-add_edge!(gd, 1, 4) # vertex 1 to vertex 4
-add_edge!(gd, 4, 1) # vertex 4 to vertex 1
-
-@drawsvg begin
-    background("grey10")
-    sethue("thistle1")
-    drawgraph(gd, vertexlabels = [1, 2, 3, 4], edgecurvature=5)
-end 600 300
Example block output
Note

In this representation of our directed graph gd, we can see the direction of the edges joining the vertices. The edgecurvature keyword has been used to specify a small amount of curvature for each edge. Otherwise, with the default drawing settings, the two edges connecting vertices 1 and 4 would have been drawn overlapping, and difficult to distiguish at a glance.

Very simple graphs

Creating graphs by typing the connections manually is tedious, so we can use functions such as the Graph/SimpleGraph and DiGraph/SimpleDiGraph constructor functions:

g = Graph(10, 5) # 10 vertices, 5 edges
-
-d1 = @drawsvg begin
-    background("grey10")
-    sethue("gold")
-    drawgraph(g, vertexlabels = vertices(g))
-end 400 300
-
-gd = SimpleDiGraph(5, 3) # 5 vertices, 3, edges
-
-d2 = @drawsvg begin
-    background("grey10")
-    setline(0.5)
-    sethue("firebrick")
-    drawgraph(gd, vertexlabels = vertices(g))
-end 400 300
-
-hcat(d1, d2)
Example block output

Neither of these two graphs is a connected graph. In a connected graph, every vertex is connected to every other via some path, a sequence of edges.

We can define how many vertices and edges the graph should have. An undirected graph with 10 vertices can have between 0 to 45 (binomial(10, 2)) edges, a directed graph up to 90 edges.

Well-known graphs

Graphs have been studied for a few centuries, so there are many familiar and well-known graphs and types of graph.

In a complete graph, every vertex is connected to every other vertex.

N = 10
-g = complete_graph(N)
-@drawsvg begin
-   background("grey10")
-   setline(0.5)
-   sethue("pink")
-   drawgraph(g, vertexlabels = vertices(g))
-end 600 300
Example block output

There's also a complete_digraph() function.

N = 7
-g = complete_digraph(N)
-@drawsvg begin
-    background("grey10")
-    setline(0.5)
-    sethue("orange")
-    drawgraph(g, vertexlabels = vertices(g), edgecurvature = 2)
-end 600 300
Example block output

In a bi-partite graph, every vertex belongs to one of two groups. Each vertex in the first group is connected to one or more vertices in the second group.

The next figure shows the complete version of a bi-partite graph. Each vertex is connected to every other vertex in the other group.

N = 10
-g = complete_bipartite_graph(N, N)
-H = 300
-W = 550
-@drawsvg begin
-    background("grey10")
-    pts = vcat(
-        between.(O + (-W/2, H/2), O + (W/2, H/2), range(0, 1, length=N)),
-        between.(O + (-W/2, -H/2), O + (W/2, -H/2), range(0, 1, length=N)))
-    sethue("aquamarine")
-    drawgraph(g, vertexlabels = 1:nv(g), layout = pts, edgestrokeweights=0.5)
-end 600 400
Example block output

Here, we calculated the coordinates of the vertices and passed the resulting pts to the layout keyword.

A grid graph doesn't need much explanation:

M = 4
-N = 5
-g = Graphs.grid([M, N])
-@drawsvg begin
-    background("grey10")
-    setline(0.5)
-    sethue("greenyellow")
-    drawgraph(g, vertexlabels = 1:nv(g), layout=stress)
-end 600 300
Example block output

Star graphs (star_graph(n)) and wheel graphs (wheel_graph(n)) deliver what their names promise.

g = star_graph(12)
-@drawsvg begin
-    background("grey10")
-    sethue("orange")
-    drawgraph(g, vertexlabels=1:nv(g), layout=stress)
-end 600 300
Example block output
g = wheel_graph(12)
-@drawsvg begin
-    background("grey10")
-    sethue("palegreen")
-    drawgraph(g, vertexlabels=1:nv(g), layout=stress)
-end 600 300
Example block output

There are star_digraph() and wheel_digraph() DiGraph versions too.

Even more well-known graphs

There are probably as many graphs as there are possible games of chess. In both fields, the more commonly-seen patterns have been studied extensively by enthusiasts for years.

Many well-known graphs are provided by the smallgraph() function. Supply one of the available symbols, such as :bull, or :house.

Code for this figure

This code generates the figure below.

using Karnak, Graphs, NetworkLayout
-smallgraphs = (
-    (:bull, "bull"),
-    (:chvatal, "chvatal"),
-    (:cubical, "cubical"),
-    (:desargues, "desargues"),
-    (:diamond, "diamond"),
-    (:dodecahedral, "dodecahedral"),
-    (:frucht, "frucht"),
-    (:heawood, "heawood"),
-    (:house, "house"),
-    (:housex, "housex"),
-    (:icosahedral, "icosahedral"),
-    (:karate, "karate"),
-    (:krackhardtkite, "krackhardtkite"),
-    (:moebiuskantor, "moebiusantor"),
-    (:octahedral, "octahedral"),
-    (:pappus, "pappus"),
-    (:petersen, "petersen"),
-    (:sedgewickmaze, "sedgewick"),
-    (:tetrahedral, "tetrahedral"),
-    (:truncatedcube, "truncatedcube"),
-    (:truncatedtetrahedron, "truncatedtetrahedron"),
-    (:truncatedtetrahedron_dir, "truncatedtetrahedron"),
-    (:tutte, "tutte"))
-
-colors = ["paleturquoise", "chartreuse", "thistle1", "pink",
-"gold", "wheat", "olivedrab1", "palegreen", "turquoise1",
-"lightgreen", "plum1", "plum", "violet", "hotpink"]
-
-smallgraphs = @drawsvg begin
-    background("grey10")
-    sethue("orange")
-    ng = length(smallgraphs)
-    N = convert(Int, ceil(sqrt(ng)))
-    tiles = Tiler(800, 800, N, N)
-    setline(0.5)
-    for (pos, n) in tiles
-        @layer begin
-            n > ng && break
-            translate(pos)
-            sethue(colors[mod1(n, end)])
-            bbox = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))
-            g = smallgraph(first(smallgraphs[n]))
-            drawgraph(g, boundingbox = bbox, vertexshapesizes = 2, layout = stress)
-            sethue("cyan")
-            text(string(last(smallgraphs[n])), halign = :center, boxbottomcenter(bbox))
-        end
-    end
-end 800 800
Example block output

It's easy to find out more about these well-known graphs online, such as on the wikipedia. Some of the graphs in this figure would benefit from individual ‘tuning’ of the various layout parameters.

Here's a larger view of the Petersen graph (named after Danish mathematician Julius Petersen, who first described it in 1898).

@drawsvg begin
-    background("grey10")
-    pg = smallgraph(:petersen)
-    sethue("orange")
-    drawgraph(pg, vertexlabels = 1:nv(pg), layout = Shell(nlist=[6:10,]))
-end 600 300
Example block output

Here's a cubical graph:

@drawsvg begin
-    background("grey10")
-    g = smallgraph(:cubical)
-    sethue("orange")
-    drawgraph(g, layout = spring)
-end 600 300

Getting some information about the graph

There are lots of functions for obtaining information about a graph.

How many vertices?

julia> pg = smallgraph(:petersen)
-julia> nv(pg)
-10

How many edges?

julia> ne(pg)
-15

Which vertices are connected with vertex 1? - ie what are the neighbors of a particular vertex?

julia> neighbors(pg, 1)
-5-element Vector{Int64}:
- 2
- 5
- 6

We can iterate over vertices and edges. To step through each vertex, use the vertices iterator function:

for e in vertices(pg)
-    println(e)
-end
-
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10

Iterating over edges with the edges iterator function will give a value of type Edge. The src() and and dst() functions applied to an edge argument return the numbers of the source and destination vertices respectively.

for e in edges(pg)
-    println(src(e), " => ", dst(e))
-end
-
-1 => 2
-1 => 5
-1 => 6
-2 => 3
-2 => 7
-3 => 4
-3 => 8
-4 => 5
-4 => 9
-5 => 10
-6 => 8
-6 => 9
-7 => 9
-7 => 10
-8 => 10

To add a vertex:

pg1 = smallgraph(:petersen)
-add_vertex!(pg1) # returns true if successful

To add an edge:

add_edge!(pg1, 10, 11) # join 10 to 11

It's sometimes useful to be able to see these relationships between neighbors visually. This example looks for the neighbors of vertex 10 and draws them in thick red lines:

@drawsvg begin
-
-background("grey10")
-pg = smallgraph(:petersen)
-
-vertexofinterest = 10
-
-E = Int[]
-for (n, e) in enumerate(edges(pg))
-    if dst(e) == vertexofinterest || src(e) == vertexofinterest
-        push!(E, n)
-    end
-end
-
-edgewts = [dst(e) ∈ E ? 4 : 1 for e in edges(pg)]
-
-drawgraph(pg,
-    vertexlabels = 1:nv(pg),
-    layout = Shell(nlist=[6:10,]),
-    vertexfillcolors = (v) -> ((v == vertexofinterest) ||
-    v ∈ neighbors(pg, vertexofinterest)) && colorant"rebeccapurple",
-    vertexshapesizes = [v == vertexofinterest ? 20 : 10 for v in 1:nv(pg)],
-    edgestrokecolors = (e, f, t, s, d) -> (e ∈ E) ?
-        colorant"red" : colorant"thistle1",
-    edgestrokeweights = edgewts
-    )
-end 600 300
Example block output

Other useful functions include has_vertex(g, v) and has_edge(g, s, d).

Degree

The degree of a vertex is the number of edges that meet at that vertex. This is shown in the figure below both in the vertex labels and also color-coded:

@drawsvg begin
-background("grey10")
-sethue("gold")
-g = smallgraph(:krackhardtkite)
-
-drawgraph(g, layout=spring,
-    vertexfillcolors = (vtx) -> distinguishable_colors(nv(g), transform=tritanopic)[degree(g, vtx)],
-    vertexshapesizes = 20,
-    margin=40,
-    vertexlabels = (vtx) -> string(degree(g, vtx)),
-    vertexlabelfontsizes = 20,
-    vertexlabeltextcolors = [colorant"black", colorant"white"]
-    )
-end 600 300
Example block output

Graphs as matrices

Graphs can be represented as matrices - some say that graph theory is really the study of a particular set of matrices... We'll meet the adjacency matrix and the incidence matrix (and there's an array called the adjacency list too).

Adjacency matrix

A graph G with n vertices can be represented by a square matrix A with n rows and columns. The matrix consists of 1s and 0s. A value of 1 means that there's a connection between two vertices with those indices. For example, if vertex 5 is connected with vertex 4, then A[5, 4] contains 1. The adjacency_matrix() function displays the matrix for a graph:

julia> adjacency_matrix(pg)
-10×10 SparseArrays.SparseMatrixCSC{Int64, Int64} with 30 stored entries:
- ⋅  1  ⋅  ⋅  1  1  ⋅  ⋅  ⋅  ⋅
- 1  ⋅  1  ⋅  ⋅  ⋅  1  ⋅  ⋅  ⋅
- ⋅  1  ⋅  1  ⋅  ⋅  ⋅  1  ⋅  ⋅
- ⋅  ⋅  1  ⋅  1  ⋅  ⋅  ⋅  1  ⋅
- 1  ⋅  ⋅  1  ⋅  ⋅  ⋅  ⋅  ⋅  1
- 1  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  1  1  ⋅
- ⋅  1  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  1  1
- ⋅  ⋅  1  ⋅  ⋅  1  ⋅  ⋅  ⋅  1
- ⋅  ⋅  ⋅  1  ⋅  1  1  ⋅  ⋅  ⋅
- ⋅  ⋅  ⋅  ⋅  1  ⋅  1  1  ⋅  ⋅

(This one:)

@drawsvg begin
-background("grey10")
-pg = smallgraph(:petersen)
-sethue("orange")
-drawgraph(pg, vertexlabels = 1:nv(pg), layout = Shell(nlist=[6:10,]))
-end 600 400
Example block output

Notice that this matrix, for a Petersen graph, is symmetrical about the top-left/bottom-right diagonal, because, in an undirected graph, a connection from vertex 4 to vertex 5 is also a connection from vertex 5 to 4. The vertical sum of each column (and the horizontal sum of each row) is the number of edges shared by that vertex,

We can provide an adjacency matrix to the graph construction functions to create a graph. For example, this matrix recreates the House graph (aka smallgraph(:house)) from its adjacency matrix:

m = [0 1 1 0 0;
-     1 0 0 1 0;
-     1 0 0 1 1;
-     0 1 1 0 1;
-     0 0 1 1 0]
-
-@drawsvg begin
-    background("grey10")
-    hg = Graph(m)
-    sethue("palegreen")
-    drawgraph(hg, vertexlabels=1:nv(hg), layout=stress)
-end 800 400
Example block output

Incidence matrix

We can also represent a graph G with a matrix M consisting of 1s, -1s, and 0s, where the rows are vertices and the columns are edges. M is called an incidence matrix.

julia> incidence_matrix(pg)
-10×15 SparseArrays.SparseMatrixCSC{Int64, Int64} with 30 stored entries:
- 1  1  1  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅
- 1  ⋅  ⋅  1  1  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅
- ⋅  ⋅  ⋅  1  ⋅  1  1  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅
- ⋅  ⋅  ⋅  ⋅  ⋅  1  ⋅  1  1  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅
- ⋅  1  ⋅  ⋅  ⋅  ⋅  ⋅  1  ⋅  1  ⋅  ⋅  ⋅  ⋅  ⋅
- ⋅  ⋅  1  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  1  1  ⋅  ⋅  ⋅
- ⋅  ⋅  ⋅  ⋅  1  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  1  1  ⋅
- ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  1  ⋅  ⋅  ⋅  1  ⋅  ⋅  ⋅  1
- ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  1  ⋅  ⋅  1  1  ⋅  ⋅
- ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  ⋅  1  ⋅  ⋅  ⋅  1  1

The first column of this matrix is an edge between vertex 1 and vertex 2, whereas the first column of the adjacency matrix defines the vertices that are connected with vertex 1.

For a directed graph:

julia> dg = DiGraph(3, 3)
-
-julia> incidence_matrix(dg)
-
-3×3 SparseArrays.SparseMatrixCSC{Int64, Int64} with 6 stored entries:
- -1   1   1
-  1  -1   ⋅
-  ⋅   ⋅  -1

Here, negative values are used, so 1 and -1 are used to indicate directions. The first column,-1 1 0, specifies that the first edge goes from 2 to 1.

An incidence matrix is another useful way of quickly defining a graph. That's why we can pass an incidence matrix to the Graph() and DiGraph() functions to create new graphs.

For example, here's a familiar image:

g = [0 1 1;
-     1 0 1;
-     1 1 0]
-
-@drawsvg begin
-background("grey20")
-drawgraph(Graph(g),
-    layout = ngon(O + (0, 20), 80, 3, π/6, vertices=true),
-    vertexshapes = :circle,
-    vertexshapesizes = 40,
-    edgestrokeweights = 15,
-    edgestrokecolors = colorant"gold",
-    vertexfillcolors = [colorant"#CB3C33",
-        colorant"#389826", colorant"#9558B2"])
-end 600 250

Adjacency list

Another way of representing a graph is by using an array of arrays in the form of an adjacency list. This array has n elements to represent a graph with n vertices. The first element of the array is an array of those vertex numbers that are connected with vertex 1, and similarly for elements 2 to n.

For example, this adjacency list:

[
-    [2, 5, 7],  # row 1: vertex 1 connects with 2, 5, and 7
-    [1, 3, 9],
-    [2, 4, 11],
-    [3, 5, 13],
-    [1, 4, 15],
-    [7, 15, 20],
-    [1, 6, 8],
-    [7, 9, 16],
-    [2, 8, 10],
-    [9, 11, 17],
-    [3, 10, 12],
-    [11, 13, 18],
-    [4, 12, 14],
-    [13, 15, 19],
-    [5, 6, 14],
-    [8, 17, 20],
-    [10, 16, 18],
-    [12, 17, 19],
-    [14, 18, 20],
-    [6, 16, 19]
-]

defines a graph with 20 vertices, such that vertex 1 has edges joining it to vertices 2, 5, and 7, and so on for each element of the whole array.

The Graph() function accepts an adjacency list, preceded by the number of edges.

g = Graph(30, [
-    [2, 5, 7],
-    [1, 3, 9],
-    [2, 4, 11],
-    [3, 5, 13],
-    [1, 4, 15],
-    [7, 15, 20],
-    [1, 6, 8],
-    [7, 9, 16],
-    [2, 8, 10],
-    [9, 11, 17],
-    [3, 10, 12],
-    [11, 13, 18],
-    [4, 12, 14],
-    [13, 15, 19],
-    [5, 6, 14],
-    [8, 17, 20],
-    [10, 16, 18],
-    [12, 17, 19],
-    [14, 18, 20],
-    [6, 16, 19]])
-
-@drawsvg begin
-    background("grey10")
-    sethue("orange")
-    drawgraph(g, layout=stress)
-end 600 300
Example block output

Graphs.jl uses adjacency lists internally. If we peek inside a graph and look at its fields, we'll see something like this, for a Directed Graph:

fieldnames(DiGraph)
-(:ne, :fadjlist, :badjlist)

Here, fadjlist is a forward adjacency list which defines how each vertex connects to other vertices, and badjlist is a backward adjacency list which defines how each vertex receives connections from other vertices.

Paths, cycles, routes, and traversals

Graphs help us answer questions about connectivity and relationships. For example, think of a railway network as a graph, with the stations as vertices, and the tracks as edges. We want to ask questions such as "Can we get from A to B by train?", which therefore becomes the question "Are there sufficient edges between vertices in the graph such that we can find a continuous path that joins them?".

Graphs.jl has many features for traversing graphs and finding paths. We can look at just a few of them here.

Note

The study of graphs uses a lot of terminology, and many of the terms also have informal and familiar meanings. Usually the informal meanings are reasonably accurate and appropriate, but note that the words also have more precise definitions in the literature.

Paths and cycles

A path is a sequence of edges between some start vertex and some end vertex, such that a continuous unbroken route is available.

A cycle is a path where the start and end vertices are the same - a closed path. Other vertices in the path occur just once. These are also called circuits in some sources.

The cycle_basis() function finds all the cycles in a graph (at least, it finds a basis of an undirected graph, which is a minimal collection of cycles that can be added to make all the cycles). The result is an array of arrays of vertex numbers.

julia> pg = smallgraph(:petersen)
-julia> cycles = cycle_basis(pg)
-6-element Vector{Vector{Int64}}:
- [1, 6, 8, 10, 5]
- [4, 9, 6, 8, 10, 5]
- [7, 9, 6, 8, 10]
- [4, 3, 8, 10, 5]
- [1, 2, 3, 8, 10, 5]
- [7, 2, 3, 8, 10]
@drawsvg begin
-    background("grey10")
-    sethue("magenta")
-    pg = smallgraph(:petersen)
-
-    cycles = cycle_basis(pg)
-    table = Table(2, length(cycles) ÷ 2, 220, 160)
-
-    for (n, cycle) in enumerate(cycles)
-        cycleedges = [Edge(cycle[i], cycle[mod1(i + 1, end)]) for i in 1:length(cycle)]
-        @layer begin
-            translate(table[n])
-            bb = BoundingBox(box(O, table.colwidths[1], table.rowheights[1]))
-            sethue("grey60")
-            drawgraph(pg,
-                layout = stress,
-                vertexshapes = :none,
-                boundingbox = bb)
-            sethue(HSB(rescale(n, 1, length(cycles) + 1, 0, 360), 0.8, 0.6))
-            drawgraph(pg,
-                layout = stress,
-                boundingbox = bb,
-                vertexshapes = (v) -> begin
-                    v ∈ cycle && box(O, 12, 12, :fill)
-                end,
-                vertexshapesizes = 30,
-                vertexlabels = (v) -> v ∈ cycle && string(v),
-                edgestrokeweights = 5,
-                edgelist = cycleedges,
-            )
-        end
-    end
-end 600 300
Example block output

For digraphs, you can use simplecycles() to find every cycle.

This example shows every cycle of a complete digraph {4, 12}.

sdg = complete_digraph(4)
-
-cycles = simplecycles(sdg)
-
-@drawsvg begin
-    background("grey10")
-    sethue("orange")
-    tiles = Tiler(600, 600, 4, 4)
-    for (pos, n) in tiles
-        cycle = cycles[n]
-        cycle_path = [Edge(cycle[i], cycle[mod1(i + 1, end)]) for i in 1:length(cycle)]
-        @layer begin
-            translate(pos)
-            tilebox = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))
-            text(string(cycle), halign=:center, boxbottomcenter(tilebox))
-            sethue(HSV(rand(0:360), 0.6, 0.9))
-            drawgraph(sdg, layout=squaregrid,
-                boundingbox = tilebox,
-                edgelist = cycle_path,
-                vertexlabels = (v) -> v ∈ cycle ? string(v) : "",
-                vertexlabeltextcolors= colorant"white",
-                vertexlabeloffsetdistances = 10,
-                vertexlabeloffsetangles = [π, 0],
-                vertexshapes = :none,
-                edgelines = (edgenumber, edgesrc, edgedest, from, to) ->
-                    begin
-                        newpath()
-                        arc2sagitta(from, to, 5, :stroke)
-                    end)
-        end
-    end
-end 600 600
Example block output

There can be a lot of cycles in a graph. For example, a complete_digraph(10) has 1,110,073 cycles. Graphs.jl has tools for working with cycles efficiently.

Visiting every vertex once

It's useful to know how to visit every vertex just once.

You can do this for DiGraphs if you can find a cycle that's the same length as the graph. However, there might be a lot of possibilities, since there could be many such cycles. This example uses simplecycles() to find all of them (there are over 400 for this graph), so only the first one with the right length is used.

@drawsvg begin
-background("grey10")
-g = complete_digraph(6)
-
-tour = first(filter(cycle -> length(cycle) == nv(g), simplecycles(g)))
-
-vertexlist_to_edgelist(vlist) = [Edge(p[1] => p[2]) for p in zip(vlist, circshift(vlist, -1))]
-
-sethue("grey50")
-
-drawgraph(g, layout = spring)
-
-sethue("orange")
-drawgraph(g, layout = spring,
-    edgelist = vertexlist_to_edgelist(tour),
-    edgestrokeweights = 10,
-    )
-end 800 400
Example block output

Trees

A tree is a connected graph with no cycles. A rooted tree is a tree graph in which one vertex has been designated as the root, or origin. Rooted tree graphs can be drawn using the Buchheim layout algorithm (named after the developer, Christoph Buchheim).

In the next example, we start with a binary tree, in which each vertex is connected to no more than two others - but we'll add one more vertex so that it's no longer a binary tree.

Code for this figure

This code generates the figure below.

using Karnak, Graphs, NetworkLayout, Colors
-
-d = @drawsvg begin
-    background("grey10")
-    sethue("purple")
-    fontsize(12)
-
-    bt = binary_tree(4)
-    g = SimpleDiGraph(collect(edges(bt)))
-
-    # add another vertex
-    add_vertex!(g)
-    add_edge!(g, 7, 16)
-
-    drawgraph(g,
-        layout=buchheim,
-        margin=20,
-        edgestrokeweights=2,
-        edgegaps=12,
-        vertexlabels = 1:nv(g),
-        vertexshapes=:circle,
-        vertexfillcolors=[RGB(Karnak.Luxor.julia_red...),
-            RGB(Karnak.Luxor.julia_purple...),
-            RGB(Karnak.Luxor.julia_green...),
-            RGB(Karnak.Luxor.julia_blue...)],
-        vertexshapesizes=12,
-        vertexlabeltextcolors=colorant"white",
-    )
-end 600 350
Example block output

Shortest paths: the A* algorithm

One way to find the shortest path between two vertices is to use the a_star() function, and provide the graph, the start vertex, and the end vertex. The function returns a list of edges.

(The unusual name of this function is just a reference to the name of the algorithm, A*, first published in 1968 by Peter Hart, Nils Nilsson, and Bertram Raphael.)

The function finds the shortest path and returns an array of edges that define the path.

@drawsvg begin
-background("grey10")
-sethue("lemonchiffon")
-g = binary_tree(5)
-dirg = SimpleDiGraph(collect(edges(g)))
-astar = a_star(dirg, 1, 21)
-drawgraph(dirg, layout=buchheim,
-    vertexlabels = 1:nv(g),
-    vertexshapes = (vtx) -> box(O, 30, 20, :fill),
-    vertexlabelfontsizes = 16,
-    edgegaps=20,
-    edgestrokeweights= 5,
-    edgestrokecolors = (edgenumber, s, d, f, t) -> (s ∈ src.(astar) && d ∈ dst.(astar)) ?
-        colorant"gold" : colorant"grey40",
-    vertexfillcolors = (vtx) -> (vtx ∈ src.(astar) ||
-        vtx ∈ dst.(astar)) && colorant"gold"
-    )
-end 800 400
Example block output

One use for the A* algorithm is for finding paths through mazes. In the next example, a grid graph is subjected to some random vandalism, removing quite a few edges. Then a route through the maze was easily found by a_star().

using Random
-Random.seed!(6)
-
-@drawsvg begin
-background("grey10")
-
-W, H = 20, 20
-g = grid((W, H))
-
-# vandalize the grid:
-let
-    c = 0
-    while c < 200
-        v = rand(1:W*H)
-        rem_edge!(g, v, [v-1, v+1, v-W, v+H][rand(1:end)]) && (c += 1)
-    end
-end
-
-# find a route
-astar = a_star(g, 1, W * H)
-
-sethue("grey60")
-setlinecap("square")
-drawgraph(g,
-    vertexshapesizes = 0,
-    layout=squaregrid,
-    edgestrokeweights = 12)
-
-sethue("red")
-drawgraph(g,
-    vertexshapes = :none,
-    layout=squaregrid,
-    edgelist=astar,
-    edgegaps=0,
-    edgestrokeweights=5)
-
-end 600 600
Example block output

Shortest paths: Dijkstra's algorithm

A well-known algorithm for finding the shortest path between graph vertices is named for its creator, Edsger W. Dijkstra. He wrote about his inspiration:

"I designed it in about twenty minutes. One morning I was shopping in Amsterdam with my young fiancée, and tired, we sat down on the café terrace to drink a cup of coffee and I was just thinking about whether I could do this, and I then designed the algorithm for the shortest path.

In Graphs.jl, this algorithm is available with dijkstra_shortest_paths(). After running this function, the result is an object with various pieces of information about all the shortest paths: this is a DijkstraState object, with fields parents, dists, predecessors, pathcounts, closest_vertices. There's an enumerate_paths() function which can extract the vertex information for a specific path from the DijkstraState object.

The following code animates the results of examining a grid graph using Dijkstra's algorithm. The shortest paths between the first vertex and every other vertex are drawn in a series of frames, one by one.

function frame(scene, framenumber, g)
-    framenumber == 1 && return
-
-    # run Dijkstra's algorithm
-
-    ds = dijkstra_shortest_paths(g, 1, allpaths=true, trackvertices=true)
-
-    # for which destination vertex?
-    destv = framenumber
-
-    # get the vertices on the path
-    _, ep = enumerate_paths(ds, [1, destv])
-
-    # convert to edges
-    vlist = [Edge(p[1] => p[2]) for p in zip(ep, circshift(ep, -1))]
-
-    # draw background graph
-    background("grey10")
-    sethue("grey40")
-    drawgraph(g, layout=squaregrid, vertexshapes=:none)
-    path = Point[]
-
-    # draw shortest path
-    drawgraph(g,
-        layout=squaregrid,
-        vertexlabelfontsizes=30,
-        vertexshapes=:none,
-        edgelist = vlist[1:end-1],
-        edgefunction = (n, s, d, f, t) -> begin
-            push!(path, f)
-            push!(path, t)
-        end)
-    sethue("orange")
-    setline(10)
-    setlinejoin("bevel")
-    poly(path, :stroke, close=false)
-    sethue("red")
-    circle.(path[[1, end]], 10, :fill)
-end
-
-function main()
-    g = grid((20, 20))
-    amovie = Movie(600, 600, "dijkstra")
-    animate(amovie,
-        Scene(amovie, (s, f) -> frame(s, f, g), 1:400),
-        framerate=10)
-end
-
-main()

animated dijkstra

Weighted graphs

Up to now, our graphs have been like maps of train or metro networks, focusing on connections, rather than on, say, distances and journey times. Edges have been effectively always one unit long, and shortest path calculations can't take into account the true length of edges. But some systems modelled by graphs require this knowledge, which is where weighted graphs are useful.

A weighted graph, which can be either undirected or directed, has numeric values assigned to each edge. This value is called the "weight" of an edge, and it's usually a positive integer, but can be anything.

The word "weight" is interpreted according to context and the nature of the system modelled by the graph. For example, a higher value for the weight of an edge could mean a longer journey time or more expensive fuel costs, for map-style graphs, but it could signify high attraction levels for a social network graph.

To use weighted graphs, we must install a separate package, SimpleWeightedGraphs.jl, and load it alongside Graphs.jl.

To create a new weighted graph:

using Graphs, SimpleWeightedGraphs
-
-julia> g = SimpleWeightedGraph()

This creates a new, empty, weighted, undirected, graph. Or we can pass an existing graph to this function:

julia> wg = SimpleWeightedGraph(Graph(6, 15), 4.0)

To get the weights of the edge between two vertices, use get_weight():

julia> get_weight(wg, 1, 2)

To change the weight of the edge between two vertices, use add_edge():

julia> add_edge!(graph, from, to, weight)

You can provide a list of weights to the edgelabels keyword, which can accept a vector of edge weights.

g = SimpleWeightedGraph(3)
-add_edge!(g, 1, 2, 12)
-add_edge!(g, 1, 3, 13)
-add_edge!(g, 2, 3, 23)
-
-edgeweights = [g.weights[e.src, e.dst] for e in edges(g)]
-
-@drawsvg begin
-    background("black")
-    sethue("magenta")
-    fontsize(20)
-    drawgraph(
-        g,
-        vertexshapesizes = 15,
-        vertexlabels = 1:nv(g),
-        edgelabelfontsizes = 40,
-        edgelabels = edgeweights
-    )
-end
Example block output

In this next example, we set the default weight of every edge to 4.0 when the graph is created, and changed just one edge's weight:

wg = SimpleWeightedGraph(Graph(6, 15), 4.0)
-add_edge!(wg, 1, 2, 10_000_000)
-@drawsvg begin
-background("grey10")
-sethue("gold")
-drawgraph(wg, edgecurvature=10,
-    vertexlabels = 1:nv(wg),
-    edgelabels = (k, s, d, f, t) -> begin
-        weight = get_weight(wg, s, d)
-            if weight > 10
-                sethue("white")
-                box(midpoint(f, t), 30, 16, :fill)
-                setcolor("magenta")
-            else
-                sethue(HSB(rescale(k, 1, ne(wg), 0, 360), 0.7, 0.6))
-            end
-            text(string(weight), midpoint(f,t), halign=:center, valign=:middle)
-        end,
-    edgegaps = 10
-    )
-end 600 300
Example block output

A look at the graph's adjacency matrix shows that the weights have replaced the 1s:

julia> adjacency_matrix(wg)
-6×6 SparseArrays.SparseMatrixCSC{Float64, Int64} with 30 stored entries:
-  ⋅     1.0e7  4.0  4.0  4.0  4.0
- 1.0e7   ⋅     4.0  4.0  4.0  4.0
- 4.0    4.0     ⋅   4.0  4.0  4.0
- 4.0    4.0    4.0   ⋅   4.0  4.0
- 4.0    4.0    4.0  4.0   ⋅   4.0
- 4.0    4.0    4.0  4.0  4.0   ⋅

For a directed graph, each edge can have two weights, one from src to dst, the other from dst to src.

Spanning trees

A spanning tree is a set of edges that connect all the vertices of a graph together, without forming any cycles. There are various functions for finding spanning trees in Graphs.jl, including algorithms by Otakar Borůvka (boruvka_mst()), Joseph Kruskal (kruskal_mst()), and Robert Prim (prim_mst()). (Immortality can be attained by inventing a new graph-spanning algorithm.)

When used on a weighted graph, these functions find the minimum possible tree - the tree that scores the lowest when the weights of the edges are added up. (Some of these functions can also find the highest-scoring trees.)

@drawsvg begin
-background("grey10")
-
-g = SimpleWeightedGraph(smallgraph(:octahedral))
-
-for e in edges(g)
-    add_edge!(g, src(e), dst(e), rand(1:10))
-end
-add_edge!(g, 1, 4, 200)
-
-sethue("grey50")
-drawgraph(g, layout=spring, vertexshapesizes = 20, edgestrokeweights = 3,
-    edgelabels = (k, src, dest, f, t) ->
-    (sethue("cyan"); label(string(get_weight(g, src, dest)), :nw, midpoint(f, t))))
-
-mst, weights = boruvka_mst(g)
-sethue("gold")
-drawgraph(g, vertexshapes = :none, layout=spring, edgelist = mst, edgestrokeweights = 15)
-
-mst = kruskal_mst(g)
-sethue("green")
-drawgraph(g, layout=spring, vertexshapes = :none, edgelist = mst, edgestrokeweights = 10)
-
-mst = prim_mst(g)
-sethue("red")
-drawgraph(g, layout=spring, vertexshapes = :none, edgelist = mst, edgestrokeweights = 3)
-
-sethue("black")
-drawgraph(g, layout=spring, vertexlabels = 1:nv(g), edgelines=:none)
-
-end 600 400
Example block output

Notice how all the spanning trees found have avoided the edge joining 1 and 4, which has a weight of 200.0.

Next, here's boruka_mst() looking for the maximum spanning tree; Edge(1 => 4) is always included every time the function runs.

using Karnak, Luxor, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs
-
-@drawsvg begin
-    background("grey10")
-    tiles = Tiler(600, 600, 2, 2)
-    let
-        g = SimpleWeightedGraph(smallgraph(:octahedral))
-        for (pos, n) in tiles
-            for e in edges(g)
-                add_edge!(g, src(e), dst(e), rand(1:10))
-            end
-            add_edge!(g, 1, 4, 200)
-            @layer begin
-                translate(pos)
-                bb = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))
-                sethue("grey50")
-                mst, weights = boruvka_mst(g, minimize=false)
-                drawgraph(g,
-                    boundingbox=bb,
-                    layout=spring,
-                    vertexshapesizes=10,
-                    edgestrokeweights=3,
-                    edgelabels=(k, src, dest, f, t) -> begin
-                        sethue("orange")
-                        label(string(get_weight(g, src, dest)), :nw, midpoint(f, t))
-                        end,)
-
-                sethue("gold")
-                drawgraph(g,
-                    boundingbox=bb,
-                    layout=spring,
-                    vertexshapes=:none,
-                    edgelist=mst,
-                    edgestrokeweights=5,)
-
-                drawgraph(
-                    g,
-                    boundingbox=bb,
-                    layout=spring,
-                    vertexlabels=1:nv(g),
-                    vertexshapes=:circle,
-                    vertexshapesizes=7.5,
-                    edgegaps=0,
-                    edgelines=:none,)
-            end
-        end
-    end
-end 600 600

Centrality

Centrality is a measure of the importance of vertices in a graph. It might describe the importance of "influencers" in social networks, or the importance of certain key positions in a transport network. Graphs.jl offers a number of ways to measure the centrality of vertices in a graph. Refer to the manual's "Centrality Measures" section for details.

Here's betweenness_centrality() applied to the Karate Club network. The vertices are sized and colored using the vector of values returned in bc.

@drawsvg begin
-background("grey10")
-g = smallgraph(:karate)
-bc = betweenness_centrality(g)
-sethue("gold")
-drawgraph(g, layout = spring,
-    vertexlabels = string.(round.(100bc, digits = 1)),
-    vertexshapesizes = 15 .+ 30bc,
-    vertexfillcolors = HSB.(rescale.(bc, 0, maximum(bc), 150, 360), 0.7, 0.8),
-    )
-end 800 600
Example block output

Graph coloring

A simple graph coloring is a way of coloring the vertices of a graph so that no two adjacent vertices are the same color. The greedy_color() function finds a random graph coloring for a graph. The total number of colors, and an array of integers representing the colors, are returned in fields num_colors and colors (as integers between 1 and n).

In the following example, only three colors are needed such that no edge connects two vertices with the same color. Colors.jl has a distinguishable_colors() function that finds n colors which look sufficiently different:

@drawsvg begin
-    background("grey10")
-    g = smallgraph(:octahedral)
-    gc = greedy_color(g)
-    dcolors = distinguishable_colors(gc.num_colors)
-    sethue("gold")
-    drawgraph(g, layout=stress,
-        vertexfillcolors = dcolors[gc.colors],
-        vertexshapesizes = 30)
-end 800 400

Here gc.num_colors is 3. However, a complete graph might require many colors because there are so many connected vertices. For example, gc.num_colors is now 20:

@drawsvg begin
-    background("grey10")
-    g = complete_graph(20)
-    gc = greedy_color(g)
-    dcolors = distinguishable_colors(gc.num_colors)
-    sethue("grey50")
-    drawgraph(g, layout=stress,
-        vertexfillcolors = dcolors[gc.colors],
-        vertexshapesizes = 20)
-end 600 300
Example block output
diff --git a/dev/examples.html b/dev/examples.html new file mode 100644 index 0000000..e731df0 --- /dev/null +++ b/dev/examples.html @@ -0,0 +1,863 @@ + + + + + + Examples | Karnak.jl + + + + + + + + + + + + + + +
Skip to content

Examples

This chapter contains a few examples showing how to use drawgraph() to visualize a few graphs.

Julia type tree

This example tries to draw a type hierarchy diagram. The Buchheim layout algorithm can take a list of “vertex widths” that are normalized and then used to assign sufficient space for each label.

Code for this figure

This code generates the figure below:

julia
using Karnak, Graphs, NetworkLayout, InteractiveUtils
+
+add_numbered_vertex!(g) = add_vertex!(g)
+
+function build_type_tree(g, T, level=0)
+    add_numbered_vertex!(g)
+    push!(labels, T)
+    for t in subtypes(T)
+        if occursin(".",  string(t)) # only Base
+            continue
+        end
+        build_type_tree(g, t, level + 1)
+        add_edge!(g,
+            findfirst(isequal(T), labels),
+            findfirst(isequal(t), labels))
+    end
+end
+
+function manhattanline(pt1, pt2)
+    mp = midpoint(pt1, pt2)
+    poly([pt1,
+            Point(pt1.x, mp.y),
+            Point(pt1.x, mp.y),
+            Point(pt2.x, mp.y),
+            Point(pt2.x, mp.y),
+            Point(pt2.x, pt2.y),
+            pt2
+        ], :stroke)
+    circle(pt2, 1, :fill)
+end
+
+g = DiGraph()
+labels = []
+build_type_tree(g, Number)
+labels = map(string, labels)
+
+dg = @drawsvg begin
+    background("grey20")
+    fontsize(15)
+    fontface("JuliaMono-Bold")
+    setline(1)
+    sethue("gold")
+    nodesizes = Float64[]
+    for l in eachindex(labels)
+        tx = textextents(string(labels[l]))
+        labelwidth = tx[3]
+        push!(nodesizes, labelwidth)
+    end
+    drawgraph(g, margin=50,
+        layout=Buchheim(nodesize=nodesizes),
+        vertexfunction=(v, c) -> begin
+            w = nodesizes[v]
+            bbox  = BoundingBox(box(c[v], w/2, get_fontsize()))
+            # box
+            @layer begin
+                sethue("white")
+                box(bbox, 2, action=:fillpreserve)
+                sethue("gold")
+                strokepath()
+            end
+            #text
+            @layer begin
+                sethue("black")
+                textfit(labels[v], bbox)
+            end
+        end,
+        edgefunction=(n, s, d, f, t) -> manhattanline(f, t)
+    )
+end 1000 550

This graph could do with a bit more tweaking.

Julia source tree

This example takes a Julia expression and displays it as a tree.

julia
using Karnak, Graphs, NetworkLayout, Colors
+
+# shamelessly stolen from Professor David Sanders' Tree !
+
+add_numbered_vertex!(g) = (add_vertex!(g); top = nv(g))
+
+function walk_tree!(g, labels, ex, show_call = true)
+    top_vertex = add_numbered_vertex!(g)
+    where_start = 1  # which argument to start with
+    if !(show_call) && ex.head == :call
+        f = ex.args[1]   # the function name
+        push!(labels, f)
+        where_start = 2   # drop "call" from tree
+    else
+        push!(labels, ex.head)
+    end
+    for i in where_start:length(ex.args)
+        if isa(ex.args[i], Expr)
+            child = walk_tree!(g, labels, ex.args[i], show_call)
+            add_edge!(g, top_vertex, child)
+        else
+            n = add_numbered_vertex!(g)
+            add_edge!(g, top_vertex, n)
+            push!(labels, ex.args[i])
+        end
+    end
+    return top_vertex
+end
+
+function walk_tree(ex::Expr, show_call = false)
+    g = DiGraph()
+    labels = Any[]
+    walk_tree!(g, labels, ex, show_call)
+    return (g, labels)
+end
+
+# build graph and labels
+expression = :(2 + sin(30) * cos(15) / - log(-1.02^exp(-1)))
+
+g, labels = walk_tree(expression)
+
+@drawsvg begin
+    background("grey10")
+    sethue("gold")
+    drawgraph(g,
+        margin=60,
+            layout = buchheim,
+            vertexlabels = labels,
+            vertexshapes = :circle,
+            vertexshapesizes = 20,
+            edgefunction = (n, s, d, f, t) -> begin
+                move(f)
+                line(t)
+                strokepath()
+            end,
+            vertexlabelfontsizes = 15,
+            vertexlabelfontfaces = "JuliaMono-Bold", # probably won't be available for docs
+            vertexlabeltextcolors = colorant"black")
+    fontface("JuliaMono-Bold")
+    fontsize(15)
+    text(string(expression), boxbottomcenter() + (0, -20), halign=:center)
+end

LayeredLayouts.jl

LayeredLayouts is a package for working out how to layout graphs in a layered fashion: how to lay out directed acyclic graphs (DAGs), including trees, dependency graphs, and Sankey diagrams.

The package offers the Zarate algorithm (David Cheng Zarate). Positions are returned as x and y vectors, and should be converted to Points when passed to layout.

julia
using Graphs
+using LayeredLayouts
+using Karnak
+
+tree = SimpleDiGraph(Edge.(
+    [1 => 2, 2 => 3, 4 => 5, 4 => 6, 
+     4 => 7, 4 => 8, 4 => 9, 4 => 10, 
+     5 => 11, 5 => 12, 8 => 15, 8 => 16, 
+     8 => 17, 8 => 18, 8 => 19, 9 => 20, 
+     9 => 21, 10 => 22, 12 => 13, 13 => 14, 
+     23 => 4, 23 => 24, 23 => 25, 23 => 26, 
+     23 => 27, 23 => 28, 23 => 29, 23 => 30, 
+     23 => 31, 28 => 32, 28 => 33, 29 => 35, 
+     30 => 1, 30 => 38, 31 => 40, 33 => 34, 
+     35 => 36, 35 => 37, 38 => 39, 40 => 41, 41 => 42]))
+
+xs, ys, paths = solve_positions(Zarate(), tree)
+
+@draw begin
+    background("black")
+    sethue("gold")
+    drawgraph(tree, 
+        vertexlabels = 1:nv(tree),
+        edgestrokecolors = [Karnak.RGB(randomhue()...) for e in 1:ne(tree)],
+        layout= boxmiddleleft() .+ 
+            map(pt -> Point(90pt[1], 30pt[2]), zip(xs, ys))
+    )
+end 600 500

Simple dependency graph

You can draw a visual interpretation of a Julia package's dependencies easily enough by going through the TOML files.

Code for this figure

This code generates the figure below:

julia
using Karnak
+using Graphs
+using NetworkLayout
+using InteractiveUtils
+using Colors
+using TOML
+using Base: active_project
+
+# mostly stolen from PkgGraph.jl by tfiers!
+
+manifest(proj_path) = replace(proj_path, "Project.toml" => "Manifest.toml")
+
+if VERSION v"1.7"
+    packages_in(manifest) = TOML.parsefile(manifest)["deps"]
+else
+    packages_in(manifest) = TOML.parsefile(manifest)
+end
+
+packages_in_active_manifest() = packages_in(manifest(active_project()))
+
+function depgraph(pkgname)
+    rootpkg = string(pkgname)
+    packages = packages_in_active_manifest()
+    if rootpkg  keys(packages)
+        error("""
+        The given package ($pkgname) must be installed in the active project
+        (which is currently `$(active_project())`)""")
+    end
+    deps = Vector{Pair{String,String}}()
+    add_deps_of(name) = begin
+        pkg_info = only(packages[name])
+        direct_deps = get(pkg_info, "deps", [])
+        for dep in direct_deps
+            push!(deps, name => dep)
+            add_deps_of(dep)
+        end
+    end
+    add_deps_of(rootpkg)
+    return unique!(deps)
+end
+
+function build_depgraph(pkgname)
+    dgraphs = depgraph(pkgname)
+    pkglist = String[]
+    for (f, t) in dgraphs
+        if f  pkglist
+            push!(pkglist, f)
+        end
+        if t  pkglist
+            push!(pkglist, t)
+        end
+    end
+    g = DiGraph(length(pkglist))
+    for (f, t) in dgraphs
+        if f  pkglist && t  pkglist
+            add_edge!(g, findfirst(isequal(f), pkglist), findfirst(isequal(t), pkglist))
+        end
+    end
+    return g, pkglist
+end
+
+g, pkgnames = build_depgraph("DataFrames")
+
+d = @drawsvg begin
+    background("grey5")
+    sethue("gold")
+    fontsize(10)
+    fontface("Avenir-Black")
+    drawgraph(
+        g,
+        margin=40,
+        layout = Stress(iterations = 100),
+        edgegaps = 13,
+        edgestrokeweights = 3,
+        edgecurvature = 4,
+        edgestrokecolors = [HSB(360rand(), 0.7, 0.8) for i in 1:ne(g)],
+        vertexlabels = (vtx) -> begin
+            string(pkgnames[vtx])
+        end,
+        vertexshapes = (v) -> begin
+            tx = textextents(pkgnames[v])
+            @layer begin
+                setopacity(0.8)
+                sethue("grey80")
+                box(O, 1.2tx[5], 1.5tx[4], 5, :fill)
+            end
+        end,
+    )
+end 800 700

There's an extended investigation of package dependencies later in this section.

The London Tube

One real-world example of a small network is the London Underground, known as “the Tube”. The 250 or so stations in the network can be modelled using a simple graph.

Setup

If you want to follow along, this is the setup required. The CSV file examples/tubedata-modified.csv contains the station names, latitude and longitudes, and connectivity details.

julia
using Karnak, Graphs, NetworkLayout, Colors
+using DataFrames, CSV
+
+# positions are in LatLong
+
+tubedata = CSV.File("examples/tubedata-modified.csv") |> DataFrame
+
+amatrix = Matrix(tubedata[:, 4:270])
+
+extrema_lat = extrema(tubedata.Latitude)
+extrema_long = extrema(tubedata.Longitude)
+
+# scale LatLong and flip in y to fit into current drawing
+
+positions = @. Point(
+    rescale(tubedata.Longitude, extrema_long..., -280, 280),
+    rescale(tubedata.Latitude, extrema_lat..., 280, -280))
+
+stations = tubedata[!,:Station]
+
+find(str) = findfirst(isequal(str), stations)
+find(x::Int64) = stations[x]
+
+g = Graph(amatrix)

The tube “map” is stored in g, as a {267, 308} undirected simple Int64 graph.

The find() functions are just a quick way to convert between station names and ID numbers:

@example
find("Waterloo")
@example
find(244)

Not a map

Most London residents and visitors are used to seeing the famous Tube Map:

It’s a design classic, hand-drawn by Harry Beck in 1931, and updated regularly ever since. As an electrical engineer, Beck represented the sprawling London track network as a tidy circuit board. For Beck, the important thing about the map was to show the connections, rather than the accurate geography.

Our version looks very different, but it is at least geographically more accurate, because the latitude and longitude values of the stations are passed to layout.

@example
@drawsvg begin
+background("grey10")
+sethue("grey50")
+drawgraph(g,
+    layout = positions,
+    vertexshapes = :none,
+    vertexlabeltextcolors = colorant"white",
+    vertexlabels = find.(1:nv(g)),
+    vertexlabelfontsizes = 6)
+end

The layout algorithms - layout = spring and layout = stress - do a reasonable job, but people like to see north at the top of maps, and south at the bottom, not mixed up in any direction, like these.

@example
@drawsvg begin
+background("grey20")
+tiles = Tiler(800, 400, 1, 2)
+sethue("white")
+
+@layer begin
+    translate(first(tiles[1]))
+    drawgraph(g,
+        layout=spring,
+        boundingbox = BoundingBox(box(O, 400, 400)),
+        vertexshapes = :none,
+        vertexlabeltextcolors = colorant"white",
+        vertexlabels = find.(1:nv(g)),
+        vertexlabelfontsizes = 6
+        )
+end
+
+@layer begin
+    translate(first(tiles[2]))
+    drawgraph(g,
+        layout=stress,
+        boundingbox = BoundingBox(box(O, 400, 400)),
+        vertexshapes = :none,
+        vertexlabeltextcolors = colorant"white",
+        vertexlabels = find.(vertices(g)),
+        vertexlabelfontsizes = 6
+        )
+end
+
+end 800 400

Train terminates here

Use the degree() function to show just the station names at the end of a line: a vertex with a degree of 1 is a terminus:

@example
@drawsvg begin
+background("grey90")
+sethue("black")
+drawgraph(g, layout=positions,
+    vertexshapesizes = 2,
+    vertexlabels = [(degree(g, n) == 1) ? find(n) : ""
+        for n in vertices(g)],
+    vertexlabeltextcolors = colorant"blue"
+    )
+end

These labels show names familiar to all Tube-riders - the ones shown on the front of trains and on platform indicators. (It's unusual to visit them all, unless you're like Geoff Marshall, who holds the world record for the fastest time visiting every Tube station.)

Neighbors

The best connected station is also one of the oldest, dating back to 1863:

@example
find(argmax(degree(g, 1:nv(g))))

Its neighbors are:

@example
find.(neighbors(g, find("Baker Street")))

Centrality

Using Graphs.jl's tools for measuring centrality, Baker Street is again at the top of the list, but Green Park (the Queen's nearest tube station), scores highly, despite not being in the top 20 busiest stations.

@example
@drawsvg begin
+background("grey10")
+translate(0, -200)
+scale(3)
+bc = betweenness_centrality(g)
+sethue("gold")
+_, maxbc = extrema(bc)
+drawgraph(g, layout = positions,
+    vertexlabels = (vtx) -> bc[vtx] > maxbc * 0.6 && string(find(vtx)),
+    vertexlabeltextcolors = colorant"cyan",
+    vertexlabelfontsizes = 6,
+    vertexshapesizes = 1 .+ 10bc,
+    vertexfillcolors = HSB.(rescale.(bc, 0, maximum(bc), 0, 300), 0.7, 0.8),
+    )
+end 800 600

Mornington Crescent

A route from Heathrow Terminal 5 to Mornington Crescent can be found using a_star().

@example
heathrow_to_morningtoncrescent = a_star(g,
+    find("Heathrow Terminal 5"),
+    find("Mornington Crescent"))
+
+@drawsvg begin
+background("grey70")
+translate(0, -100)
+scale(3)
+
+sethue("grey50")
+drawgraph(g,
+    layout = positions,
+    vertexshapesizes = 1)
+
+sethue("black")
+fontsize(4)
+drawgraph(g,
+    layout = positions,
+    vertexshapes = :none,
+    edgelist = heathrow_to_morningtoncrescent,
+    edgestrokeweights = 3,
+    vertexlabels = (vtx) -> begin
+        if vtx ∈ src.(heathrow_to_morningtoncrescent) ||
+           vtx ∈ dst.(heathrow_to_morningtoncrescent)
+             circle(positions[vtx], 2, :fill)
+             label(find(vtx), :e, positions[vtx])
+        end
+    end)
+end

The route found by a_star is:

@example
[find(dst(e)) for e in heathrow_to_morningtoncrescent]

Information about the required changes - at Victoria from the Piccadilly line to the Victoria Line, and at Warren Street from the Victoria Line to the Northern Line - is not part of the graph. Routes across the Tube network, like the trains, follow the tracks (edges). The concept of “lines” (Victoria, Circle, etc) isn’t part of the graph structure, but a colorful layer imposed on top of the track network.

Pandemic

Graphs.jl provides many functions for analysing graph networks. The diffusion() function appears to simulate the diffusion of an infection from some starting vertices and the probability of spreading.

The function returns an array of arrays, where each one contains the vertex numbers of newly "infected" vertices. For example, in this result:

julia
[[1], Int64[], [22, 15, 25], ...]

the first stage showed vertex 1 "infected"; stage two was free of incident; but on stage 3 vertices 22, 15, and 25 have become "infected".

So here, apparently, is a simulation of what might happen when an infection arrives at Heathrow Airport's Terminal 5 tube station, and starts spreading through the tube network.

julia
function frame(scene, framenumber, diffresult)
+    background("black")
+    sethue("gold")
+    text(string(framenumber), boxbottomleft() + (10, -10))
+    drawgraph(g, layout = positions, vertexshapesizes = 3)
+    for k in 1:framenumber
+        i = diffresult[k]
+        drawgraph(
+            g,
+            layout = positions,
+            edgelines = 0,
+            vertexfunction = (v, c) -> begin
+                if !isempty(i)
+                    if v  i
+                        sethue("red")
+                        circle(positions[v], 5, :fill)
+                    end
+                end
+            end,
+        )
+    end
+end
+
+function main()
+    amovie = Movie(600, 600, "diff")
+    diffresult = diffusion(g, 0.2, 200, initial_infections=[find("Heathrow Terminal 5")])
+    animate(amovie,
+        Scene(amovie, (s, f) -> frame(s, f, diffresult), 1:length(diffresult)),
+        framerate=10,
+        creategif=true,
+        pathname="/tmp/diff.gif")
+end
+main()

The current logo for the Graphs.jl package was easily drawn using Karnak.

I wanted to use the graph coloring feature (greedy_color()), but unfortunately it was too clever, managing to color the graph using only two colors instead of the four I was hoping to use.

julia
using Graphs
+using Karnak
+using Colors
+
+function lighten(col::Colorant, f)
+    c = convert(RGB, col)
+    return RGB(f * c.r, f * c.g, f * c.b)
+end
+
+function julia_sphere(pt::Point, w, col::Colorant;
+        action = :none)
+    setmesh(mesh(
+        makebezierpath(box(pt, w * 1.5, w * 1.5)),
+        [lighten(col, .5),
+         lighten(col, 1.75),
+         lighten(col, 1.25),
+         lighten(col, .6)]))
+    circle(pt, w, action)
+end
+
+function draw_edge(pt1, pt2)
+    for k in 0:0.1:1
+        setline(rescale(k, 0, 1, 25, 1))
+        sethue(lighten(colorant"grey50", rescale(k, 0, 1, 0.5, 1.5)))
+        setopacity(rescale(k, 0, 1, 0.5, 0.75))
+        line(pt1, pt2, :stroke)
+    end
+end
+
+# positions for vertices
+
+outerpts = ngonside(O, 450, 4, π/4, vertices=true)
+innerpts = ngonside(O, 150, 4, π/2, vertices=true)
+pts = vcat(outerpts, innerpts)
+
+colors = map(c -> RGB(c...),
+    [Karnak.Luxor.julia_blue, Karnak.Luxor.julia_red, Karnak.Luxor.julia_green, Karnak.Luxor.julia_purple])
+
+@drawsvg begin
+    squircle(O, 294, 294, :clip, rt=0.2)
+    sethue("black")
+    paint()
+    g = SimpleGraph([
+        Edge(1,2), Edge(2,3), Edge(3,4), Edge(1,4),
+        Edge(5,6), Edge(6,7), Edge(7,8), Edge(5,8),
+        Edge(1,5), Edge(2,6), Edge(3,7), Edge(4,8),
+        ])
+
+    drawgraph(Graph(g),
+        layout=pts,
+        vertexfunction = (v, c) -> begin
+            d = distance(O, c[v])
+            d > 200 ? k = 0 : k = 1
+            julia_sphere(c[v],
+                 rescale(d, 0, 200, 52, 50), colors[mod1(v + k, 4)],
+                action=:fill)
+        end,
+        edgefunction = (k, s, d, f, t) -> draw_edge(f, t)
+        )
+end

Julia Package Dependencies

This example was originally developed by Mathieu Besançon and presented as part of the workshop: Analyzing Graphs at Scale, at JuliaCon 2020. You can watch the video on YouTube.

The most important changes since the video was made are:

  • the renaming of LightGraphs.jl to Graphs.jl

  • the way to access the list of packages has changed

The code builds a dependency graph of the connections (ie which package depends on which package) for Julia packages in the General registry.

Then it's possible draw some pictures, such as this chonky SVG file showing the dependencies for the Colors.jl package:

Or this one, which attempts to highlight just the more connected packages in the Colors.jl dependency graph:

Setup:

julia
using Graphs
+using MetaGraphs
+using TOML
+using Karnak
+using Colors

Finding the general registry

On my computer, the registry is in its default location. You might need to modify these lines if yours is is another location:

julia
path_to_general = expanduser("~/.julia/registries/General")
+registry_file = Pkg.TOML.parsefile(joinpath(path_to_general, "Registry.toml"))
+packages_info = registry_file["packages"];

First we need the name and location of every package:

julia
# Julia <= v1.6
+pkg_paths = map(values(packages_info)) do d
+    (name = d["name"], path = d["path"])
+end
julia
# Julia >= v1.7
+pkg_paths = map(values(Pkg.Registry.reachable_registries()[1].pkgs)) do d
+    (name = d.name, path = d.path)
+end

The result in pkg_paths is a vector of tuples, containing the name and location of every package:

julia
7495-element Vector{NamedTuple{(:name, :path), Tuple{String, String}}}:
+ (name = "COSMA_jll", path = "C/COSMA_jll")
+ (name = "CitableImage", path = "C/CitableImage")
+ (name = "Trixi2Img", path = "T/Trixi2Img")
+ (name = "ImPlot", path = "I/ImPlot")

Find packages that depend on a specific package

The function find_direct_deps() finds all the packages (names and locations) that directly depend on a specific named package.

julia
function find_direct_deps(registry_path, pkg_paths, source)
+    filter(pkg_paths) do pkg_path
+        deps_file = joinpath(registry_path, pkg_path.path, "Deps.toml")
+        # some packages don't have Deps.toml file
+        isfile(deps_file) && begin
+            deps_struct = Pkg.TOML.parsefile(deps_file)
+            any(values(deps_struct)) do d
+                source in keys(d)
+            end
+        end
+    end
+end

We can now find out how many packages depend on a particular package. For example, how many packages depend on Colors.jl (my favourite)?

julia
find_direct_deps(path_to_general, pkg_paths, "Colors")

giving this result:

julia
227-element Vector{NamedTuple{(:name, :path), Tuple{String, String}}}:
+ (name = "TopologyPreprocessing", path = "T/TopologyPreprocessing")
+ (name = "DynamicGrids", path = "D/DynamicGrids")
+ (name = "SimpleSDMLayers", path = "S/SimpleSDMLayers")
+ (name = "UnderwaterAcoustics", path = "U/UnderwaterAcoustics")
+ (name = "ColorSchemeTools", path = "C/ColorSchemeTools")
+ (name = "PrincipalMomentAnalysisApp", path = "P/PrincipalMomentAnalysisApp")
+
+ (name = "SoilWater_ToolBox", path = "S/SoilWater_ToolBox")
+ (name = "Starlight", path = "S/Starlight")
+ (name = "Dojo", path = "D/Dojo")
+ (name = "OpticSim", path = "O/OpticSim")
+ (name = "LVServer", path = "L/LVServer")

Colors.jl has 227 packages that depend on it. When Mathieu ran this code in 2020 on "LightGraphs", the vector had 92 elements. Today, in 2022, for "Graphs", the vector has 115 elements.

Build a directed tree

The next function, build_tree(), will build a directed graph of the dependencies on Colors.jl. Starting at the root package (Colors) the loop finds all its dependencies, then finds the dependencies of all of those dependent packages, and continues doing this until it reaches packages that have no dependencies. These are the "leaves" at the tip of the tree's branches.

julia
function build_tree(registry_path, pkg_paths, root)
+    g = MetaDiGraph()
+    add_vertex!(g)
+    set_prop!(g, 1, :name, root)
+    i = 1
+    explored_nodes = Set{String}((root,))
+    while true
+        i % 50 == 0 && print(i, " ")
+        current_node = get_prop(g, i, :name)
+        direct_deps = find_direct_deps(registry_path, pkg_paths, current_node)
+        filter!(d -> d.name  explored_nodes, direct_deps)
+        if isempty(direct_deps) && i >= nv(g)
+           break
+        end
+        for ddep in direct_deps
+           push!(explored_nodes, ddep.name)
+           add_vertex!(g)
+           set_prop!(g, nv(g), :name, ddep.name)
+           add_edge!(g, i, nv(g))
+        end
+        i += 1
+    end
+    return g
+end

Note

This function takes some time to run - about 8 minutes for about 1400 iterations on my computer.

julia
g = build_tree(path_to_general, pkg_paths, "Colors")
+
+{1375, 1374} directed Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)

Notice that there are 1375 nodes, but one less edge. The Colors.jl package is the root of the tree, and doesn't connect to anything else, in this analysis.) Of course, it depends on quite a few, but that's another graph story.)

The result is a directed metagraph. In a metagraph, as implemented by MetaGraphs.jl, it's possible to add information to vertices using set_prop() and get_prop().

To find all the package names in the graph that are directly connected to Colors.jl, we can broadcast get_prop() like this:

julia
get_prop.(Ref(g), outneighbors(g, 1), :name)
+
+227-element Vector{String}:
+ "SqState"
+ "InteractBase"
+ "ImageMetadata"
+ "PlantGeom"
+ "MicrobiomePlots"
+ "MeshViz"
+ "SGtSNEpi"
+ "ColorSchemes"
+ "CairoMakie"
+
+ "GenomicMaps"
+ "ModiaPlot"
+ "Thebes"
+ "ConstrainedDynamics"
+ "AutomotiveVisualization"
+ "Flux"

outneighbors returns a list of all neighbors connected to vertex v by an outgoing edge.

Shortest paths and lengths of branches

The dijkstra_shortest_paths() function finds the paths between the designated package and all its dependencies.

The returned value is a DijkstraState object, with fields parents, dists, predecessors, pathcounts, and closest_vertices.

Looking at the dists (distances), we see that one package is very close indeed at 0.0 - that's Colors.jl itself.

julia
spath_result = dijkstra_shortest_paths(g, 1)
+
+spath_result.dists
+
+1375-element Vector{Float64}:
+ 0.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+ 5.0
+ 5.0
+ 5.0
+ 6.0
+ 6.0
+ 6.0
+ 6.0
+ 6.0
+ 6.0
+ 7.0
+ 7.0

Or in a barchart:

julia
scores = [count(==(i), spath_result.dists) for i in unique(spath_result.dists)]

The "furthest" packages from Colors.jl - the two seven steps away - are:

julia
for idx in eachindex(spath_result.dists)
+    if spath_result.dists[idx] == 7
+         println(get_prop(g, idx, :name))
+    end
+end
+
+QuantumESPRESSOExpress
+Recommenders

Computing a full subgraph

All the package names are obtained with:

julia
all_packages = get_prop.(Ref(g), vertices(g), :name)
+
+Vector{String}:
+ "Colors"
+ "TopologyPreprocessing"
+ "DynamicGrids"
+ "SimpleSDMLayers"
+ "UnderwaterAcoustics"
+ "ColorSchemeTools"
+
+ "ReservoirComputing"
+ "TreeParzen"
+ "GeoStatsImages"
+ "StoppingInterface"
+ "QuantumESPRESSO"
+ "Recommenders"
+ "QuantumESPRESSOExpress"

These next commands build a metagraph, using the package names:

julia
full_graph = MetaDiGraph(length(all_packages))
+
+{1375, 0} directed Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)

Assigning names to the vertices:

julia
for v in vertices(full_graph)
+    set_prop!(full_graph, v, :name, all_packages[v])
+end

Build the full graph:

julia
for v in vertices(full_graph)
+    pkg_name = get_prop(full_graph, v, :name)
+    dependent_packages = find_direct_deps(path_to_general, pkg_paths, pkg_name)
+    for dep_pkg in dependent_packages
+        pkg_idx = findfirst(==(dep_pkg.name), all_packages)
+        # only packages in graph
+        if pkg_idx !== nothing
+            add_edge!(full_graph, pkg_idx, v)
+        end
+    end
+end

It's useful to be able to save and load this graph:

julia
# using Graphs, MetaGraphs
+# save:
+savegraph("examples/full_graph.lg", full_graph))
+
+# load:
+full_graph = loadgraph("examples/full_graph.lg", MGFormat())

All roads lead to home

The code in this next example draws the vertices as an impressionistic point cloud, and uses the a_star() function to find a path from some random package back to Colors.jl.

julia
@drawsvg begin
+    background("black")
+    sethue("white")
+    fontface("BarlowCondensed-Bold")
+    random_package = rand(1:nv(full_graph))
+    astar = a_star(full_graph, random_package, 1)
+    astar_vertices = sort(unique(vcat([src(e) for e in astar], [dst(e) for e in astar])), rev=true)
+    drawgraph(g,
+        edgelist=astar,
+        layout=spring,
+        vertexlabels = (v) -> v  astar_vertices[[begin, end]] && get_prop(full_graph, v, :name),
+        vertexlabeltextcolors = colorant"white",
+        vertexlabelfontsizes = 20,
+        vertexlabelfontfaces = "BarlowCondensed-Bold",
+        vertexshapesizes = .5,
+        vertexstrokecolors = :none)
+    textfit(string(join(get_prop.(Ref(full_graph), astar_vertices, :name), " > ")),
+        BoundingBox(box(boxbottomcenter() + (0, -30), 600, 50)))
+end 800 800

Pagerank

This code computes the pagerank of the graph. It returns a long list of numbers, the centrality score for each vertex.

julia
ranks = pagerank(full_graph)
+
+1375-element Vector{Float64}:
+ 0.15339826572024867
+ 0.00020384989099126913
+ 0.00043081071431843264
+ 0.0002471787754446367
+ 0.0005504809666182096
+ 0.00020384989099126913
+ 0.00020384989099126913
+ 0.00034105802509359976
+ 0.0012284800170342895
+
+ 0.00020384989099126913
+ 0.00020384989099126913
+ 0.00042629607921470863
+ 0.00020384989099126913
+ 0.0002616217369290926
julia
@drawsvg begin
+    background("black")
+    sethue("white")
+    fontface("BarlowCondensed-Bold")
+    ranks = pagerank(full_graph)
+    drawgraph(g,
+        edgelist = [],
+        layout=spring,
+        vertexshapes = :none,
+        vertexlabels = (v) -> ranks[v] > 0.001 && get_prop(full_graph, v, :name),
+        vertexlabelfontsizes = 500ranks,
+        vertexlabeltextcolors = colorant"white")
+end 800 800

The problem with this representation is one of overlapping labels. This isn't an issue we can fix easily in Karnak.

Highly ranked

With some sorting, we can find the highest ranked packages in this part of the ecosystem.

julia
sorted_indices = sort(eachindex(ranks), by=i->ranks[i], rev=true)
+
+1375-element Vector{Int64}:
+   1
+ 543
+ 137
+ 112
+ 144
+ 164
+
+ 259
+ 258
+ 729
+ 730
+ 688
julia
get_prop.(Ref(full_graph), sorted_indices, :name)
+
+1375-element Vector{String}:
+ "Colors"
+ "Plots"
+ "ImageCore"
+ "PlotUtils"
+ "ColorSchemes"
+ "ColorVectorSpace"
+
+ "TopOptMakie"
+ "VTKDataIO"
+ "EFTfitter"
+ "SpmGrids"
+ "ElectronTests"

Most dependencies, most depended on

indegree() returns the number of edges which end at a vertex. For a package, this is another way of seeing how many other packages depend on it.

julia
in_sorted_indices = sort(vertices(full_graph),
+    by = i -> indegree(full_graph, i), rev = true)
+
+1375-element Vector{Int64}:
+ 543
+   1
+  65
+  98
+ 133
+ 137
+
+ 287
+ 743
+ 744
+ 285
+ 688
julia
get_prop.(Ref(full_graph), in_sorted_indices, :name)
+
+1375-element Vector{String}:
+ "Plots"
+ "Colors"
+ "Flux"
+ "Images"
+ "PyPlot"
+ "ImageCore"
+
+ "PolaronMobility"
+ "CineFiles"
+ "MadNLPGraph"
+ "MicroscopyLabels"
+ "ElectronTests"

outdegree() finds the number of edges which start at a vertex.

julia
out_sorted_indices = sort(vertices(full_graph),
+    by = i -> outdegree(full_graph, i), rev=true)
+
+1375-element Vector{Int64}:
+ 372
+  98
+  35
+  24
+ 300
+ 153
+
+ 776
+ 777
+ 778
+ 779
+   1
julia
get_prop.(Ref(full_graph), out_sorted_indices, :name)
+
+1375-element Vector{String}:
+ "StatisticalRethinking"
+ "Images"
+ "Makie"
+ "MakieGallery"
+ "PredictMDExtra"
+ "GLMakie"
+
+ "MimiPAGE2020"
+ "MimiSNEASY"
+ "OptiMimi"
+ "SyntheticNetworks"
+ "Colors"
julia
ranks_betweenness = betweenness_centrality(full_graph)
+
+1375-element Vector{Float64}:
+ 0.0
+ 0.0
+ 3.1186467511475384e-5
+ 5.300816007616213e-7
+ 5.830897608377834e-5
+ 0.0
+
+ 0.0
+ 0.0
+ 4.24065280609297e-6
+ 0.0
+ 1.0601632015232426e-6
julia
sorted_indices_betweenness = sort(vertices(full_graph),
+    by = i -> ranks_betweenness[i], rev=true)
+
+1375-element Vector{Int64}:
+ 144
+  98
+ 112
+ 543
+ 461
+  35
+
+ 562
+ 563
+ 564
+ 565
+   1
julia
get_prop.(Ref(full_graph), sorted_indices_betweenness, :name)
+
+1375-element Vector{String}:
+ "ColorSchemes"
+ "Images"
+ "PlotUtils"
+ "Plots"
+ "ImageIO"
+ "Makie"
+
+ "BridgeDiffEq"
+ "BridgeLandmarks"
+ "FCA"
+ "BEASTDataPrep"
+ "Colors"

Is_cyclic

is_cyclic() returns true if the graph contains a cycle.

julia
is_cyclic(full_graph)
+
+true
+
+for cycle in simplecycles(full_graph)
+    names = get_prop.(Ref(full_graph), cycle, :name)
+    @info names
+end
+
+["ImageCore", "MosaicViews"]
+["Images", "ImageSegmentation"]
+["Makie", "GLMakie"]
+["POMDPPolicies", "BeliefUpdaters", "POMDPModels", "POMDPSimulators"]
+["BeliefUpdaters", "POMDPModels"]
+["BeliefUpdaters", "POMDPModels", "POMDPSimulators"]
+["ReinforcementLearning", "ReinforcementLearningEnvironmentDiscrete"]
+["Modia3D", "Modia"]
+["RasterDataSources", "GeoData"]
+["DSGE", "StateSpaceRoutines"]

For that first cycle: ImageCore.jl's Project.toml file has MosaicViews.jl in its [deps] section, and MosaicViews.jl has ImageCore.jl in the [extras] section of its Project.toml file.

Draw some graphs

Visualizations of graphs are sometimes (often?) better at communicating vague ideas such as complexity and shape. But it's quite difficult to render graphs as rich as these to show the connections clearly while also showing all the labels such that they're easy to read.

The solution may be to print out these graph representations and stick them on a nearby wall, although, with Julia's General Registry changing every day, it would be out of date before the glue dries.

The images above were made with the following code.

julia
@pdf begin
+    background("black")
+    sethue("gold")
+    setline(0.3)
+    drawgraph(g,
+        layout = stress,
+        edgefunction = (k, s, d, f, t) -> begin
+            @layer begin
+                sl = slope(O, t)
+                sethue(HSVA(rescale(sl, 0, , 0, 360), 0.7, 0.7, .9))
+                line(f, t, :stroke)
+            end
+        end,
+        vertexfunction = (v, c) -> begin
+            @layer begin
+                t = get_prop(g, v, :name)
+                te = textextents(t)
+                setopacity(0.7)
+                sethue("grey10")
+                fontsize(3)
+                box(c[v], te[3]/2, te[4]/2, :fill)
+                setopacity(1)
+                sethue("white")
+                text(t, c[v], halign=:center, valign=:middle)
+            end
+        end)
+    @info " finish drawing"
+end 2500 2500 "/tmp/graph-dependencies-colors.pdf"
julia
using ColorSchemes
+
+@svg begin
+    background("black")
+    maxdeg = maximum(degree(full_graph))
+    drawgraph(full_graph,
+        layout = spring,
+        edgelines = 0,
+        vertexfunction = (v, c) -> begin
+            d = degree(full_graph, v)
+            @layer begin
+                sethue(get(ColorSchemes.darkrainbow, rescale(d, 1, maxdeg)))
+                circle(c[v], rescale(d, 1, 270, 2, 20), :fill)
+            end
+            if d > 20
+                fontsize(rescale(d, 1, maxdeg, 5, 20))
+                setcolor("white")
+                textoutlines(all_packages[v], c[v], halign=:center, valign=:bottom, :fill)
+                setline(rescale(d, 1, maxdeg, 0.25, 1))
+                sethue("black")
+                textoutlines(all_packages[v], c[v], halign=:center, valign=:bottom, :stroke)
+            end
+        end)
+end 1200 1200 "/tmp/graph-dependencies-2.svg"
+ + + + \ No newline at end of file diff --git a/dev/examples/08dae63e.svg b/dev/examples/08dae63e.svg deleted file mode 100644 index 654fbac..0000000 --- a/dev/examples/08dae63e.svg +++ /dev/null @@ -1,1280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/examples/4d712698.svg b/dev/examples/4d712698.svg deleted file mode 100644 index 81d9d77..0000000 --- a/dev/examples/4d712698.svg +++ /dev/null @@ -1,694 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/examples/52449c95.svg b/dev/examples/52449c95.svg deleted file mode 100644 index bf8e2f6..0000000 --- a/dev/examples/52449c95.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/examples/5d86db6e.svg b/dev/examples/5d86db6e.svg deleted file mode 100644 index 87e76d1..0000000 --- a/dev/examples/5d86db6e.svg +++ /dev/null @@ -1,952 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/examples/6cfd28ec.svg b/dev/examples/6cfd28ec.svg deleted file mode 100644 index 018295e..0000000 --- a/dev/examples/6cfd28ec.svg +++ /dev/null @@ -1,783 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/examples/6f860c5e.svg b/dev/examples/6f860c5e.svg deleted file mode 100644 index d722f1a..0000000 --- a/dev/examples/6f860c5e.svg +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/examples/b2b47ddd.svg b/dev/examples/b2b47ddd.svg deleted file mode 100644 index 7faa3a0..0000000 --- a/dev/examples/b2b47ddd.svg +++ /dev/null @@ -1,8147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/examples/c06110a2.svg b/dev/examples/c06110a2.svg deleted file mode 100644 index a1c0fa3..0000000 --- a/dev/examples/c06110a2.svg +++ /dev/null @@ -1,4169 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/examples/c87c8ee5.svg b/dev/examples/c87c8ee5.svg deleted file mode 100644 index 61e45ba..0000000 --- a/dev/examples/c87c8ee5.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/dev/examples/d42acecb.svg b/dev/examples/d42acecb.svg deleted file mode 100644 index 84521e8..0000000 --- a/dev/examples/d42acecb.svg +++ /dev/null @@ -1,589 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/examples/index.html b/dev/examples/index.html deleted file mode 100644 index 06bc933..0000000 --- a/dev/examples/index.html +++ /dev/null @@ -1,867 +0,0 @@ - -Examples · Karnak

Examples

This chapter contains a few examples showing how to use drawgraph() to visualize a few graphs.

Julia type tree

This example tries to draw a type hierarchy diagram. The Buchheim layout algorithm can take a list of “vertex widths” that are normalized and then used to assign sufficient space for each label.

Code for this figure

This code generates the figure below:

using Karnak, Graphs, NetworkLayout, InteractiveUtils
-
-add_numbered_vertex!(g) = add_vertex!(g)
-
-function build_type_tree(g, T, level=0)
-    add_numbered_vertex!(g)
-    push!(labels, T)
-    for t in subtypes(T)
-        if occursin(".",  string(t)) # only Base
-            continue
-        end
-        build_type_tree(g, t, level + 1)
-        add_edge!(g,
-            findfirst(isequal(T), labels),
-            findfirst(isequal(t), labels))
-    end
-end
-
-function manhattanline(pt1, pt2)
-    mp = midpoint(pt1, pt2)
-    poly([pt1,
-            Point(pt1.x, mp.y),
-            Point(pt1.x, mp.y),
-            Point(pt2.x, mp.y),
-            Point(pt2.x, mp.y),
-            Point(pt2.x, pt2.y),
-            pt2
-        ], :stroke)
-    circle(pt2, 1, :fill)
-end
-
-g = DiGraph()
-labels = []
-build_type_tree(g, Number)
-labels = map(string, labels)
-
-dg = @drawsvg begin
-    background("grey20")
-    fontsize(15)
-    fontface("JuliaMono-Bold")
-    setline(1)
-    sethue("gold")
-    nodesizes = Float64[]
-    for l in eachindex(labels)
-        tx = textextents(string(labels[l]))
-        labelwidth = tx[3]
-        push!(nodesizes, labelwidth)
-    end
-    drawgraph(g, margin=50,
-        layout=Buchheim(nodesize=nodesizes),
-        vertexfunction=(v, c) -> begin
-            w = nodesizes[v]
-            bbox  = BoundingBox(box(c[v], w/2, get_fontsize()))
-            # box
-            @layer begin
-                sethue("white")
-                box(bbox, 2, action=:fillpreserve)
-                sethue("gold")
-                strokepath()
-            end
-            #text
-            @layer begin
-                sethue("black")
-                textfit(labels[v], bbox)
-            end
-        end,
-        edgefunction=(n, s, d, f, t) -> manhattanline(f, t)
-    )
-end 1000 550
Example block output

This graph could do with a bit more tweaking.

Julia source tree

This example takes a Julia expression and displays it as a tree.

using Karnak, Graphs, NetworkLayout, Colors
-
-# shamelessly stolen from Professor David Sanders' Tree !
-
-add_numbered_vertex!(g) = (add_vertex!(g); top = nv(g))
-
-function walk_tree!(g, labels, ex, show_call = true)
-    top_vertex = add_numbered_vertex!(g)
-    where_start = 1  # which argument to start with
-    if !(show_call) && ex.head == :call
-        f = ex.args[1]   # the function name
-        push!(labels, f)
-        where_start = 2   # drop "call" from tree
-    else
-        push!(labels, ex.head)
-    end
-    for i in where_start:length(ex.args)
-        if isa(ex.args[i], Expr)
-            child = walk_tree!(g, labels, ex.args[i], show_call)
-            add_edge!(g, top_vertex, child)
-        else
-            n = add_numbered_vertex!(g)
-            add_edge!(g, top_vertex, n)
-            push!(labels, ex.args[i])
-        end
-    end
-    return top_vertex
-end
-
-function walk_tree(ex::Expr, show_call = false)
-    g = DiGraph()
-    labels = Any[]
-    walk_tree!(g, labels, ex, show_call)
-    return (g, labels)
-end
-
-# build graph and labels
-expression = :(2 + sin(30) * cos(15) / 2π - log(-1.02^exp(-1)))
-
-g, labels = walk_tree(expression)
-
-@drawsvg begin
-    background("grey10")
-    sethue("gold")
-    drawgraph(g,
-        margin=60,
-            layout = buchheim,
-            vertexlabels = labels,
-            vertexshapes = :circle,
-            vertexshapesizes = 20,
-            edgefunction = (n, s, d, f, t) -> begin
-                move(f)
-                line(t)
-                strokepath()
-            end,
-            vertexlabelfontsizes = 15,
-            vertexlabelfontfaces = "JuliaMono-Bold", # probably won't be available for docs
-            vertexlabeltextcolors = colorant"black")
-    fontface("JuliaMono-Bold")
-    fontsize(15)
-    text(string(expression), boxbottomcenter() + (0, -20), halign=:center)
-end
Example block output

LayeredLayouts.jl

LayeredLayouts is a package for working out how to layout graphs in a layered fashion: how to lay out directed acyclic graphs (DAGs), including trees, dependency graphs, and Sankey diagrams.

The package offers the Zarate algorithm (David Cheng Zarate). Positions are returned as x and y vectors, and should be converted to Points when passed to layout.

using Graphs
-using LayeredLayouts
-using Karnak
-
-tree = SimpleDiGraph(Edge.(
-    [1 => 2, 2 => 3, 4 => 5, 4 => 6, 
-     4 => 7, 4 => 8, 4 => 9, 4 => 10, 
-     5 => 11, 5 => 12, 8 => 15, 8 => 16, 
-     8 => 17, 8 => 18, 8 => 19, 9 => 20, 
-     9 => 21, 10 => 22, 12 => 13, 13 => 14, 
-     23 => 4, 23 => 24, 23 => 25, 23 => 26, 
-     23 => 27, 23 => 28, 23 => 29, 23 => 30, 
-     23 => 31, 28 => 32, 28 => 33, 29 => 35, 
-     30 => 1, 30 => 38, 31 => 40, 33 => 34, 
-     35 => 36, 35 => 37, 38 => 39, 40 => 41, 41 => 42]))
-
-xs, ys, paths = solve_positions(Zarate(), tree)
-
-@draw begin
-    background("black")
-    sethue("gold")
-    drawgraph(tree, 
-        vertexlabels = 1:nv(tree),
-        edgestrokecolors = [Karnak.RGB(randomhue()...) for e in 1:ne(tree)],
-        layout= boxmiddleleft() .+ 
-            map(pt -> Point(90pt[1], 30pt[2]), zip(xs, ys))
-    )
-end 600 500

layered layouts

Simple dependency graph

You can draw a visual interpretation of a Julia package's dependencies easily enough by going through the TOML files.

Code for this figure

This code generates the figure below:

using Karnak
-using Graphs
-using NetworkLayout
-using InteractiveUtils
-using Colors
-using TOML
-using Base: active_project
-
-# mostly stolen from PkgGraph.jl by tfiers!
-
-manifest(proj_path) = replace(proj_path, "Project.toml" => "Manifest.toml")
-
-if VERSION ≥ v"1.7"
-    packages_in(manifest) = TOML.parsefile(manifest)["deps"]
-else
-    packages_in(manifest) = TOML.parsefile(manifest)
-end
-
-packages_in_active_manifest() = packages_in(manifest(active_project()))
-
-function depgraph(pkgname)
-    rootpkg = string(pkgname)
-    packages = packages_in_active_manifest()
-    if rootpkg ∉ keys(packages)
-        error("""
-        The given package ($pkgname) must be installed in the active project
-        (which is currently `$(active_project())`)""")
-    end
-    deps = Vector{Pair{String,String}}()
-    add_deps_of(name) = begin
-        pkg_info = only(packages[name])
-        direct_deps = get(pkg_info, "deps", [])
-        for dep in direct_deps
-            push!(deps, name => dep)
-            add_deps_of(dep)
-        end
-    end
-    add_deps_of(rootpkg)
-    return unique!(deps)
-end
-
-function build_depgraph(pkgname)
-    dgraphs = depgraph(pkgname)
-    pkglist = String[]
-    for (f, t) in dgraphs
-        if f ∉ pkglist
-            push!(pkglist, f)
-        end
-        if t ∉ pkglist
-            push!(pkglist, t)
-        end
-    end
-    g = DiGraph(length(pkglist))
-    for (f, t) in dgraphs
-        if f ∈ pkglist && t ∈ pkglist
-            add_edge!(g, findfirst(isequal(f), pkglist), findfirst(isequal(t), pkglist))
-        end
-    end
-    return g, pkglist
-end
-
-g, pkgnames = build_depgraph("DataFrames")
-
-d = @drawsvg begin
-    background("grey5")
-    sethue("gold")
-    fontsize(10)
-    fontface("Avenir-Black")
-    drawgraph(
-        g,
-        margin=40,
-        layout = Stress(iterations = 100),
-        edgegaps = 13,
-        edgestrokeweights = 3,
-        edgecurvature = 4,
-        edgestrokecolors = [HSB(360rand(), 0.7, 0.8) for i in 1:ne(g)],
-        vertexlabels = (vtx) -> begin
-            string(pkgnames[vtx])
-        end,
-        vertexshapes = (v) -> begin
-            tx = textextents(pkgnames[v])
-            @layer begin
-                setopacity(0.8)
-                sethue("grey80")
-                box(O, 1.2tx[5], 1.5tx[4], 5, :fill)
-            end
-        end,
-    )
-end 800 700
Example block output

There's an extended investigation of package dependencies later in this section.

The London Tube

One real-world example of a small network is the London Underground, known as “the Tube”. The 250 or so stations in the network can be modelled using a simple graph.

Setup

If you want to follow along, this is the setup required. The CSV file examples/tubedata-modified.csv contains the station names, latitude and longitudes, and connectivity details.

using Karnak, Graphs, NetworkLayout, Colors
-using DataFrames, CSV
-
-# positions are in LatLong
-
-tubedata = CSV.File("examples/tubedata-modified.csv") |> DataFrame
-
-amatrix = Matrix(tubedata[:, 4:270])
-
-extrema_lat = extrema(tubedata.Latitude)
-extrema_long = extrema(tubedata.Longitude)
-
-# scale LatLong and flip in y to fit into current drawing
-
-positions = @. Point(
-    rescale(tubedata.Longitude, extrema_long..., -280, 280),
-    rescale(tubedata.Latitude, extrema_lat..., 280, -280))
-
-stations = tubedata[!,:Station]
-
-find(str) = findfirst(isequal(str), stations)
-find(x::Int64) = stations[x]
-
-g = Graph(amatrix)

The tube “map” is stored in g, as a {267, 308} undirected simple Int64 graph.

The find() functions are just a quick way to convert between station names and ID numbers:

find("Waterloo")
244
find(244)
"Waterloo"

Not a map

Most London residents and visitors are used to seeing the famous Tube Map:

tube map

It’s a design classic, hand-drawn by Harry Beck in 1931, and updated regularly ever since. As an electrical engineer, Beck represented the sprawling London track network as a tidy circuit board. For Beck, the important thing about the map was to show the connections, rather than the accurate geography.

Our version looks very different, but it is at least geographically more accurate, because the latitude and longitude values of the stations are passed to layout.

@drawsvg begin
-background("grey10")
-sethue("grey50")
-drawgraph(g,
-    layout = positions,
-    vertexshapes = :none,
-    vertexlabeltextcolors = colorant"white",
-    vertexlabels = find.(1:nv(g)),
-    vertexlabelfontsizes = 6)
-end
Example block output

The layout algorithms - layout = spring and layout = stress - do a reasonable job, but people like to see north at the top of maps, and south at the bottom, not mixed up in any direction, like these.

@drawsvg begin
-background("grey20")
-tiles = Tiler(800, 400, 1, 2)
-sethue("white")
-
-@layer begin
-    translate(first(tiles[1]))
-    drawgraph(g,
-        layout=spring,
-        boundingbox = BoundingBox(box(O, 400, 400)),
-        vertexshapes = :none,
-        vertexlabeltextcolors = colorant"white",
-        vertexlabels = find.(1:nv(g)),
-        vertexlabelfontsizes = 6
-        )
-end
-
-@layer begin
-    translate(first(tiles[2]))
-    drawgraph(g,
-        layout=stress,
-        boundingbox = BoundingBox(box(O, 400, 400)),
-        vertexshapes = :none,
-        vertexlabeltextcolors = colorant"white",
-        vertexlabels = find.(vertices(g)),
-        vertexlabelfontsizes = 6
-        )
-end
-
-end 800 400
Example block output

Train terminates here

Use the degree() function to show just the station names at the end of a line: a vertex with a degree of 1 is a terminus:

@drawsvg begin
-background("grey90")
-sethue("black")
-drawgraph(g, layout=positions,
-    vertexshapesizes = 2,
-    vertexlabels = [(degree(g, n) == 1) ? find(n) : ""
-        for n in vertices(g)],
-    vertexlabeltextcolors = colorant"blue"
-    )
-end
Example block output

These labels show names familiar to all Tube-riders - the ones shown on the front of trains and on platform indicators. (It's unusual to visit them all, unless you're like Geoff Marshall, who holds the world record for the fastest time visiting every Tube station.)

Neighbors

The best connected station is also one of the oldest, dating back to 1863:

find(argmax(degree(g, 1:nv(g))))
"Baker Street"

Its neighbors are:

find.(neighbors(g, find("Baker Street")))
7-element Vector{InlineStrings.String31}:
- "Bond Street"
- "Edgware Road (Cir)"
- "Finchley Road"
- "Great Portland Street"
- "Marylebone"
- "Regent's Park"
- "St John's Wood"

Centrality

Using Graphs.jl's tools for measuring centrality, Baker Street is again at the top of the list, but Green Park (the Queen's nearest tube station), scores highly, despite not being in the top 20 busiest stations.

@drawsvg begin
-background("grey10")
-translate(0, -200)
-scale(3)
-bc = betweenness_centrality(g)
-sethue("gold")
-_, maxbc = extrema(bc)
-drawgraph(g, layout = positions,
-    vertexlabels = (vtx) -> bc[vtx] > maxbc * 0.6 && string(find(vtx)),
-    vertexlabeltextcolors = colorant"cyan",
-    vertexlabelfontsizes = 6,
-    vertexshapesizes = 1 .+ 10bc,
-    vertexfillcolors = HSB.(rescale.(bc, 0, maximum(bc), 0, 300), 0.7, 0.8),
-    )
-end 800 600
Example block output

Mornington Crescent

A route from Heathrow Terminal 5 to Mornington Crescent can be found using a_star().

heathrow_to_morningtoncrescent = a_star(g,
-    find("Heathrow Terminal 5"),
-    find("Mornington Crescent"))
-
-@drawsvg begin
-background("grey70")
-translate(0, -100)
-scale(3)
-
-sethue("grey50")
-drawgraph(g,
-    layout = positions,
-    vertexshapesizes = 1)
-
-sethue("black")
-fontsize(4)
-drawgraph(g,
-    layout = positions,
-    vertexshapes = :none,
-    edgelist = heathrow_to_morningtoncrescent,
-    edgestrokeweights = 3,
-    vertexlabels = (vtx) -> begin
-        if vtx ∈ src.(heathrow_to_morningtoncrescent) ||
-           vtx ∈ dst.(heathrow_to_morningtoncrescent)
-             circle(positions[vtx], 2, :fill)
-             label(find(vtx), :e, positions[vtx])
-        end
-    end)
-end
Example block output

The route found by a_star is:

[find(dst(e)) for e in heathrow_to_morningtoncrescent]
22-element Vector{InlineStrings.String31}:
- "Heathrow Terminals 2 & 3"
- "Hatton Cross"
- "Hounslow West"
- "Hounslow Central"
- "Hounslow East"
- "Osterley"
- "Boston Manor"
- "Northfields"
- "South Ealing"
- "Acton Town"
- ⋮
- "Gloucester Road"
- "South Kensington"
- "Sloane Square"
- "Victoria"
- "Green Park"
- "Oxford Circus"
- "Warren Street"
- "Euston"
- "Mornington Crescent"

Information about the required changes - at Victoria from the Piccadilly line to the Victoria Line, and at Warren Street from the Victoria Line to the Northern Line - is not part of the graph. Routes across the Tube network, like the trains, follow the tracks (edges). The concept of “lines” (Victoria, Circle, etc) isn’t part of the graph structure, but a colorful layer imposed on top of the track network.

Pandemic

Graphs.jl provides many functions for analysing graph networks. The diffusion() function appears to simulate the diffusion of an infection from some starting vertices and the probability of spreading.

The function returns an array of arrays, where each one contains the vertex numbers of newly "infected" vertices. For example, in this result:

[[1], Int64[], [22, 15, 25], ...]

the first stage showed vertex 1 "infected"; stage two was free of incident; but on stage 3 vertices 22, 15, and 25 have become "infected".

So here, apparently, is a simulation of what might happen when an infection arrives at Heathrow Airport's Terminal 5 tube station, and starts spreading through the tube network.

function frame(scene, framenumber, diffresult)
-    background("black")
-    sethue("gold")
-    text(string(framenumber), boxbottomleft() + (10, -10))
-    drawgraph(g, layout = positions, vertexshapesizes = 3)
-    for k in 1:framenumber
-        i = diffresult[k]
-        drawgraph(
-            g,
-            layout = positions,
-            edgelines = 0,
-            vertexfunction = (v, c) -> begin
-                if !isempty(i)
-                    if v ∈ i
-                        sethue("red")
-                        circle(positions[v], 5, :fill)
-                    end
-                end
-            end,
-        )
-    end
-end
-
-function main()
-    amovie = Movie(600, 600, "diff")
-    diffresult = diffusion(g, 0.2, 200, initial_infections=[find("Heathrow Terminal 5")])
-    animate(amovie,
-        Scene(amovie, (s, f) -> frame(s, f, diffresult), 1:length(diffresult)),
-        framerate=10,
-        creategif=true,
-        pathname="/tmp/diff.gif")
-end
-main()

diffusion

The current logo for the Graphs.jl package was easily drawn using Karnak.

I wanted to use the graph coloring feature (greedy_color()), but unfortunately it was too clever, managing to color the graph using only two colors instead of the four I was hoping to use.

using Graphs
-using Karnak
-using Colors
-
-function lighten(col::Colorant, f)
-    c = convert(RGB, col)
-    return RGB(f * c.r, f * c.g, f * c.b)
-end
-
-function julia_sphere(pt::Point, w, col::Colorant;
-        action = :none)
-    setmesh(mesh(
-        makebezierpath(box(pt, w * 1.5, w * 1.5)),
-        [lighten(col, .5),
-         lighten(col, 1.75),
-         lighten(col, 1.25),
-         lighten(col, .6)]))
-    circle(pt, w, action)
-end
-
-function draw_edge(pt1, pt2)
-    for k in 0:0.1:1
-        setline(rescale(k, 0, 1, 25, 1))
-        sethue(lighten(colorant"grey50", rescale(k, 0, 1, 0.5, 1.5)))
-        setopacity(rescale(k, 0, 1, 0.5, 0.75))
-        line(pt1, pt2, :stroke)
-    end
-end
-
-# positions for vertices
-
-outerpts = ngonside(O, 450, 4, π/4, vertices=true)
-innerpts = ngonside(O, 150, 4, π/2, vertices=true)
-pts = vcat(outerpts, innerpts)
-
-colors = map(c -> RGB(c...),
-    [Karnak.Luxor.julia_blue, Karnak.Luxor.julia_red, Karnak.Luxor.julia_green, Karnak.Luxor.julia_purple])
-
-@drawsvg begin
-    squircle(O, 294, 294, :clip, rt=0.2)
-    sethue("black")
-    paint()
-    g = SimpleGraph([
-        Edge(1,2), Edge(2,3), Edge(3,4), Edge(1,4),
-        Edge(5,6), Edge(6,7), Edge(7,8), Edge(5,8),
-        Edge(1,5), Edge(2,6), Edge(3,7), Edge(4,8),
-        ])
-
-    drawgraph(Graph(g),
-        layout=pts,
-        vertexfunction = (v, c) -> begin
-            d = distance(O, c[v])
-            d > 200 ? k = 0 : k = 1
-            julia_sphere(c[v],
-                 rescale(d, 0, 200, 52, 50), colors[mod1(v + k, 4)],
-                action=:fill)
-        end,
-        edgefunction = (k, s, d, f, t) -> draw_edge(f, t)
-        )
-end
Example block output

Julia Package Dependencies

This example was originally developed by Mathieu Besançon and presented as part of the workshop: Analyzing Graphs at Scale, at JuliaCon 2020. You can watch the video on YouTube.

The most important changes since the video was made are:

  • the renaming of LightGraphs.jl to Graphs.jl

  • the way to access the list of packages has changed

The code builds a dependency graph of the connections (ie which package depends on which package) for Julia packages in the General registry.

Then it's possible draw some pictures, such as this chonky SVG file showing the dependencies for the Colors.jl package:

package dependencies for Colors

Or this one, which attempts to highlight just the more connected packages in the Colors.jl dependency graph:

package dependencies for Colors

Setup:

using Graphs
-using MetaGraphs
-using TOML
-using Karnak
-using Colors

Finding the general registry

On my computer, the registry is in its default location. You might need to modify these lines if yours is is another location:

path_to_general = expanduser("~/.julia/registries/General")
-registry_file = Pkg.TOML.parsefile(joinpath(path_to_general, "Registry.toml"))
-packages_info = registry_file["packages"];

First we need the name and location of every package:

# Julia <= v1.6
-pkg_paths = map(values(packages_info)) do d
-    (name = d["name"], path = d["path"])
-end
# Julia >= v1.7
-pkg_paths = map(values(Pkg.Registry.reachable_registries()[1].pkgs)) do d
-    (name = d.name, path = d.path)
-end

The result in pkg_paths is a vector of tuples, containing the name and location of every package:

7495-element Vector{NamedTuple{(:name, :path), Tuple{String, String}}}:
- (name = "COSMA_jll", path = "C/COSMA_jll")
- (name = "CitableImage", path = "C/CitableImage")
- (name = "Trixi2Img", path = "T/Trixi2Img")
- (name = "ImPlot", path = "I/ImPlot")

Find packages that depend on a specific package

The function find_direct_deps() finds all the packages (names and locations) that directly depend on a specific named package.

function find_direct_deps(registry_path, pkg_paths, source)
-    filter(pkg_paths) do pkg_path
-        deps_file = joinpath(registry_path, pkg_path.path, "Deps.toml")
-        # some packages don't have Deps.toml file
-        isfile(deps_file) && begin
-            deps_struct = Pkg.TOML.parsefile(deps_file)
-            any(values(deps_struct)) do d
-                source in keys(d)
-            end
-        end
-    end
-end

We can now find out how many packages depend on a particular package. For example, how many packages depend on Colors.jl (my favourite)?

find_direct_deps(path_to_general, pkg_paths, "Colors")

giving this result:

227-element Vector{NamedTuple{(:name, :path), Tuple{String, String}}}:
- (name = "TopologyPreprocessing", path = "T/TopologyPreprocessing")
- (name = "DynamicGrids", path = "D/DynamicGrids")
- (name = "SimpleSDMLayers", path = "S/SimpleSDMLayers")
- (name = "UnderwaterAcoustics", path = "U/UnderwaterAcoustics")
- (name = "ColorSchemeTools", path = "C/ColorSchemeTools")
- (name = "PrincipalMomentAnalysisApp", path = "P/PrincipalMomentAnalysisApp")
- ⋮
- (name = "SoilWater_ToolBox", path = "S/SoilWater_ToolBox")
- (name = "Starlight", path = "S/Starlight")
- (name = "Dojo", path = "D/Dojo")
- (name = "OpticSim", path = "O/OpticSim")
- (name = "LVServer", path = "L/LVServer")

Colors.jl has 227 packages that depend on it. When Mathieu ran this code in 2020 on "LightGraphs", the vector had 92 elements. Today, in 2022, for "Graphs", the vector has 115 elements.

Build a directed tree

The next function, build_tree(), will build a directed graph of the dependencies on Colors.jl. Starting at the root package (Colors) the loop finds all its dependencies, then finds the dependencies of all of those dependent packages, and continues doing this until it reaches packages that have no dependencies. These are the "leaves" at the tip of the tree's branches.

function build_tree(registry_path, pkg_paths, root)
-    g = MetaDiGraph()
-    add_vertex!(g)
-    set_prop!(g, 1, :name, root)
-    i = 1
-    explored_nodes = Set{String}((root,))
-    while true
-        i % 50 == 0 && print(i, " ")
-        current_node = get_prop(g, i, :name)
-        direct_deps = find_direct_deps(registry_path, pkg_paths, current_node)
-        filter!(d -> d.name ∉ explored_nodes, direct_deps)
-        if isempty(direct_deps) && i >= nv(g)
-           break
-        end
-        for ddep in direct_deps
-           push!(explored_nodes, ddep.name)
-           add_vertex!(g)
-           set_prop!(g, nv(g), :name, ddep.name)
-           add_edge!(g, i, nv(g))
-        end
-        i += 1
-    end
-    return g
-end
Note

This function takes some time to run - about 8 minutes for about 1400 iterations on my computer.

g = build_tree(path_to_general, pkg_paths, "Colors")
-
-{1375, 1374} directed Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)

Notice that there are 1375 nodes, but one less edge. The Colors.jl package is the root of the tree, and doesn't connect to anything else, in this analysis.) Of course, it depends on quite a few, but that's another graph story.)

The result is a directed metagraph. In a metagraph, as implemented by MetaGraphs.jl, it's possible to add information to vertices using set_prop() and get_prop().

To find all the package names in the graph that are directly connected to Colors.jl, we can broadcast get_prop() like this:

get_prop.(Ref(g), outneighbors(g, 1), :name)
-
-227-element Vector{String}:
- "SqState"
- "InteractBase"
- "ImageMetadata"
- "PlantGeom"
- "MicrobiomePlots"
- "MeshViz"
- "SGtSNEpi"
- "ColorSchemes"
- "CairoMakie"
- ⋮
- "GenomicMaps"
- "ModiaPlot"
- "Thebes"
- "ConstrainedDynamics"
- "AutomotiveVisualization"
- "Flux"

outneighbors returns a list of all neighbors connected to vertex v by an outgoing edge.

Shortest paths and lengths of branches

The dijkstra_shortest_paths() function finds the paths between the designated package and all its dependencies.

The returned value is a DijkstraState object, with fields parents, dists, predecessors, pathcounts, and closest_vertices.

Looking at the dists (distances), we see that one package is very close indeed at 0.0 - that's Colors.jl itself.

spath_result = dijkstra_shortest_paths(g, 1)
-
-spath_result.dists
-
-1375-element Vector{Float64}:
- 0.0
- 1.0
- 1.0
- 1.0
- 1.0
- 1.0
- 1.0
- ⋮
- 5.0
- 5.0
- 5.0
- 6.0
- 6.0
- 6.0
- 6.0
- 6.0
- 6.0
- 7.0
- 7.0

Or in a barchart:

scores = [count(==(i), spath_result.dists) for i in unique(spath_result.dists)]
Example block output

The "furthest" packages from Colors.jl - the two seven steps away - are:

for idx in eachindex(spath_result.dists)
-    if spath_result.dists[idx] == 7
-         println(get_prop(g, idx, :name))
-    end
-end
-
-QuantumESPRESSOExpress
-Recommenders

Computing a full subgraph

All the package names are obtained with:

all_packages = get_prop.(Ref(g), vertices(g), :name)
-
-Vector{String}:
- "Colors"
- "TopologyPreprocessing"
- "DynamicGrids"
- "SimpleSDMLayers"
- "UnderwaterAcoustics"
- "ColorSchemeTools"
- ⋮
- "ReservoirComputing"
- "TreeParzen"
- "GeoStatsImages"
- "StoppingInterface"
- "QuantumESPRESSO"
- "Recommenders"
- "QuantumESPRESSOExpress"

These next commands build a metagraph, using the package names:

full_graph = MetaDiGraph(length(all_packages))
-
-{1375, 0} directed Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)

Assigning names to the vertices:

for v in vertices(full_graph)
-    set_prop!(full_graph, v, :name, all_packages[v])
-end

Build the full graph:

for v in vertices(full_graph)
-    pkg_name = get_prop(full_graph, v, :name)
-    dependent_packages = find_direct_deps(path_to_general, pkg_paths, pkg_name)
-    for dep_pkg in dependent_packages
-        pkg_idx = findfirst(==(dep_pkg.name), all_packages)
-        # only packages in graph
-        if pkg_idx !== nothing
-            add_edge!(full_graph, pkg_idx, v)
-        end
-    end
-end

It's useful to be able to save and load this graph:

# using Graphs, MetaGraphs
-# save:
-savegraph("examples/full_graph.lg", full_graph))
-
-# load:
-full_graph = loadgraph("examples/full_graph.lg", MGFormat())

All roads lead to home

The code in this next example draws the vertices as an impressionistic point cloud, and uses the a_star() function to find a path from some random package back to Colors.jl.

@drawsvg begin
-    background("black")
-    sethue("white")
-    fontface("BarlowCondensed-Bold")
-    random_package = rand(1:nv(full_graph))
-    astar = a_star(full_graph, random_package, 1)
-    astar_vertices = sort(unique(vcat([src(e) for e in astar], [dst(e) for e in astar])), rev=true)
-    drawgraph(g,
-        edgelist=astar,
-        layout=spring,
-        vertexlabels = (v) -> v ∈ astar_vertices[[begin, end]] && get_prop(full_graph, v, :name),
-        vertexlabeltextcolors = colorant"white",
-        vertexlabelfontsizes = 20,
-        vertexlabelfontfaces = "BarlowCondensed-Bold",
-        vertexshapesizes = .5,
-        vertexstrokecolors = :none)
-    textfit(string(join(get_prop.(Ref(full_graph), astar_vertices, :name), " > ")),
-        BoundingBox(box(boxbottomcenter() + (0, -30), 600, 50)))
-end 800 800

chain of deps

Pagerank

This code computes the pagerank of the graph. It returns a long list of numbers, the centrality score for each vertex.

ranks = pagerank(full_graph)
-
-1375-element Vector{Float64}:
- 0.15339826572024867
- 0.00020384989099126913
- 0.00043081071431843264
- 0.0002471787754446367
- 0.0005504809666182096
- 0.00020384989099126913
- 0.00020384989099126913
- 0.00034105802509359976
- 0.0012284800170342895
- ⋮
- 0.00020384989099126913
- 0.00020384989099126913
- 0.00042629607921470863
- 0.00020384989099126913
- 0.0002616217369290926
@drawsvg begin
-    background("black")
-    sethue("white")
-    fontface("BarlowCondensed-Bold")
-    ranks = pagerank(full_graph)
-    drawgraph(g,
-        edgelist = [],
-        layout=spring,
-        vertexshapes = :none,
-        vertexlabels = (v) -> ranks[v] > 0.001 && get_prop(full_graph, v, :name),
-        vertexlabelfontsizes = 500ranks,
-        vertexlabeltextcolors = colorant"white")
-end 800 800

pagerank

The problem with this representation is one of overlapping labels. This isn't an issue we can fix easily in Karnak.

Highly ranked

With some sorting, we can find the highest ranked packages in this part of the ecosystem.

sorted_indices = sort(eachindex(ranks), by=i->ranks[i], rev=true)
-
-1375-element Vector{Int64}:
-   1
- 543
- 137
- 112
- 144
- 164
-   ⋮
- 259
- 258
- 729
- 730
- 688
get_prop.(Ref(full_graph), sorted_indices, :name)
-
-1375-element Vector{String}:
- "Colors"
- "Plots"
- "ImageCore"
- "PlotUtils"
- "ColorSchemes"
- "ColorVectorSpace"
- ⋮
- "TopOptMakie"
- "VTKDataIO"
- "EFTfitter"
- "SpmGrids"
- "ElectronTests"

Most dependencies, most depended on

indegree() returns the number of edges which end at a vertex. For a package, this is another way of seeing how many other packages depend on it.

in_sorted_indices = sort(vertices(full_graph),
-    by = i -> indegree(full_graph, i), rev = true)
-
-1375-element Vector{Int64}:
- 543
-   1
-  65
-  98
- 133
- 137
-   ⋮
- 287
- 743
- 744
- 285
- 688
get_prop.(Ref(full_graph), in_sorted_indices, :name)
-
-1375-element Vector{String}:
- "Plots"
- "Colors"
- "Flux"
- "Images"
- "PyPlot"
- "ImageCore"
- ⋮
- "PolaronMobility"
- "CineFiles"
- "MadNLPGraph"
- "MicroscopyLabels"
- "ElectronTests"

outdegree() finds the number of edges which start at a vertex.

out_sorted_indices = sort(vertices(full_graph),
-    by = i -> outdegree(full_graph, i), rev=true)
-
-1375-element Vector{Int64}:
- 372
-  98
-  35
-  24
- 300
- 153
-   ⋮
- 776
- 777
- 778
- 779
-   1
get_prop.(Ref(full_graph), out_sorted_indices, :name)
-
-1375-element Vector{String}:
- "StatisticalRethinking"
- "Images"
- "Makie"
- "MakieGallery"
- "PredictMDExtra"
- "GLMakie"
- ⋮
- "MimiPAGE2020"
- "MimiSNEASY"
- "OptiMimi"
- "SyntheticNetworks"
- "Colors"
ranks_betweenness = betweenness_centrality(full_graph)
-
-1375-element Vector{Float64}:
- 0.0
- 0.0
- 3.1186467511475384e-5
- 5.300816007616213e-7
- 5.830897608377834e-5
- 0.0
- ⋮
- 0.0
- 0.0
- 4.24065280609297e-6
- 0.0
- 1.0601632015232426e-6
sorted_indices_betweenness = sort(vertices(full_graph),
-    by = i -> ranks_betweenness[i], rev=true)
-
-1375-element Vector{Int64}:
- 144
-  98
- 112
- 543
- 461
-  35
-   ⋮
- 562
- 563
- 564
- 565
-   1
get_prop.(Ref(full_graph), sorted_indices_betweenness, :name)
-
-1375-element Vector{String}:
- "ColorSchemes"
- "Images"
- "PlotUtils"
- "Plots"
- "ImageIO"
- "Makie"
- ⋮
- "BridgeDiffEq"
- "BridgeLandmarks"
- "FCA"
- "BEASTDataPrep"
- "Colors"

Is_cyclic

is_cyclic() returns true if the graph contains a cycle.

is_cyclic(full_graph)
-
-true
-
-for cycle in simplecycles(full_graph)
-    names = get_prop.(Ref(full_graph), cycle, :name)
-    @info names
-end
-
-["ImageCore", "MosaicViews"]
-["Images", "ImageSegmentation"]
-["Makie", "GLMakie"]
-["POMDPPolicies", "BeliefUpdaters", "POMDPModels", "POMDPSimulators"]
-["BeliefUpdaters", "POMDPModels"]
-["BeliefUpdaters", "POMDPModels", "POMDPSimulators"]
-["ReinforcementLearning", "ReinforcementLearningEnvironmentDiscrete"]
-["Modia3D", "Modia"]
-["RasterDataSources", "GeoData"]
-["DSGE", "StateSpaceRoutines"]

For that first cycle: ImageCore.jl's Project.toml file has MosaicViews.jl in its [deps] section, and MosaicViews.jl has ImageCore.jl in the [extras] section of its Project.toml file.

Draw some graphs

Visualizations of graphs are sometimes (often?) better at communicating vague ideas such as complexity and shape. But it's quite difficult to render graphs as rich as these to show the connections clearly while also showing all the labels such that they're easy to read.

The solution may be to print out these graph representations and stick them on a nearby wall, although, with Julia's General Registry changing every day, it would be out of date before the glue dries.

wall art office graph dependency

The images above were made with the following code.

@pdf begin
-    background("black")
-    sethue("gold")
-    setline(0.3)
-    drawgraph(g,
-        layout = stress,
-        edgefunction = (k, s, d, f, t) -> begin
-            @layer begin
-                sl = slope(O, t)
-                sethue(HSVA(rescale(sl, 0, 2π, 0, 360), 0.7, 0.7, .9))
-                line(f, t, :stroke)
-            end
-        end,
-        vertexfunction = (v, c) -> begin
-            @layer begin
-                t = get_prop(g, v, :name)
-                te = textextents(t)
-                setopacity(0.7)
-                sethue("grey10")
-                fontsize(3)
-                box(c[v], te[3]/2, te[4]/2, :fill)
-                setopacity(1)
-                sethue("white")
-                text(t, c[v], halign=:center, valign=:middle)
-            end
-        end)
-    @info " finish drawing"
-end 2500 2500 "/tmp/graph-dependencies-colors.pdf"
using ColorSchemes
-
-@svg begin
-    background("black")
-    maxdeg = maximum(degree(full_graph))
-    drawgraph(full_graph,
-        layout = spring,
-        edgelines = 0,
-        vertexfunction = (v, c) -> begin
-            d = degree(full_graph, v)
-            @layer begin
-                sethue(get(ColorSchemes.darkrainbow, rescale(d, 1, maxdeg)))
-                circle(c[v], rescale(d, 1, 270, 2, 20), :fill)
-            end
-            if d > 20
-                fontsize(rescale(d, 1, maxdeg, 5, 20))
-                setcolor("white")
-                textoutlines(all_packages[v], c[v], halign=:center, valign=:bottom, :fill)
-                setline(rescale(d, 1, maxdeg, 0.25, 1))
-                sethue("black")
-                textoutlines(all_packages[v], c[v], halign=:center, valign=:bottom, :stroke)
-            end
-        end)
-end 1200 1200 "/tmp/graph-dependencies-2.svg"
diff --git a/dev/favicon.ico b/dev/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8a2d2f1087c10b80f87758b437486a0949042814 GIT binary patch literal 6961 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 literal 0 HcmV?d00001 diff --git a/dev/hashmap.json b/dev/hashmap.json new file mode 100644 index 0000000..a32cdee --- /dev/null +++ b/dev/hashmap.json @@ -0,0 +1 @@ +{"reference_api.md":"Bu8sozjY","reference_functionindex.md":"D9830wBP","index.md":"DI3GZpLg","examples.md":"CAYbb5Ao","basics.md":"ameQl_Qu","syntax.md":"ZDzSRviH"} diff --git a/dev/index-06525810.svg b/dev/index-06525810.svg deleted file mode 100644 index 0736634..0000000 --- a/dev/index-06525810.svg +++ /dev/null @@ -1,634 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/index.html b/dev/index.html index d59489f..c97b4fa 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,10 +1,33 @@ -Introduction to Karnak · Karnak

Introduction to Karnak

karnak splash image

Karnak.jl is a package for drawing graphs and networks. It's built on top of Luxor.jl.

Karnak also uses Graphs.jl for graph construction, and NetworkLayout.jl for graph layout algorithms.

Note

There's a good selection of Julia packages for visualizing graphs:

Quick start

using Karnak
-using Graphs
-using NetworkLayout
-g = barabasi_albert(100, 1)
-@drawsvg begin
-    background("black")
-    sethue("white")
-    drawgraph(g, layout=stress, vertexlabels = 1:nv(g))
-end
Example block output
Note

Karnak.jl contains just one function: drawgraph(), and re-exports Luxor.jl. So all graphics and drawing functions are from Luxor. See the documentation of Luxor.jl for details.

+ + + + + Introduction to Karnak | Karnak.jl + + + + + + + + + + + + + + +
Skip to content

Introduction to Karnak

![karnak splash image](assets/figures/karnak-social-media-preview.png)

Karnak.jl is a package for drawing graphs and networks. It's built on top of Luxor.jl.

Karnak also uses Graphs.jl for graph construction, and NetworkLayout.jl for graph layout algorithms.

Note

There's a good selection of Julia packages for visualizing graphs:

Quick start

julia
using Karnak
+using Graphs
+using NetworkLayout
+g = barabasi_albert(100, 1)
+@drawsvg begin
+    background("black")
+    sethue("white")
+    drawgraph(g, layout=stress, vertexlabels = 1:nv(g))
+end

Note

Karnak.jl contains just one function: drawgraph(), and re-exports Luxor.jl. So all graphics and drawing functions are from Luxor. See the documentation of Luxor.jl for details.

+ + + + \ No newline at end of file diff --git a/dev/logo.png b/dev/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f60c0ca3bc91bce69007e74b6ba5b12d920b1e4b GIT binary patch literal 126576 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⁢fv0T#?^A4wl0p} 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 VhQH&)2P(>;t)cfAq4wh4e*jL3rt$y) literal 0 HcmV?d00001 diff --git a/dev/assets/logo.svg b/dev/logo.svg similarity index 100% rename from dev/assets/logo.svg rename to dev/logo.svg diff --git a/dev/reference/api.html b/dev/reference/api.html new file mode 100644 index 0000000..ba4a791 --- /dev/null +++ b/dev/reference/api.html @@ -0,0 +1,152 @@ + + + + + + Karnak.jl + + + + + + + + + + + + + + +
Skip to content
# Karnak.drawgraphMethod.

Draw a graph g using coordinates in layout to fit in a Luxor boundingbox (defaulting to the current drawing's extent).

Returns a vector of Points, the location of the graph vertices as drawn.

Keyword arguments

boundingbox::BoundingBox        graph fits inside this BB
+layout                          Point[] or function
+margin                          default 30
+edgelist                        draw only these edges
+
+vertexfunction(vtx, coords) ->  draw vertices
+edgefunction(edgenumber, edgesrc, edgedest, from, to) -> draw edges

layout

  • the layout method or coordinates to be used. Examples:
layout = squaregrid
+
+layout = shell
+
+layout = vcat(
+    [between(O + (-W / 2, -H / 2), O + (-W / 2, H / 2), i) for i in range(0, 1, length=N)], # left
+    [between(O + (W / 2, H / 2), O + (W / 2, -H / 2), i) for i in range(0, 1, length=N)] # right
+    )
+
+layout = stress
+
+layout = (g) -> spectral(adjacency_matrix(g), dim=2)
+
+layout = shell ∘ adjacency_matrix
+
+layout = (g) -> sfdp(g, Ptype=Float64, dim=2, tol=0.05, C=0.4, K=2)
+
+layout = Shell(nlist=[6:10,]) # inner shell for vertices 6 to 10
+
+layout = squaregrid
+
+the_positions = [(pt.x, pt.y) for pt in randompointarray(BoundingBox(), 50)[1:nv(G)]]
+the_weights = rand(1:20, nv(G), nv(G))
+layout=Stress(initialpos = the_positions,
+    iterations = 30,
+    weights = the_weights)
+
+layout = Stress(iterations = 100, weights = M) # M is matrix of weights
+
+layout = Spring(iterations = 200, initialtemp = 2.5)

Refer to the NetworkLayout.jl documentation for more.

Extended help

All keywords:

plain
 boundingbox                 BoundingBox                                              
+ margin                      Number                                                   
+ layout                      Vector{Point}                                            
+                             function from NetworkLayout.jl                           
+                             f(g::Graph)                                              
+ edgefunction                f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point)
+ vertexfunction              f(vtx::Int, coordinates::Vector{Point})                  
+ edgecurvature               Float64                                                  
+ edgedashpatterns            Vector{Vector}[number]                                   
+                             Vector{Number}                                           
+ edgegaps                    Vector                                                   
+                             Range                                                    
+                             Real
+                             f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point)                                                     
+ edgelabelcolors             Vector{Colorant}                                         
+                             Colorant                                                 
+ edgelabelfontfaces          Vector{Strings}[edgenumber]                              
+                             String                                                   
+                             :none                                                    
+ edgelabelfontsizes          Vector{Number}                                           
+                             Number                                                   
+ edgelabelrotations          Vector{angles}                                           
+                             angle::Float64                                           
+                             f(edgenumber, edges, edgedest, from, to)                 
+ edgelabels                  Vector                                                   
+                             range                                                    
+                             Dict{Int, Int}                                           
+                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
+                               - this function must draw the required text 
+                             :none                                                    
+ edgelines                   Vector{Int}                                              
+                             range                                                    
+                             Int                                                      
+                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point) 
+ edgelist                    Graphs.EdgeIterator                                      
+ edgestrokecolors            Vector{Colorant}[edge::Int]                              
+                             Colorant                                                 
+                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point) 
+ edgestrokeweights           Vector{Number}[vtx]                                      
+                             range                                                    
+                             Real                                                     
+                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point) 
+ vertexfillcolors            Vector{Colorant}                                         
+                             Colorant                                                 
+                             :none                                                    
+                             f(vtx::Int)                                              
+ vertexlabelfontfaces        Vector{Strings}                                          
+                             String                                                   
+ vertexlabelfontsizes        Vector                                                   
+                             range                                                    
+                             Real                                                     
+                             :none
+                             f(vtx::Int, coord::Point[])
+                              - function must return a numeric value for fontsize
+ vertexlabeloffsetangles     Vector                                                   
+                             Range                                                    
+                             Real                                                     
+ vertexlabeloffsetdistances  Vector                                                   
+                             range                                                    
+                             Real                                                     
+ vertexlabelrotations        Vector                                                   
+                             range                                                    
+                             Real                                                     
+                             :none                                                    
+ vertexlabels                Vector{String}                                           
+                             String                                                   
+                             range[vtx::Int]                                          
+                             :none                                                    
+                             f(vtx::Int)
+                             - this function must return a string                                              
+ vertexlabeltextcolors       Vector{Colorant}                                         
+                             Colorant
+                             f(vtx::Int)                                                 
+                             :none                                                    
+ vertexshaperotations        f(vtx::Int)                                              
+                             angle::Float64                                           
+ vertexshapes                Vector of :circle :square :none                          
+                             range[vtx]                                               
+                             :circle :square :none                                    
+                             f(vtx::Int)                                              
+ vertexshapesizes            Vector{Real}                                             
+                             range                                                    
+                             Real                                                     
+                             :none                                                    
+                             f(vtx::Int)                                              
+ vertexstrokecolors          Vector                                                   
+                             Colorant                                                 
+                             :none                                                    
+                             f(vtx::Int)                                              
+ vertexstrokeweights         Vector                                                   
+                             range                                                    
+                             :none                                                    
+                             f(vtx::Int)

source


+ + + + \ No newline at end of file diff --git a/dev/reference/api/index.html b/dev/reference/api/index.html deleted file mode 100644 index bf4f2fb..0000000 --- a/dev/reference/api/index.html +++ /dev/null @@ -1,127 +0,0 @@ - -Function reference · Karnak
Karnak.drawgraphMethod

Draw a graph g using coordinates in layout to fit in a Luxor boundingbox (defaulting to the current drawing's extent).

Returns a vector of Points, the location of the graph vertices as drawn.

Keyword arguments

boundingbox::BoundingBox        graph fits inside this BB
-layout                          Point[] or function
-margin                          default 30
-edgelist                        draw only these edges
-
-vertexfunction(vtx, coords) ->  draw vertices
-edgefunction(edgenumber, edgesrc, edgedest, from, to) -> draw edges

layout

  • the layout method or coordinates to be used. Examples:
layout = squaregrid
-
-layout = shell
-
-layout = vcat(
-    between.(O + (-W/2, H), O + (W/2, H), range(0, 1, length=N)),
-    between.(O + (-W/2, -H), O + (W/2, -H), range(0, 1, length=N)))
-
-layout = stress
-
-layout = (g) -> spectral(adjacency_matrix(g), dim=2)
-
-layout = shell ∘ adjacency_matrix
-
-layout = (g) -> sfdp(g, Ptype=Float64, dim=2, tol=0.05, C=0.4, K=2)
-
-layout = Shell(nlist=[6:10,]) # inner shell for vertices 6 to 10
-
-layout = squaregrid
-
-the_positions = [(pt.x, pt.y) for pt in randompointarray(BoundingBox(), 50)[1:nv(G)]]
-the_weights = rand(1:20, nv(G), nv(G))
-layout=Stress(initialpos = the_positions,
-    iterations = 30,
-    weights = the_weights)
-
-layout = Stress(iterations = 100, weights = M) # M is matrix of weights
-
-layout = Spring(iterations = 200, initialtemp = 2.5)

Refer to the NetworkLayout.jl documentation for more.

Extended help

All keywords:

 boundingbox                 BoundingBox                                              
- margin                      Number                                                   
- layout                      Vector{Point}                                            
-                             function from NetworkLayout.jl                           
-                             f(g::Graph)                                              
- edgefunction                f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Poi
- vertexfunction              f(vtx::Int, coordinates::Vector{Point})                  
- edgecurvature               Float64                                                  
- edgedashpatterns            Vector{Vector}[number]                                   
-                             Vector{Number}                                           
- edgegaps                    Vector                                                   
-                             Range                                                    
-                             Real                                                     
- edgelabelcolors             Vector{Colorant}                                         
-                             Colorant                                                 
- edgelabelfontfaces          Vector{Strings}[edgenumber]                              
-                             String                                                   
-                             :none                                                    
- edgelabelfontsizes          Vector{Number}                                           
-                             Number                                                   
- edgelabelrotations          Vector{angles}                                           
-                             angle::Float64                                           
-                             f(edgenumber, edges, edgedest, from, to)                 
- edgelabels                  Vector                                                   
-                             range                                                    
-                             Dict{Int, Int}                                           
-                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
-                               - this function should draw the required text 
-                             :none                                                    
- edgelines                   Vector{Int}                                              
-                             range                                                    
-                             Int                                                      
-                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point) 
- edgelist                    Graphs.EdgeIterator                                      
- edgestrokecolors            Vector{Colorant}[edge::Int]                              
-                             Colorant                                                 
-                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point) 
- edgestrokeweights           Vector{Number}[vtx]                                      
-                             range                                                    
-                             Real                                                     
-                             f(edgenumber, edgesrc, edgedest, from::Point, to::Point) 
- vertexfillcolors            Vector{Colorant}                                         
-                             Colorant                                                 
-                             :none                                                    
-                             f(vtx::Int)                                              
- vertexlabelfontfaces        Vector{Strings}                                          
-                             String                                                   
- vertexlabelfontsizes        Vector                                                   
-                             range                                                    
-                             Real                                                     
-                             :none
-                             f(vtx::Int, coord::Point[])
-                               function should return a numeric value for fontsize
- vertexlabeloffsetangles     Vector                                                   
-                             Range                                                    
-                             Real                                                     
- vertexlabeloffsetdistances  Vector                                                   
-                             range                                                    
-                             Real                                                     
- vertexlabelrotations        Vector                                                   
-                             range                                                    
-                             Real                                                     
-                             :none                                                    
- vertexlabels                Vector{String}                                           
-                             String                                                   
-                             range[vtx::Int]                                          
-                             :none                                                    
-                             f(vtx::Int)
-                              this function should return a string                                              
- vertexlabeltextcolors       Vector{Colorant}                                         
-                             Colorant
-                             f(vtx::Int)                                                 
-                             :none                                                    
- vertexshaperotations        f(vtx::Int)                                              
-                             angle::Float64                                           
- vertexshapes                Vector of :circle :square :none                          
-                             range[vtx]                                               
-                             :circle :square :none                                    
-                             f(vtx::Int)                                              
- vertexshapesizes            Vector{Real}                                             
-                             range                                                    
-                             Real                                                     
-                             :none                                                    
-                             f(vtx::Int)                                              
- vertexstrokecolors          Vector                                                   
-                             Colorant                                                 
-                             :none                                                    
-                             f(vtx::Int)                                              
- vertexstrokeweights         Vector                                                   
-                             range                                                    
-                             :none                                                    
-                             f(vtx::Int)                                              
source
diff --git a/dev/reference/functionindex.html b/dev/reference/functionindex.html new file mode 100644 index 0000000..34815f9 --- /dev/null +++ b/dev/reference/functionindex.html @@ -0,0 +1,25 @@ + + + + + + Index | Karnak.jl + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dev/reference/functionindex/index.html b/dev/reference/functionindex/index.html deleted file mode 100644 index 20ccdeb..0000000 --- a/dev/reference/functionindex/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Alphabetical function list · Karnak
diff --git a/dev/search_index.js b/dev/search_index.js deleted file mode 100644 index 68861ad..0000000 --- a/dev/search_index.js +++ /dev/null @@ -1,3 +0,0 @@ -var documenterSearchIndex = {"docs": -[{"location":"examples/","page":"Examples","title":"Examples","text":"using Karnak, Graphs, NetworkLayout, Colors\nusing DataFrames, CSV, DelimitedFiles\n\n# positions are in LatLong\n\ntubedata = CSV.File(\"../../examples/tubedata-modified.csv\") |> DataFrame\n\namatrix = Matrix(tubedata[:, 4:270])\n\ng = Graph(amatrix)\n\nextrema_lat = extrema(tubedata.Latitude)\nextrema_long = extrema(tubedata.Longitude)\n\n# scale LatLong and flip in y to fit into current drawing\npositions = @. Point(rescale(tubedata.Longitude, extrema_long..., -280, 280), rescale(tubedata.Latitude, extrema_lat..., 280, -280))\n\nstations = tubedata[!,:Station]\n\nfind(str) = findfirst(isequal(str), stations)\nfind(x::Int64) = stations[x]","category":"page"},{"location":"examples/#Examples","page":"Examples","title":"Examples","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"This chapter contains a few examples showing how to use drawgraph() to visualize a few graphs.","category":"page"},{"location":"examples/#Julia-type-tree","page":"Examples","title":"Julia type tree","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"This example tries to draw a type hierarchy diagram. The Buchheim layout algorithm can take a list of “vertex widths” that are normalized and then used to assign sufficient space for each label.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"
Code for this figure","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"This code generates the figure below:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"using Karnak, Graphs, NetworkLayout, InteractiveUtils\n\nadd_numbered_vertex!(g) = add_vertex!(g)\n\nfunction build_type_tree(g, T, level=0)\n add_numbered_vertex!(g)\n push!(labels, T)\n for t in subtypes(T)\n if occursin(\".\", string(t)) # only Base\n continue\n end\n build_type_tree(g, t, level + 1)\n add_edge!(g,\n findfirst(isequal(T), labels),\n findfirst(isequal(t), labels))\n end\nend\n\nfunction manhattanline(pt1, pt2)\n mp = midpoint(pt1, pt2)\n poly([pt1,\n Point(pt1.x, mp.y),\n Point(pt1.x, mp.y),\n Point(pt2.x, mp.y),\n Point(pt2.x, mp.y),\n Point(pt2.x, pt2.y),\n pt2\n ], :stroke)\n circle(pt2, 1, :fill)\nend\n\ng = DiGraph()\nlabels = []\nbuild_type_tree(g, Number)\nlabels = map(string, labels)\n\ndg = @drawsvg begin\n background(\"grey20\")\n fontsize(15)\n fontface(\"JuliaMono-Bold\")\n setline(1)\n sethue(\"gold\")\n nodesizes = Float64[]\n for l in eachindex(labels)\n tx = textextents(string(labels[l]))\n labelwidth = tx[3]\n push!(nodesizes, labelwidth)\n end\n drawgraph(g, margin=50,\n layout=Buchheim(nodesize=nodesizes),\n vertexfunction=(v, c) -> begin\n w = nodesizes[v]\n bbox = BoundingBox(box(c[v], w/2, get_fontsize()))\n # box\n @layer begin\n sethue(\"white\")\n box(bbox, 2, action=:fillpreserve)\n sethue(\"gold\")\n strokepath()\n end\n #text\n @layer begin\n sethue(\"black\")\n textfit(labels[v], bbox)\n end\n end,\n edgefunction=(n, s, d, f, t) -> manhattanline(f, t)\n )\nend 1000 550\nnothing # hide","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"
","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"dg # hide","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"This graph could do with a bit more tweaking.","category":"page"},{"location":"examples/#Julia-source-tree","page":"Examples","title":"Julia source tree","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"This example takes a Julia expression and displays it as a tree.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"using Karnak, Graphs, NetworkLayout, Colors\n\n# shamelessly stolen from Professor David Sanders' Tree !\n\nadd_numbered_vertex!(g) = (add_vertex!(g); top = nv(g))\n\nfunction walk_tree!(g, labels, ex, show_call = true)\n top_vertex = add_numbered_vertex!(g)\n where_start = 1 # which argument to start with\n if !(show_call) && ex.head == :call\n f = ex.args[1] # the function name\n push!(labels, f)\n where_start = 2 # drop \"call\" from tree\n else\n push!(labels, ex.head)\n end\n for i in where_start:length(ex.args)\n if isa(ex.args[i], Expr)\n child = walk_tree!(g, labels, ex.args[i], show_call)\n add_edge!(g, top_vertex, child)\n else\n n = add_numbered_vertex!(g)\n add_edge!(g, top_vertex, n)\n push!(labels, ex.args[i])\n end\n end\n return top_vertex\nend\n\nfunction walk_tree(ex::Expr, show_call = false)\n g = DiGraph()\n labels = Any[]\n walk_tree!(g, labels, ex, show_call)\n return (g, labels)\nend\n\n# build graph and labels\nexpression = :(2 + sin(30) * cos(15) / 2π - log(-1.02^exp(-1)))\n\ng, labels = walk_tree(expression)\n\n@drawsvg begin\n background(\"grey10\")\n sethue(\"gold\")\n drawgraph(g,\n margin=60,\n layout = buchheim,\n vertexlabels = labels,\n vertexshapes = :circle,\n vertexshapesizes = 20,\n edgefunction = (n, s, d, f, t) -> begin\n move(f)\n line(t)\n strokepath()\n end,\n vertexlabelfontsizes = 15,\n vertexlabelfontfaces = \"JuliaMono-Bold\", # probably won't be available for docs\n vertexlabeltextcolors = colorant\"black\")\n fontface(\"JuliaMono-Bold\")\n fontsize(15)\n text(string(expression), boxbottomcenter() + (0, -20), halign=:center)\nend","category":"page"},{"location":"examples/#LayeredLayouts.jl","page":"Examples","title":"LayeredLayouts.jl","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"LayeredLayouts is a package for working out how to layout graphs in a layered fashion: how to lay out directed acyclic graphs (DAGs), including trees, dependency graphs, and Sankey diagrams.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The package offers the Zarate algorithm (David Cheng Zarate). Positions are returned as x and y vectors, and should be converted to Points when passed to layout.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"using Graphs\nusing LayeredLayouts\nusing Karnak\n\ntree = SimpleDiGraph(Edge.(\n [1 => 2, 2 => 3, 4 => 5, 4 => 6, \n 4 => 7, 4 => 8, 4 => 9, 4 => 10, \n 5 => 11, 5 => 12, 8 => 15, 8 => 16, \n 8 => 17, 8 => 18, 8 => 19, 9 => 20, \n 9 => 21, 10 => 22, 12 => 13, 13 => 14, \n 23 => 4, 23 => 24, 23 => 25, 23 => 26, \n 23 => 27, 23 => 28, 23 => 29, 23 => 30, \n 23 => 31, 28 => 32, 28 => 33, 29 => 35, \n 30 => 1, 30 => 38, 31 => 40, 33 => 34, \n 35 => 36, 35 => 37, 38 => 39, 40 => 41, 41 => 42]))\n\nxs, ys, paths = solve_positions(Zarate(), tree)\n\n@draw begin\n background(\"black\")\n sethue(\"gold\")\n drawgraph(tree, \n vertexlabels = 1:nv(tree),\n edgestrokecolors = [Karnak.RGB(randomhue()...) for e in 1:ne(tree)],\n layout= boxmiddleleft() .+ \n map(pt -> Point(90pt[1], 30pt[2]), zip(xs, ys))\n )\nend 600 500","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"(Image: layered layouts)","category":"page"},{"location":"examples/#Simple-dependency-graph","page":"Examples","title":"Simple dependency graph","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"You can draw a visual interpretation of a Julia package's dependencies easily enough by going through the TOML files.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"
Code for this figure","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"This code generates the figure below:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"using Karnak\nusing Graphs\nusing NetworkLayout\nusing InteractiveUtils\nusing Colors\nusing TOML\nusing Base: active_project\n\n# mostly stolen from PkgGraph.jl by tfiers!\n\nmanifest(proj_path) = replace(proj_path, \"Project.toml\" => \"Manifest.toml\")\n\nif VERSION ≥ v\"1.7\"\n packages_in(manifest) = TOML.parsefile(manifest)[\"deps\"]\nelse\n packages_in(manifest) = TOML.parsefile(manifest)\nend\n\npackages_in_active_manifest() = packages_in(manifest(active_project()))\n\nfunction depgraph(pkgname)\n rootpkg = string(pkgname)\n packages = packages_in_active_manifest()\n if rootpkg ∉ keys(packages)\n error(\"\"\"\n The given package ($pkgname) must be installed in the active project\n (which is currently `$(active_project())`)\"\"\")\n end\n deps = Vector{Pair{String,String}}()\n add_deps_of(name) = begin\n pkg_info = only(packages[name])\n direct_deps = get(pkg_info, \"deps\", [])\n for dep in direct_deps\n push!(deps, name => dep)\n add_deps_of(dep)\n end\n end\n add_deps_of(rootpkg)\n return unique!(deps)\nend\n\nfunction build_depgraph(pkgname)\n dgraphs = depgraph(pkgname)\n pkglist = String[]\n for (f, t) in dgraphs\n if f ∉ pkglist\n push!(pkglist, f)\n end\n if t ∉ pkglist\n push!(pkglist, t)\n end\n end\n g = DiGraph(length(pkglist))\n for (f, t) in dgraphs\n if f ∈ pkglist && t ∈ pkglist\n add_edge!(g, findfirst(isequal(f), pkglist), findfirst(isequal(t), pkglist))\n end\n end\n return g, pkglist\nend\n\ng, pkgnames = build_depgraph(\"DataFrames\")\n\nd = @drawsvg begin\n background(\"grey5\")\n sethue(\"gold\")\n fontsize(10)\n fontface(\"Avenir-Black\")\n drawgraph(\n g,\n margin=40,\n layout = Stress(iterations = 100),\n edgegaps = 13,\n edgestrokeweights = 3,\n edgecurvature = 4,\n edgestrokecolors = [HSB(360rand(), 0.7, 0.8) for i in 1:ne(g)],\n vertexlabels = (vtx) -> begin \n string(pkgnames[vtx])\n end,\n vertexshapes = (v) -> begin\n tx = textextents(pkgnames[v])\n @layer begin\n setopacity(0.8)\n sethue(\"grey80\")\n box(O, 1.2tx[5], 1.5tx[4], 5, :fill)\n end\n end,\n )\nend 800 700\nnothing # hide","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"
","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"d # hide","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"There's an extended investigation of package dependencies later in this section.","category":"page"},{"location":"examples/#The-London-Tube","page":"Examples","title":"The London Tube","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"One real-world example of a small network is the London Underground, known as “the Tube”. The 250 or so stations in the network can be modelled using a simple graph.","category":"page"},{"location":"examples/#Setup","page":"Examples","title":"Setup","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"If you want to follow along, this is the setup required. The CSV file examples/tubedata-modified.csv contains the station names, latitude and longitudes, and connectivity details.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"using Karnak, Graphs, NetworkLayout, Colors\nusing DataFrames, CSV\n\n# positions are in LatLong\n\ntubedata = CSV.File(\"examples/tubedata-modified.csv\") |> DataFrame\n\namatrix = Matrix(tubedata[:, 4:270])\n\nextrema_lat = extrema(tubedata.Latitude)\nextrema_long = extrema(tubedata.Longitude)\n\n# scale LatLong and flip in y to fit into current drawing\n\npositions = @. Point(\n rescale(tubedata.Longitude, extrema_long..., -280, 280),\n rescale(tubedata.Latitude, extrema_lat..., 280, -280))\n\nstations = tubedata[!,:Station]\n\nfind(str) = findfirst(isequal(str), stations)\nfind(x::Int64) = stations[x]\n\ng = Graph(amatrix)","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The tube “map” is stored in g, as a {267, 308} undirected simple Int64 graph.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The find() functions are just a quick way to convert between station names and ID numbers:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"find(\"Waterloo\")","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"find(244)","category":"page"},{"location":"examples/#Not-a-map","page":"Examples","title":"Not a map","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"Most London residents and visitors are used to seeing the famous Tube Map:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"(Image: tube map)","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"It’s a design classic, hand-drawn by Harry Beck in 1931, and updated regularly ever since. As an electrical engineer, Beck represented the sprawling London track network as a tidy circuit board. For Beck, the important thing about the map was to show the connections, rather than the accurate geography.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Our version looks very different, but it is at least geographically more accurate, because the latitude and longitude values of the stations are passed to layout.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"@drawsvg begin\nbackground(\"grey10\")\nsethue(\"grey50\")\ndrawgraph(g,\n layout = positions,\n vertexshapes = :none,\n vertexlabeltextcolors = colorant\"white\",\n vertexlabels = find.(1:nv(g)),\n vertexlabelfontsizes = 6)\nend","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The layout algorithms - layout = spring and layout = stress - do a reasonable job, but people like to see north at the top of maps, and south at the bottom, not mixed up in any direction, like these.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"@drawsvg begin\nbackground(\"grey20\")\ntiles = Tiler(800, 400, 1, 2)\nsethue(\"white\")\n\n@layer begin\n translate(first(tiles[1]))\n drawgraph(g,\n layout=spring,\n boundingbox = BoundingBox(box(O, 400, 400)),\n vertexshapes = :none,\n vertexlabeltextcolors = colorant\"white\",\n vertexlabels = find.(1:nv(g)),\n vertexlabelfontsizes = 6\n )\nend\n\n@layer begin\n translate(first(tiles[2]))\n drawgraph(g,\n layout=stress,\n boundingbox = BoundingBox(box(O, 400, 400)),\n vertexshapes = :none,\n vertexlabeltextcolors = colorant\"white\",\n vertexlabels = find.(vertices(g)),\n vertexlabelfontsizes = 6\n )\nend\n\nend 800 400","category":"page"},{"location":"examples/#Train-terminates-here","page":"Examples","title":"Train terminates here","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"Use the degree() function to show just the station names at the end of a line: a vertex with a degree of 1 is a terminus:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"@drawsvg begin\nbackground(\"grey90\")\nsethue(\"black\")\ndrawgraph(g, layout=positions,\n vertexshapesizes = 2,\n vertexlabels = [(degree(g, n) == 1) ? find(n) : \"\"\n for n in vertices(g)],\n vertexlabeltextcolors = colorant\"blue\"\n )\nend","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"These labels show names familiar to all Tube-riders - the ones shown on the front of trains and on platform indicators. (It's unusual to visit them all, unless you're like Geoff Marshall, who holds the world record for the fastest time visiting every Tube station.)","category":"page"},{"location":"examples/#Neighbors","page":"Examples","title":"Neighbors","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"The best connected station is also one of the oldest, dating back to 1863:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"find(argmax(degree(g, 1:nv(g))))","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Its neighbors are:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"find.(neighbors(g, find(\"Baker Street\")))","category":"page"},{"location":"examples/#Centrality","page":"Examples","title":"Centrality","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"Using Graphs.jl's tools for measuring centrality, Baker Street is again at the top of the list, but Green Park (the Queen's nearest tube station), scores highly, despite not being in the top 20 busiest stations.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"@drawsvg begin\nbackground(\"grey10\")\ntranslate(0, -200)\nscale(3)\nbc = betweenness_centrality(g)\nsethue(\"gold\")\n_, maxbc = extrema(bc)\ndrawgraph(g, layout = positions,\n vertexlabels = (vtx) -> bc[vtx] > maxbc * 0.6 && string(find(vtx)),\n vertexlabeltextcolors = colorant\"cyan\",\n vertexlabelfontsizes = 6,\n vertexshapesizes = 1 .+ 10bc,\n vertexfillcolors = HSB.(rescale.(bc, 0, maximum(bc), 0, 300), 0.7, 0.8),\n )\nend 800 600","category":"page"},{"location":"examples/#Mornington-Crescent","page":"Examples","title":"Mornington Crescent","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"A route from Heathrow Terminal 5 to Mornington Crescent can be found using a_star().","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"heathrow_to_morningtoncrescent = a_star(g,\n find(\"Heathrow Terminal 5\"),\n find(\"Mornington Crescent\"))\n\n@drawsvg begin\nbackground(\"grey70\")\ntranslate(0, -100)\nscale(3)\n\nsethue(\"grey50\")\ndrawgraph(g,\n layout = positions,\n vertexshapesizes = 1)\n\nsethue(\"black\")\nfontsize(4)\ndrawgraph(g,\n layout = positions,\n vertexshapes = :none,\n edgelist = heathrow_to_morningtoncrescent,\n edgestrokeweights = 3,\n vertexlabels = (vtx) -> begin\n if vtx ∈ src.(heathrow_to_morningtoncrescent) ||\n vtx ∈ dst.(heathrow_to_morningtoncrescent)\n circle(positions[vtx], 2, :fill)\n label(find(vtx), :e, positions[vtx])\n end\n end)\nend","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The route found by a_star is:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"[find(dst(e)) for e in heathrow_to_morningtoncrescent]","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Information about the required changes - at Victoria from the Piccadilly line to the Victoria Line, and at Warren Street from the Victoria Line to the Northern Line - is not part of the graph. Routes across the Tube network, like the trains, follow the tracks (edges). The concept of “lines” (Victoria, Circle, etc) isn’t part of the graph structure, but a colorful layer imposed on top of the track network.","category":"page"},{"location":"examples/#Pandemic","page":"Examples","title":"Pandemic","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"Graphs.jl provides many functions for analysing graph networks. The diffusion() function appears to simulate the diffusion of an infection from some starting vertices and the probability of spreading.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The function returns an array of arrays, where each one contains the vertex numbers of newly \"infected\" vertices. For example, in this result:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"[[1], Int64[], [22, 15, 25], ...]","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"the first stage showed vertex 1 \"infected\"; stage two was free of incident; but on stage 3 vertices 22, 15, and 25 have become \"infected\".","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"So here, apparently, is a simulation of what might happen when an infection arrives at Heathrow Airport's Terminal 5 tube station, and starts spreading through the tube network.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"function frame(scene, framenumber, diffresult)\n background(\"black\")\n sethue(\"gold\")\n text(string(framenumber), boxbottomleft() + (10, -10))\n drawgraph(g, layout = positions, vertexshapesizes = 3)\n for k in 1:framenumber\n i = diffresult[k]\n drawgraph(\n g,\n layout = positions,\n edgelines = 0,\n vertexfunction = (v, c) -> begin\n if !isempty(i)\n if v ∈ i\n sethue(\"red\")\n circle(positions[v], 5, :fill)\n end\n end\n end,\n )\n end\nend\n\nfunction main()\n amovie = Movie(600, 600, \"diff\")\n diffresult = diffusion(g, 0.2, 200, initial_infections=[find(\"Heathrow Terminal 5\")])\n animate(amovie,\n Scene(amovie, (s, f) -> frame(s, f, diffresult), 1:length(diffresult)),\n framerate=10,\n creategif=true,\n pathname=\"/tmp/diff.gif\")\nend\nmain()","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"(Image: diffusion)","category":"page"},{"location":"examples/#The-JuliaGraphs-logo","page":"Examples","title":"The JuliaGraphs logo","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"The current logo for the Graphs.jl package was easily drawn using Karnak.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"I wanted to use the graph coloring feature (greedy_color()), but unfortunately it was too clever, managing to color the graph using only two colors instead of the four I was hoping to use.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"using Graphs\nusing Karnak\nusing Colors\n\nfunction lighten(col::Colorant, f)\n c = convert(RGB, col)\n return RGB(f * c.r, f * c.g, f * c.b)\nend\n\nfunction julia_sphere(pt::Point, w, col::Colorant;\n action = :none)\n setmesh(mesh(\n makebezierpath(box(pt, w * 1.5, w * 1.5)),\n [lighten(col, .5),\n lighten(col, 1.75),\n lighten(col, 1.25),\n lighten(col, .6)]))\n circle(pt, w, action)\nend\n\nfunction draw_edge(pt1, pt2)\n for k in 0:0.1:1\n setline(rescale(k, 0, 1, 25, 1))\n sethue(lighten(colorant\"grey50\", rescale(k, 0, 1, 0.5, 1.5)))\n setopacity(rescale(k, 0, 1, 0.5, 0.75))\n line(pt1, pt2, :stroke)\n end\nend\n\n# positions for vertices\n\nouterpts = ngonside(O, 450, 4, π/4, vertices=true)\ninnerpts = ngonside(O, 150, 4, π/2, vertices=true)\npts = vcat(outerpts, innerpts)\n\ncolors = map(c -> RGB(c...),\n [Karnak.Luxor.julia_blue, Karnak.Luxor.julia_red, Karnak.Luxor.julia_green, Karnak.Luxor.julia_purple])\n\n@drawsvg begin\n squircle(O, 294, 294, :clip, rt=0.2)\n sethue(\"black\")\n paint()\n g = SimpleGraph([\n Edge(1,2), Edge(2,3), Edge(3,4), Edge(1,4),\n Edge(5,6), Edge(6,7), Edge(7,8), Edge(5,8),\n Edge(1,5), Edge(2,6), Edge(3,7), Edge(4,8),\n ])\n\n drawgraph(Graph(g),\n layout=pts,\n vertexfunction = (v, c) -> begin\n d = distance(O, c[v])\n d > 200 ? k = 0 : k = 1\n julia_sphere(c[v],\n rescale(d, 0, 200, 52, 50), colors[mod1(v + k, 4)],\n action=:fill)\n end,\n edgefunction = (k, s, d, f, t) -> draw_edge(f, t)\n )\nend","category":"page"},{"location":"examples/#Julia-Package-Dependencies","page":"Examples","title":"Julia Package Dependencies","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"This example was originally developed by Mathieu Besançon and presented as part of the workshop: Analyzing Graphs at Scale, at JuliaCon 2020. You can watch the video on YouTube.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The most important changes since the video was made are:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"the renaming of LightGraphs.jl to Graphs.jl\nthe way to access the list of packages has changed","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The code builds a dependency graph of the connections (ie which package depends on which package) for Julia packages in the General registry.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Then it's possible draw some pictures, such as this chonky SVG file showing the dependencies for the Colors.jl package:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"(Image: package dependencies for Colors)","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Or this one, which attempts to highlight just the more connected packages in the Colors.jl dependency graph:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"(Image: package dependencies for Colors)","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Setup:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"using Graphs\nusing MetaGraphs\nusing TOML\nusing Karnak\nusing Colors","category":"page"},{"location":"examples/#Finding-the-general-registry","page":"Examples","title":"Finding the general registry","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"On my computer, the registry is in its default location. You might need to modify these lines if yours is is another location:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"path_to_general = expanduser(\"~/.julia/registries/General\")\nregistry_file = Pkg.TOML.parsefile(joinpath(path_to_general, \"Registry.toml\"))\npackages_info = registry_file[\"packages\"];","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"First we need the name and location of every package:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"# Julia <= v1.6\npkg_paths = map(values(packages_info)) do d\n (name = d[\"name\"], path = d[\"path\"])\nend","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"# Julia >= v1.7\npkg_paths = map(values(Pkg.Registry.reachable_registries()[1].pkgs)) do d\n (name = d.name, path = d.path)\nend","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The result in pkg_paths is a vector of tuples, containing the name and location of every package:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"7495-element Vector{NamedTuple{(:name, :path), Tuple{String, String}}}:\n (name = \"COSMA_jll\", path = \"C/COSMA_jll\")\n (name = \"CitableImage\", path = \"C/CitableImage\")\n (name = \"Trixi2Img\", path = \"T/Trixi2Img\")\n (name = \"ImPlot\", path = \"I/ImPlot\")","category":"page"},{"location":"examples/#Find-packages-that-depend-on-a-specific-package","page":"Examples","title":"Find packages that depend on a specific package","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"The function find_direct_deps() finds all the packages (names and locations) that directly depend on a specific named package.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"function find_direct_deps(registry_path, pkg_paths, source)\n filter(pkg_paths) do pkg_path\n deps_file = joinpath(registry_path, pkg_path.path, \"Deps.toml\")\n # some packages don't have Deps.toml file\n isfile(deps_file) && begin\n deps_struct = Pkg.TOML.parsefile(deps_file)\n any(values(deps_struct)) do d\n source in keys(d)\n end\n end\n end\nend","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"We can now find out how many packages depend on a particular package. For example, how many packages depend on Colors.jl (my favourite)?","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"find_direct_deps(path_to_general, pkg_paths, \"Colors\")","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"giving this result:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"227-element Vector{NamedTuple{(:name, :path), Tuple{String, String}}}:\n (name = \"TopologyPreprocessing\", path = \"T/TopologyPreprocessing\")\n (name = \"DynamicGrids\", path = \"D/DynamicGrids\")\n (name = \"SimpleSDMLayers\", path = \"S/SimpleSDMLayers\")\n (name = \"UnderwaterAcoustics\", path = \"U/UnderwaterAcoustics\")\n (name = \"ColorSchemeTools\", path = \"C/ColorSchemeTools\")\n (name = \"PrincipalMomentAnalysisApp\", path = \"P/PrincipalMomentAnalysisApp\")\n ⋮\n (name = \"SoilWater_ToolBox\", path = \"S/SoilWater_ToolBox\")\n (name = \"Starlight\", path = \"S/Starlight\")\n (name = \"Dojo\", path = \"D/Dojo\")\n (name = \"OpticSim\", path = \"O/OpticSim\")\n (name = \"LVServer\", path = \"L/LVServer\")","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Colors.jl has 227 packages that depend on it. When Mathieu ran this code in 2020 on \"LightGraphs\", the vector had 92 elements. Today, in 2022, for \"Graphs\", the vector has 115 elements.","category":"page"},{"location":"examples/#Build-a-directed-tree","page":"Examples","title":"Build a directed tree","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"The next function, build_tree(), will build a directed graph of the dependencies on Colors.jl. Starting at the root package (Colors) the loop finds all its dependencies, then finds the dependencies of all of those dependent packages, and continues doing this until it reaches packages that have no dependencies. These are the \"leaves\" at the tip of the tree's branches.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"function build_tree(registry_path, pkg_paths, root)\n g = MetaDiGraph()\n add_vertex!(g)\n set_prop!(g, 1, :name, root)\n i = 1\n explored_nodes = Set{String}((root,))\n while true\n i % 50 == 0 && print(i, \" \")\n current_node = get_prop(g, i, :name)\n direct_deps = find_direct_deps(registry_path, pkg_paths, current_node)\n filter!(d -> d.name ∉ explored_nodes, direct_deps)\n if isempty(direct_deps) && i >= nv(g)\n break\n end\n for ddep in direct_deps\n push!(explored_nodes, ddep.name)\n add_vertex!(g)\n set_prop!(g, nv(g), :name, ddep.name)\n add_edge!(g, i, nv(g))\n end\n i += 1\n end\n return g\nend","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"note: Note\nThis function takes some time to run - about 8 minutes for about 1400 iterations on my computer.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"g = build_tree(path_to_general, pkg_paths, \"Colors\")\n\n{1375, 1374} directed Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Notice that there are 1375 nodes, but one less edge. The Colors.jl package is the root of the tree, and doesn't connect to anything else, in this analysis.) Of course, it depends on quite a few, but that's another graph story.)","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The result is a directed metagraph. In a metagraph, as implemented by MetaGraphs.jl, it's possible to add information to vertices using set_prop() and get_prop().","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"To find all the package names in the graph that are directly connected to Colors.jl, we can broadcast get_prop() like this:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"get_prop.(Ref(g), outneighbors(g, 1), :name)\n\n227-element Vector{String}:\n \"SqState\"\n \"InteractBase\"\n \"ImageMetadata\"\n \"PlantGeom\"\n \"MicrobiomePlots\"\n \"MeshViz\"\n \"SGtSNEpi\"\n \"ColorSchemes\"\n \"CairoMakie\"\n ⋮\n \"GenomicMaps\"\n \"ModiaPlot\"\n \"Thebes\"\n \"ConstrainedDynamics\"\n \"AutomotiveVisualization\"\n \"Flux\"","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"outneighbors returns a list of all neighbors connected to vertex v by an outgoing edge.","category":"page"},{"location":"examples/#Shortest-paths-and-lengths-of-branches","page":"Examples","title":"Shortest paths and lengths of branches","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"The dijkstra_shortest_paths() function finds the paths between the designated package and all its dependencies.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The returned value is a DijkstraState object, with fields parents, dists, predecessors, pathcounts, and closest_vertices.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Looking at the dists (distances), we see that one package is very close indeed at 0.0 - that's Colors.jl itself.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"spath_result = dijkstra_shortest_paths(g, 1)\n\nspath_result.dists\n\n1375-element Vector{Float64}:\n 0.0\n 1.0\n 1.0\n 1.0\n 1.0\n 1.0\n 1.0\n ⋮\n 5.0\n 5.0\n 5.0\n 6.0\n 6.0\n 6.0\n 6.0\n 6.0\n 6.0\n 7.0\n 7.0","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Or in a barchart:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"scores = [count(==(i), spath_result.dists) for i in unique(spath_result.dists)]","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"using Karnak # hide\nscores = [1, 227, 539, 376, 161, 63, 6, 2] # hide\n@drawsvg begin # hide\n sethue(\"gold\") # hide\n barchart(scores, labels=true) # hide\nend 600 260 # hide","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The \"furthest\" packages from Colors.jl - the two seven steps away - are:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"for idx in eachindex(spath_result.dists)\n if spath_result.dists[idx] == 7\n println(get_prop(g, idx, :name))\n end\nend\n\nQuantumESPRESSOExpress\nRecommenders","category":"page"},{"location":"examples/#Computing-a-full-subgraph","page":"Examples","title":"Computing a full subgraph","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"All the package names are obtained with:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"all_packages = get_prop.(Ref(g), vertices(g), :name)\n\nVector{String}:\n \"Colors\"\n \"TopologyPreprocessing\"\n \"DynamicGrids\"\n \"SimpleSDMLayers\"\n \"UnderwaterAcoustics\"\n \"ColorSchemeTools\"\n ⋮\n \"ReservoirComputing\"\n \"TreeParzen\"\n \"GeoStatsImages\"\n \"StoppingInterface\"\n \"QuantumESPRESSO\"\n \"Recommenders\"\n \"QuantumESPRESSOExpress\"","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"These next commands build a metagraph, using the package names:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"full_graph = MetaDiGraph(length(all_packages))\n\n{1375, 0} directed Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Assigning names to the vertices:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"for v in vertices(full_graph)\n set_prop!(full_graph, v, :name, all_packages[v])\nend","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"Build the full graph:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"for v in vertices(full_graph)\n pkg_name = get_prop(full_graph, v, :name)\n dependent_packages = find_direct_deps(path_to_general, pkg_paths, pkg_name)\n for dep_pkg in dependent_packages\n pkg_idx = findfirst(==(dep_pkg.name), all_packages)\n # only packages in graph\n if pkg_idx !== nothing\n add_edge!(full_graph, pkg_idx, v)\n end\n end\nend","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"It's useful to be able to save and load this graph:","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"# using Graphs, MetaGraphs\n# save:\nsavegraph(\"examples/full_graph.lg\", full_graph))\n\n# load:\nfull_graph = loadgraph(\"examples/full_graph.lg\", MGFormat())","category":"page"},{"location":"examples/#All-roads-lead-to-home","page":"Examples","title":"All roads lead to home","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"The code in this next example draws the vertices as an impressionistic point cloud, and uses the a_star() function to find a path from some random package back to Colors.jl.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"@drawsvg begin\n background(\"black\")\n sethue(\"white\")\n fontface(\"BarlowCondensed-Bold\")\n random_package = rand(1:nv(full_graph))\n astar = a_star(full_graph, random_package, 1)\n astar_vertices = sort(unique(vcat([src(e) for e in astar], [dst(e) for e in astar])), rev=true)\n drawgraph(g,\n edgelist=astar,\n layout=spring,\n vertexlabels = (v) -> v ∈ astar_vertices[[begin, end]] && get_prop(full_graph, v, :name),\n vertexlabeltextcolors = colorant\"white\",\n vertexlabelfontsizes = 20,\n vertexlabelfontfaces = \"BarlowCondensed-Bold\",\n vertexshapesizes = .5,\n vertexstrokecolors = :none)\n textfit(string(join(get_prop.(Ref(full_graph), astar_vertices, :name), \" > \")),\n BoundingBox(box(boxbottomcenter() + (0, -30), 600, 50)))\nend 800 800","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"(Image: chain of deps)","category":"page"},{"location":"examples/#Pagerank","page":"Examples","title":"Pagerank","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"This code computes the pagerank of the graph. It returns a long list of numbers, the centrality score for each vertex.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"ranks = pagerank(full_graph)\n\n1375-element Vector{Float64}:\n 0.15339826572024867\n 0.00020384989099126913\n 0.00043081071431843264\n 0.0002471787754446367\n 0.0005504809666182096\n 0.00020384989099126913\n 0.00020384989099126913\n 0.00034105802509359976\n 0.0012284800170342895\n ⋮\n 0.00020384989099126913\n 0.00020384989099126913\n 0.00042629607921470863\n 0.00020384989099126913\n 0.0002616217369290926","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"@drawsvg begin\n background(\"black\")\n sethue(\"white\")\n fontface(\"BarlowCondensed-Bold\")\n ranks = pagerank(full_graph)\n drawgraph(g,\n edgelist = [],\n layout=spring,\n vertexshapes = :none,\n vertexlabels = (v) -> ranks[v] > 0.001 && get_prop(full_graph, v, :name),\n vertexlabelfontsizes = 500ranks,\n vertexlabeltextcolors = colorant\"white\")\nend 800 800","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"(Image: pagerank)","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The problem with this representation is one of overlapping labels. This isn't an issue we can fix easily in Karnak.","category":"page"},{"location":"examples/#Highly-ranked","page":"Examples","title":"Highly ranked","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"With some sorting, we can find the highest ranked packages in this part of the ecosystem.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"sorted_indices = sort(eachindex(ranks), by=i->ranks[i], rev=true)\n\n1375-element Vector{Int64}:\n 1\n 543\n 137\n 112\n 144\n 164\n ⋮\n 259\n 258\n 729\n 730\n 688","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"get_prop.(Ref(full_graph), sorted_indices, :name)\n\n1375-element Vector{String}:\n \"Colors\"\n \"Plots\"\n \"ImageCore\"\n \"PlotUtils\"\n \"ColorSchemes\"\n \"ColorVectorSpace\"\n ⋮\n \"TopOptMakie\"\n \"VTKDataIO\"\n \"EFTfitter\"\n \"SpmGrids\"\n \"ElectronTests\"","category":"page"},{"location":"examples/#Most-dependencies,-most-depended-on","page":"Examples","title":"Most dependencies, most depended on","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"indegree() returns the number of edges which end at a vertex. For a package, this is another way of seeing how many other packages depend on it. ","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"in_sorted_indices = sort(vertices(full_graph),\n by = i -> indegree(full_graph, i), rev = true)\n\n1375-element Vector{Int64}:\n 543\n 1\n 65\n 98\n 133\n 137\n ⋮\n 287\n 743\n 744\n 285\n 688","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"get_prop.(Ref(full_graph), in_sorted_indices, :name)\n\n1375-element Vector{String}:\n \"Plots\"\n \"Colors\"\n \"Flux\"\n \"Images\"\n \"PyPlot\"\n \"ImageCore\"\n ⋮\n \"PolaronMobility\"\n \"CineFiles\"\n \"MadNLPGraph\"\n \"MicroscopyLabels\"\n \"ElectronTests\"","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"outdegree() finds the number of edges which start at a vertex.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"out_sorted_indices = sort(vertices(full_graph),\n by = i -> outdegree(full_graph, i), rev=true)\n\n1375-element Vector{Int64}:\n 372\n 98\n 35\n 24\n 300\n 153\n ⋮\n 776\n 777\n 778\n 779\n 1","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"get_prop.(Ref(full_graph), out_sorted_indices, :name)\n\n1375-element Vector{String}:\n \"StatisticalRethinking\"\n \"Images\"\n \"Makie\"\n \"MakieGallery\"\n \"PredictMDExtra\"\n \"GLMakie\"\n ⋮\n \"MimiPAGE2020\"\n \"MimiSNEASY\"\n \"OptiMimi\"\n \"SyntheticNetworks\"\n \"Colors\"","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"ranks_betweenness = betweenness_centrality(full_graph)\n\n1375-element Vector{Float64}:\n 0.0\n 0.0\n 3.1186467511475384e-5\n 5.300816007616213e-7\n 5.830897608377834e-5\n 0.0\n ⋮\n 0.0\n 0.0\n 4.24065280609297e-6\n 0.0\n 1.0601632015232426e-6","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"sorted_indices_betweenness = sort(vertices(full_graph),\n by = i -> ranks_betweenness[i], rev=true)\n\n1375-element Vector{Int64}:\n 144\n 98\n 112\n 543\n 461\n 35\n ⋮\n 562\n 563\n 564\n 565\n 1","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"get_prop.(Ref(full_graph), sorted_indices_betweenness, :name)\n\n1375-element Vector{String}:\n \"ColorSchemes\"\n \"Images\"\n \"PlotUtils\"\n \"Plots\"\n \"ImageIO\"\n \"Makie\"\n ⋮\n \"BridgeDiffEq\"\n \"BridgeLandmarks\"\n \"FCA\"\n \"BEASTDataPrep\"\n \"Colors\"","category":"page"},{"location":"examples/#Is_cyclic","page":"Examples","title":"Is_cyclic","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"is_cyclic() returns true if the graph contains a cycle.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"is_cyclic(full_graph)\n\ntrue\n\nfor cycle in simplecycles(full_graph)\n names = get_prop.(Ref(full_graph), cycle, :name)\n @info names\nend\n\n[\"ImageCore\", \"MosaicViews\"]\n[\"Images\", \"ImageSegmentation\"]\n[\"Makie\", \"GLMakie\"]\n[\"POMDPPolicies\", \"BeliefUpdaters\", \"POMDPModels\", \"POMDPSimulators\"]\n[\"BeliefUpdaters\", \"POMDPModels\"]\n[\"BeliefUpdaters\", \"POMDPModels\", \"POMDPSimulators\"]\n[\"ReinforcementLearning\", \"ReinforcementLearningEnvironmentDiscrete\"]\n[\"Modia3D\", \"Modia\"]\n[\"RasterDataSources\", \"GeoData\"]\n[\"DSGE\", \"StateSpaceRoutines\"]","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"For that first cycle: ImageCore.jl's Project.toml file has MosaicViews.jl in its [deps] section, and MosaicViews.jl has ImageCore.jl in the [extras] section of its Project.toml file.","category":"page"},{"location":"examples/#Draw-some-graphs","page":"Examples","title":"Draw some graphs","text":"","category":"section"},{"location":"examples/","page":"Examples","title":"Examples","text":"Visualizations of graphs are sometimes (often?) better at communicating vague ideas such as complexity and shape. But it's quite difficult to render graphs as rich as these to show the connections clearly while also showing all the labels such that they're easy to read.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The solution may be to print out these graph representations and stick them on a nearby wall, although, with Julia's General Registry changing every day, it would be out of date before the glue dries.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"(Image: wall art office graph dependency)","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"The images above were made with the following code.","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"@pdf begin\n background(\"black\")\n sethue(\"gold\")\n setline(0.3)\n drawgraph(g,\n layout = stress,\n edgefunction = (k, s, d, f, t) -> begin\n @layer begin\n sl = slope(O, t)\n sethue(HSVA(rescale(sl, 0, 2π, 0, 360), 0.7, 0.7, .9))\n line(f, t, :stroke)\n end\n end,\n vertexfunction = (v, c) -> begin\n @layer begin\n t = get_prop(g, v, :name)\n te = textextents(t)\n setopacity(0.7)\n sethue(\"grey10\")\n fontsize(3)\n box(c[v], te[3]/2, te[4]/2, :fill)\n setopacity(1)\n sethue(\"white\")\n text(t, c[v], halign=:center, valign=:middle)\n end\n end)\n @info \" finish drawing\"\nend 2500 2500 \"/tmp/graph-dependencies-colors.pdf\"","category":"page"},{"location":"examples/","page":"Examples","title":"Examples","text":"using ColorSchemes\n\n@svg begin\n background(\"black\")\n maxdeg = maximum(degree(full_graph))\n drawgraph(full_graph,\n layout = spring,\n edgelines = 0,\n vertexfunction = (v, c) -> begin\n d = degree(full_graph, v)\n @layer begin\n sethue(get(ColorSchemes.darkrainbow, rescale(d, 1, maxdeg)))\n circle(c[v], rescale(d, 1, 270, 2, 20), :fill)\n end\n if d > 20\n fontsize(rescale(d, 1, maxdeg, 5, 20))\n setcolor(\"white\")\n textoutlines(all_packages[v], c[v], halign=:center, valign=:bottom, :fill)\n setline(rescale(d, 1, maxdeg, 0.25, 1))\n sethue(\"black\")\n textoutlines(all_packages[v], c[v], halign=:center, valign=:bottom, :stroke)\n end\n end)\nend 1200 1200 \"/tmp/graph-dependencies-2.svg\"","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"using Karnak, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs","category":"page"},{"location":"basics/#Graph-theory","page":"Basic graphs","title":"Graph theory","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"This section contains an introduction to basic graph theory using the Graphs.jl package, illustrated with figures made with Karnak.jl. You don't need any prior knowledge of graphs, but you should be familiar with the basics of programming in Julia.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"note: Note\nAll the figures in this manual are generated when the pages are built by Documenter.jl, and the code to draw them is included here. To run the examples, you'll need the packages Karnak, Graphs, NetworkLayout, Colors, and possibly SimpleWeightedGraphs.","category":"page"},{"location":"basics/#Graphs,-vertices,-and-edges","page":"Basic graphs","title":"Graphs, vertices, and edges","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Graph theory is used for analysing networks and the relationships between things in the network.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"
Code for this figure","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"This code generates the figure below.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"using Karnak, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs\nd = @drawsvg begin\n background(\"grey10\")\n sethue(\"yellow\")\n fontsize(12)\n g = Graph(3, 3)\n add_vertex!(g)\n add_edge!(g, 3, 4)\n drawgraph(g,\n layout=spring,\n margin=50,\n edgecurvature=0.2,\n edgegaps=30,\n edgestrokeweights=2,\n vertexlabels = (v) -> \"thing $(v)\",\n vertexshapes = :circle,\n vertexfillcolors = [RGB(Karnak.Luxor.julia_red...), RGB(Karnak.Luxor.julia_purple...), RGB(Karnak.Luxor.julia_green...), RGB(Karnak.Luxor.julia_blue...)],\n vertexshapesizes = 25,\n vertexlabeltextcolors = colorant\"white\",\n edgelabels=(n, s, d, f, t) -> begin\n θ = slope(f, t)\n fontsize(12)\n translate(midpoint(f, t))\n rotate(θ)\n sethue(\"white\")\n label(\"$s and $d\", [:n, :n, :s, :n][n], O, offset=10)\n sethue(\"orange\")\n label(\"edge $n\", [:n, :n, :s, :n][n], O, offset=-15)\n end,\n )\nend 600 350\nnothing #hide","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"
","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"d # hide","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A typical graph consists of:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"vertices, which represent the things or entities, and\nedges, which describe how two things or entities connect and relate to each other","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Vertices are also called nodes in the world of graph theory.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The Graphs.jl package provides many ways to create graphs. We'll start off with this basic approach:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"using Graphs\ng = Graph()","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The Graph() function creates a new empty graph and stores it in g. (SimpleGraph() is an alternative to Graph().) Let's add a single vertex:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"add_vertex!(g)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"We can easily add a number of new vertices:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"add_vertices!(g, 3)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The graph has four vertices now. We can refer to them as 1, 2, 3, and 4.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"We'll join some pairs of vertices with an edge:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"add_edge!(g, 1, 2) # join vertex 1 with vertex 2\nadd_edge!(g, 1, 3)\nadd_edge!(g, 2, 3)\nadd_edge!(g, 1, 4)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"In Graphs.jl, vertices are always numbered from 1 to n.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"g is now a {4, 4} undirected simple Int64 graph}.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"It's time to see some kind of visual representation of the graph we've made.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"using Karnak, Graphs\n\ng = Graph()\nadd_vertices!(g, 4)\nadd_edge!(g, 1, 2)\nadd_edge!(g, 1, 3)\nadd_edge!(g, 2, 3)\nadd_edge!(g, 1, 4)\n\n@drawsvg begin\n background(\"grey10\")\n sethue(\"orange\")\n drawgraph(g, vertexlabels = [1, 2, 3, 4])\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"This is just one of the many ways this graph can be represented visually. The locations of the vertices as drawn here are not part of the graph's definition. The default styling uses the current Luxor color, with small circles marking the vertex positions. drawgraph() places the graphics for the graph on the current Luxor drawing.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"note: Note\nSVG is used in this manual because it's a good format for line drawings, but you can also use Karnak.jl to create PDF or PNG. See the Luxor documentation for details. PNG is a good choice if the graphics get very complex, since large SVGs can tax web browsers.","category":"page"},{"location":"basics/#Undirected-and-directed-graphs","page":"Basic graphs","title":"Undirected and directed graphs","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"We'll meet two main types of graph, undirected and directed. In our undirected graph g above, vertex 1 and vertex 2 are neighbors, connected with an edge, but there's no way to specify or see a direction for that connection. For example, if the graph was modelling people making financial transactions, we couldn't tell whether the person at vertex 1 sent money to the person at vertex 2, or received money from them.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"In Graphs.jl, we can create directed graphs with DiGraph() (also SimpleDiGraph()).","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"gd = DiGraph() \nadd_vertices!(gd, 4) \nadd_edge!(gd, 1, 2) \nadd_edge!(gd, 1, 3) \nadd_edge!(gd, 2, 3) \nadd_edge!(gd, 1, 4) # vertex 1 to vertex 4 \nadd_edge!(gd, 4, 1) # vertex 4 to vertex 1 \n\n@drawsvg begin\n background(\"grey10\")\n sethue(\"thistle1\")\n drawgraph(gd, vertexlabels = [1, 2, 3, 4], edgecurvature=5)\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"note: Note\nIn this representation of our directed graph gd, we can see the direction of the edges joining the vertices. The edgecurvature keyword has been used to specify a small amount of curvature for each edge. Otherwise, with the default drawing settings, the two edges connecting vertices 1 and 4 would have been drawn overlapping, and difficult to distiguish at a glance. ","category":"page"},{"location":"basics/#Very-simple-graphs","page":"Basic graphs","title":"Very simple graphs","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Creating graphs by typing the connections manually is tedious, so we can use functions such as the Graph/SimpleGraph and DiGraph/SimpleDiGraph constructor functions:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"g = Graph(10, 5) # 10 vertices, 5 edges\n\nd1 = @drawsvg begin\n background(\"grey10\")\n sethue(\"gold\")\n drawgraph(g, vertexlabels = vertices(g))\nend 400 300\n\ngd = SimpleDiGraph(5, 3) # 5 vertices, 3, edges\n\nd2 = @drawsvg begin\n background(\"grey10\")\n setline(0.5)\n sethue(\"firebrick\")\n drawgraph(gd, vertexlabels = vertices(g))\nend 400 300\n\nhcat(d1, d2)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Neither of these two graphs is a connected graph. In a connected graph, every vertex is connected to every other via some path, a sequence of edges.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"We can define how many vertices and edges the graph should have. An undirected graph with 10 vertices can have between 0 to 45 (binomial(10, 2)) edges, a directed graph up to 90 edges.","category":"page"},{"location":"basics/#Well-known-graphs","page":"Basic graphs","title":"Well-known graphs","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Graphs have been studied for a few centuries, so there are many familiar and well-known graphs and types of graph.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"In a complete graph, every vertex is connected to every other vertex.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"N = 10\ng = complete_graph(N)\n@drawsvg begin\n background(\"grey10\")\n setline(0.5)\n sethue(\"pink\")\n drawgraph(g, vertexlabels = vertices(g))\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"There's also a complete_digraph() function.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"N = 7\ng = complete_digraph(N)\n@drawsvg begin\n background(\"grey10\")\n setline(0.5)\n sethue(\"orange\")\n drawgraph(g, vertexlabels = vertices(g), edgecurvature = 2)\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"In a bi-partite graph, every vertex belongs to one of two groups. Each vertex in the first group is connected to one or more vertices in the second group.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The next figure shows the complete version of a bi-partite graph. Each vertex is connected to every other vertex in the other group.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"N = 10\ng = complete_bipartite_graph(N, N)\nH = 300\nW = 550\n@drawsvg begin\n background(\"grey10\")\n pts = vcat(\n between.(O + (-W/2, H/2), O + (W/2, H/2), range(0, 1, length=N)),\n between.(O + (-W/2, -H/2), O + (W/2, -H/2), range(0, 1, length=N)))\n sethue(\"aquamarine\")\n drawgraph(g, vertexlabels = 1:nv(g), layout = pts, edgestrokeweights=0.5)\nend 600 400","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Here, we calculated the coordinates of the vertices and passed the resulting pts to the layout keyword.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A grid graph doesn't need much explanation:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"M = 4\nN = 5\ng = Graphs.grid([M, N])\n@drawsvg begin\n background(\"grey10\")\n setline(0.5)\n sethue(\"greenyellow\")\n drawgraph(g, vertexlabels = 1:nv(g), layout=stress)\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Star graphs (star_graph(n)) and wheel graphs (wheel_graph(n)) deliver what their names promise.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"g = star_graph(12)\n@drawsvg begin\n background(\"grey10\")\n sethue(\"orange\")\n drawgraph(g, vertexlabels=1:nv(g), layout=stress)\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"g = wheel_graph(12)\n@drawsvg begin\n background(\"grey10\")\n sethue(\"palegreen\")\n drawgraph(g, vertexlabels=1:nv(g), layout=stress)\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"There are star_digraph() and wheel_digraph() DiGraph versions too.","category":"page"},{"location":"basics/#Even-more-well-known-graphs","page":"Basic graphs","title":"Even more well-known graphs","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"There are probably as many graphs as there are possible games of chess. In both fields, the more commonly-seen patterns have been studied extensively by enthusiasts for years.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Many well-known graphs are provided by the smallgraph() function. Supply one of the available symbols, such as :bull, or :house.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"
Code for this figure","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"This code generates the figure below.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"using Karnak, Graphs, NetworkLayout\nsmallgraphs = (\n (:bull, \"bull\"),\n (:chvatal, \"chvatal\"),\n (:cubical, \"cubical\"),\n (:desargues, \"desargues\"),\n (:diamond, \"diamond\"),\n (:dodecahedral, \"dodecahedral\"),\n (:frucht, \"frucht\"),\n (:heawood, \"heawood\"),\n (:house, \"house\"),\n (:housex, \"housex\"),\n (:icosahedral, \"icosahedral\"),\n (:karate, \"karate\"),\n (:krackhardtkite, \"krackhardtkite\"),\n (:moebiuskantor, \"moebiusantor\"),\n (:octahedral, \"octahedral\"),\n (:pappus, \"pappus\"),\n (:petersen, \"petersen\"),\n (:sedgewickmaze, \"sedgewick\"),\n (:tetrahedral, \"tetrahedral\"),\n (:truncatedcube, \"truncatedcube\"),\n (:truncatedtetrahedron, \"truncatedtetrahedron\"),\n (:truncatedtetrahedron_dir, \"truncatedtetrahedron\"),\n (:tutte, \"tutte\"))\n\ncolors = [\"paleturquoise\", \"chartreuse\", \"thistle1\", \"pink\",\n\"gold\", \"wheat\", \"olivedrab1\", \"palegreen\", \"turquoise1\",\n\"lightgreen\", \"plum1\", \"plum\", \"violet\", \"hotpink\"]\n\nsmallgraphs = @drawsvg begin\n background(\"grey10\")\n sethue(\"orange\")\n ng = length(smallgraphs)\n N = convert(Int, ceil(sqrt(ng)))\n tiles = Tiler(800, 800, N, N)\n setline(0.5)\n for (pos, n) in tiles\n @layer begin\n n > ng && break\n translate(pos)\n sethue(colors[mod1(n, end)])\n bbox = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))\n g = smallgraph(first(smallgraphs[n]))\n drawgraph(g, boundingbox = bbox, vertexshapesizes = 2, layout = stress)\n sethue(\"cyan\")\n text(string(last(smallgraphs[n])), halign = :center, boxbottomcenter(bbox))\n end\n end\nend 800 800\nnothing # hide","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"
","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"smallgraphs # hide","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"It's easy to find out more about these well-known graphs online, such as on the wikipedia. Some of the graphs in this figure would benefit from individual ‘tuning’ of the various layout parameters.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Here's a larger view of the Petersen graph (named after Danish mathematician Julius Petersen, who first described it in 1898).","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\n background(\"grey10\")\n pg = smallgraph(:petersen)\n sethue(\"orange\")\n drawgraph(pg, vertexlabels = 1:nv(pg), layout = Shell(nlist=[6:10,]))\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Here's a cubical graph:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\n background(\"grey10\")\n g = smallgraph(:cubical)\n sethue(\"orange\")\n drawgraph(g, layout = spring)\nend 600 300","category":"page"},{"location":"basics/#Getting-some-information-about-the-graph","page":"Basic graphs","title":"Getting some information about the graph","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"There are lots of functions for obtaining information about a graph.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"How many vertices?","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> pg = smallgraph(:petersen)\njulia> nv(pg)\n10","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"How many edges?","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> ne(pg)\n15","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Which vertices are connected with vertex 1? - ie what are the neighbors of a particular vertex?","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> neighbors(pg, 1)\n5-element Vector{Int64}:\n 2\n 5\n 6","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"We can iterate over vertices and edges. To step through each vertex, use the vertices iterator function:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"for e in vertices(pg)\n println(e)\nend\n\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Iterating over edges with the edges iterator function will give a value of type Edge. The src() and and dst() functions applied to an edge argument return the numbers of the source and destination vertices respectively.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"for e in edges(pg)\n println(src(e), \" => \", dst(e))\nend\n\n1 => 2\n1 => 5\n1 => 6\n2 => 3\n2 => 7\n3 => 4\n3 => 8\n4 => 5\n4 => 9\n5 => 10\n6 => 8\n6 => 9\n7 => 9\n7 => 10\n8 => 10","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"To add a vertex:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"pg1 = smallgraph(:petersen)\nadd_vertex!(pg1) # returns true if successful","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"To add an edge:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"add_edge!(pg1, 10, 11) # join 10 to 11","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"It's sometimes useful to be able to see these relationships between neighbors visually. This example looks for the neighbors of vertex 10 and draws them in thick red lines:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\n\nbackground(\"grey10\")\npg = smallgraph(:petersen)\n\nvertexofinterest = 10\n\nE = Int[]\nfor (n, e) in enumerate(edges(pg))\n if dst(e) == vertexofinterest || src(e) == vertexofinterest\n push!(E, n)\n end\nend\n\nedgewts = [dst(e) ∈ E ? 4 : 1 for e in edges(pg)]\n\ndrawgraph(pg,\n vertexlabels = 1:nv(pg),\n layout = Shell(nlist=[6:10,]),\n vertexfillcolors = (v) -> ((v == vertexofinterest) ||\n v ∈ neighbors(pg, vertexofinterest)) && colorant\"rebeccapurple\",\n vertexshapesizes = [v == vertexofinterest ? 20 : 10 for v in 1:nv(pg)],\n edgestrokecolors = (e, f, t, s, d) -> (e ∈ E) ? \n colorant\"red\" : colorant\"thistle1\",\n edgestrokeweights = edgewts\n )\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Other useful functions include has_vertex(g, v) and has_edge(g, s, d).","category":"page"},{"location":"basics/#Degree","page":"Basic graphs","title":"Degree","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The degree of a vertex is the number of edges that meet at that vertex. This is shown in the figure below both in the vertex labels and also color-coded:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\nbackground(\"grey10\")\nsethue(\"gold\")\ng = smallgraph(:krackhardtkite)\n\ndrawgraph(g, layout=spring,\n vertexfillcolors = (vtx) -> distinguishable_colors(nv(g), transform=tritanopic)[degree(g, vtx)],\n vertexshapesizes = 20,\n margin=40,\n vertexlabels = (vtx) -> string(degree(g, vtx)),\n vertexlabelfontsizes = 20,\n vertexlabeltextcolors = [colorant\"black\", colorant\"white\"]\n )\nend 600 300","category":"page"},{"location":"basics/#Graphs-as-matrices","page":"Basic graphs","title":"Graphs as matrices","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Graphs can be represented as matrices - some say that graph theory is really the study of a particular set of matrices... We'll meet the adjacency matrix and the incidence matrix (and there's an array called the adjacency list too).","category":"page"},{"location":"basics/#Adjacency-matrix","page":"Basic graphs","title":"Adjacency matrix","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A graph G with n vertices can be represented by a square matrix A with n rows and columns. The matrix consists of 1s and 0s. A value of 1 means that there's a connection between two vertices with those indices. For example, if vertex 5 is connected with vertex 4, then A[5, 4] contains 1. The adjacency_matrix() function displays the matrix for a graph:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> adjacency_matrix(pg)\n10×10 SparseArrays.SparseMatrixCSC{Int64, Int64} with 30 stored entries:\n ⋅ 1 ⋅ ⋅ 1 1 ⋅ ⋅ ⋅ ⋅\n 1 ⋅ 1 ⋅ ⋅ ⋅ 1 ⋅ ⋅ ⋅\n ⋅ 1 ⋅ 1 ⋅ ⋅ ⋅ 1 ⋅ ⋅\n ⋅ ⋅ 1 ⋅ 1 ⋅ ⋅ ⋅ 1 ⋅\n 1 ⋅ ⋅ 1 ⋅ ⋅ ⋅ ⋅ ⋅ 1\n 1 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 1 1 ⋅\n ⋅ 1 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 1 1\n ⋅ ⋅ 1 ⋅ ⋅ 1 ⋅ ⋅ ⋅ 1\n ⋅ ⋅ ⋅ 1 ⋅ 1 1 ⋅ ⋅ ⋅\n ⋅ ⋅ ⋅ ⋅ 1 ⋅ 1 1 ⋅ ⋅","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"(This one:)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\nbackground(\"grey10\")\npg = smallgraph(:petersen)\nsethue(\"orange\")\ndrawgraph(pg, vertexlabels = 1:nv(pg), layout = Shell(nlist=[6:10,]))\nend 600 400","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Notice that this matrix, for a Petersen graph, is symmetrical about the top-left/bottom-right diagonal, because, in an undirected graph, a connection from vertex 4 to vertex 5 is also a connection from vertex 5 to 4. The vertical sum of each column (and the horizontal sum of each row) is the number of edges shared by that vertex,","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"We can provide an adjacency matrix to the graph construction functions to create a graph. For example, this matrix recreates the House graph (aka smallgraph(:house)) from its adjacency matrix:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"m = [0 1 1 0 0;\n 1 0 0 1 0;\n 1 0 0 1 1;\n 0 1 1 0 1;\n 0 0 1 1 0]\n\n@drawsvg begin\n background(\"grey10\")\n hg = Graph(m)\n sethue(\"palegreen\")\n drawgraph(hg, vertexlabels=1:nv(hg), layout=stress)\nend 800 400","category":"page"},{"location":"basics/#Incidence-matrix","page":"Basic graphs","title":"Incidence matrix","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"We can also represent a graph G with a matrix M consisting of 1s, -1s, and 0s, where the rows are vertices and the columns are edges. M is called an incidence matrix.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> incidence_matrix(pg)\n10×15 SparseArrays.SparseMatrixCSC{Int64, Int64} with 30 stored entries:\n 1 1 1 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅\n 1 ⋅ ⋅ 1 1 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅\n ⋅ ⋅ ⋅ 1 ⋅ 1 1 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅\n ⋅ ⋅ ⋅ ⋅ ⋅ 1 ⋅ 1 1 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅\n ⋅ 1 ⋅ ⋅ ⋅ ⋅ ⋅ 1 ⋅ 1 ⋅ ⋅ ⋅ ⋅ ⋅\n ⋅ ⋅ 1 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 1 1 ⋅ ⋅ ⋅\n ⋅ ⋅ ⋅ ⋅ 1 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 1 1 ⋅\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 1 ⋅ ⋅ ⋅ 1 ⋅ ⋅ ⋅ 1\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 1 ⋅ ⋅ 1 1 ⋅ ⋅\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 1 ⋅ ⋅ ⋅ 1 1","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The first column of this matrix is an edge between vertex 1 and vertex 2, whereas the first column of the adjacency matrix defines the vertices that are connected with vertex 1.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"For a directed graph:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> dg = DiGraph(3, 3)\n\njulia> incidence_matrix(dg)\n\n3×3 SparseArrays.SparseMatrixCSC{Int64, Int64} with 6 stored entries:\n -1 1 1\n 1 -1 ⋅\n ⋅ ⋅ -1","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Here, negative values are used, so 1 and -1 are used to indicate directions. The first column,-1 1 0, specifies that the first edge goes from 2 to 1.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"An incidence matrix is another useful way of quickly defining a graph. That's why we can pass an incidence matrix to the Graph() and DiGraph() functions to create new graphs.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"For example, here's a familiar image:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"g = [0 1 1;\n 1 0 1;\n 1 1 0]\n\n@drawsvg begin\nbackground(\"grey20\")\ndrawgraph(Graph(g),\n layout = ngon(O + (0, 20), 80, 3, π/6, vertices=true),\n vertexshapes = :circle,\n vertexshapesizes = 40,\n edgestrokeweights = 15,\n edgestrokecolors = colorant\"gold\",\n vertexfillcolors = [colorant\"#CB3C33\",\n colorant\"#389826\", colorant\"#9558B2\"])\nend 600 250","category":"page"},{"location":"basics/#Adjacency-list","page":"Basic graphs","title":"Adjacency list","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Another way of representing a graph is by using an array of arrays in the form of an adjacency list. This array has n elements to represent a graph with n vertices. The first element of the array is an array of those vertex numbers that are connected with vertex 1, and similarly for elements 2 to n.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"For example, this adjacency list:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"[\n [2, 5, 7], # row 1: vertex 1 connects with 2, 5, and 7\n [1, 3, 9],\n [2, 4, 11],\n [3, 5, 13],\n [1, 4, 15],\n [7, 15, 20],\n [1, 6, 8],\n [7, 9, 16],\n [2, 8, 10],\n [9, 11, 17],\n [3, 10, 12],\n [11, 13, 18],\n [4, 12, 14],\n [13, 15, 19],\n [5, 6, 14],\n [8, 17, 20],\n [10, 16, 18],\n [12, 17, 19],\n [14, 18, 20],\n [6, 16, 19]\n]","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"defines a graph with 20 vertices, such that vertex 1 has edges joining it to vertices 2, 5, and 7, and so on for each element of the whole array.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The Graph() function accepts an adjacency list, preceded by the number of edges.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"g = Graph(30, [\n [2, 5, 7],\n [1, 3, 9],\n [2, 4, 11],\n [3, 5, 13],\n [1, 4, 15],\n [7, 15, 20],\n [1, 6, 8],\n [7, 9, 16],\n [2, 8, 10],\n [9, 11, 17],\n [3, 10, 12],\n [11, 13, 18],\n [4, 12, 14],\n [13, 15, 19],\n [5, 6, 14],\n [8, 17, 20],\n [10, 16, 18],\n [12, 17, 19],\n [14, 18, 20],\n [6, 16, 19]])\n\n@drawsvg begin\n background(\"grey10\")\n sethue(\"orange\")\n drawgraph(g, layout=stress)\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Graphs.jl uses adjacency lists internally. If we peek inside a graph and look at its fields, we'll see something like this, for a Directed Graph:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"fieldnames(DiGraph)\n(:ne, :fadjlist, :badjlist)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Here, fadjlist is a forward adjacency list which defines how each vertex connects to other vertices, and badjlist is a backward adjacency list which defines how each vertex receives connections from other vertices.","category":"page"},{"location":"basics/#Paths,-cycles,-routes,-and-traversals","page":"Basic graphs","title":"Paths, cycles, routes, and traversals","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Graphs help us answer questions about connectivity and relationships. For example, think of a railway network as a graph, with the stations as vertices, and the tracks as edges. We want to ask questions such as \"Can we get from A to B by train?\", which therefore becomes the question \"Are there sufficient edges between vertices in the graph such that we can find a continuous path that joins them?\".","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Graphs.jl has many features for traversing graphs and finding paths. We can look at just a few of them here.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"note: Note\nThe study of graphs uses a lot of terminology, and many of the terms also have informal and familiar meanings. Usually the informal meanings are reasonably accurate and appropriate, but note that the words also have more precise definitions in the literature.","category":"page"},{"location":"basics/#Paths-and-cycles","page":"Basic graphs","title":"Paths and cycles","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A path is a sequence of edges between some start vertex and some end vertex, such that a continuous unbroken route is available.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A cycle is a path where the start and end vertices are the same - a closed path. Other vertices in the path occur just once. These are also called circuits in some sources.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The cycle_basis() function finds all the cycles in a graph (at least, it finds a basis of an undirected graph, which is a minimal collection of cycles that can be added to make all the cycles). The result is an array of arrays of vertex numbers.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> pg = smallgraph(:petersen)\njulia> cycles = cycle_basis(pg)\n6-element Vector{Vector{Int64}}:\n [1, 6, 8, 10, 5]\n [4, 9, 6, 8, 10, 5]\n [7, 9, 6, 8, 10]\n [4, 3, 8, 10, 5]\n [1, 2, 3, 8, 10, 5]\n [7, 2, 3, 8, 10]","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\n background(\"grey10\")\n sethue(\"magenta\")\n pg = smallgraph(:petersen)\n\n cycles = cycle_basis(pg)\n table = Table(2, length(cycles) ÷ 2, 220, 160)\n\n for (n, cycle) in enumerate(cycles)\n cycleedges = [Edge(cycle[i], cycle[mod1(i + 1, end)]) for i in 1:length(cycle)]\n @layer begin\n translate(table[n])\n bb = BoundingBox(box(O, table.colwidths[1], table.rowheights[1]))\n sethue(\"grey60\")\n drawgraph(pg,\n layout = stress,\n vertexshapes = :none,\n boundingbox = bb)\n sethue(HSB(rescale(n, 1, length(cycles) + 1, 0, 360), 0.8, 0.6))\n drawgraph(pg,\n layout = stress,\n boundingbox = bb,\n vertexshapes = (v) -> begin\n v ∈ cycle && box(O, 12, 12, :fill)\n end,\n vertexshapesizes = 30,\n vertexlabels = (v) -> v ∈ cycle && string(v),\n edgestrokeweights = 5,\n edgelist = cycleedges,\n )\n end\n end\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"For digraphs, you can use simplecycles() to find every cycle.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"This example shows every cycle of a complete digraph {4, 12}.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"\nsdg = complete_digraph(4)\n\ncycles = simplecycles(sdg)\n\n@drawsvg begin\n background(\"grey10\")\n sethue(\"orange\")\n tiles = Tiler(600, 600, 4, 4)\n for (pos, n) in tiles\n cycle = cycles[n]\n cycle_path = [Edge(cycle[i], cycle[mod1(i + 1, end)]) for i in 1:length(cycle)]\n @layer begin\n translate(pos)\n tilebox = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))\n text(string(cycle), halign=:center, boxbottomcenter(tilebox))\n sethue(HSV(rand(0:360), 0.6, 0.9))\n drawgraph(sdg, layout=squaregrid,\n boundingbox = tilebox,\n edgelist = cycle_path,\n vertexlabels = (v) -> v ∈ cycle ? string(v) : \"\",\n vertexlabeltextcolors= colorant\"white\",\n vertexlabeloffsetdistances = 10,\n vertexlabeloffsetangles = [π, 0],\n vertexshapes = :none,\n edgelines = (edgenumber, edgesrc, edgedest, from, to) ->\n begin\n newpath()\n arc2sagitta(from, to, 5, :stroke)\n end)\n end\n end\nend 600 600","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"There can be a lot of cycles in a graph. For example, a complete_digraph(10) has 1,110,073 cycles. Graphs.jl has tools for working with cycles efficiently.","category":"page"},{"location":"basics/#Visiting-every-vertex-once","page":"Basic graphs","title":"Visiting every vertex once","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"It's useful to know how to visit every vertex just once.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"You can do this for DiGraphs if you can find a cycle that's the same length as the graph. However, there might be a lot of possibilities, since there could be many such cycles. This example uses simplecycles() to find all of them (there are over 400 for this graph), so only the first one with the right length is used.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\nbackground(\"grey10\")\ng = complete_digraph(6)\n\ntour = first(filter(cycle -> length(cycle) == nv(g), simplecycles(g)))\n\nvertexlist_to_edgelist(vlist) = [Edge(p[1] => p[2]) for p in zip(vlist, circshift(vlist, -1))]\n\nsethue(\"grey50\")\n\ndrawgraph(g, layout = spring)\n\nsethue(\"orange\")\ndrawgraph(g, layout = spring,\n edgelist = vertexlist_to_edgelist(tour),\n edgestrokeweights = 10,\n )\nend 800 400","category":"page"},{"location":"basics/#Trees","page":"Basic graphs","title":"Trees","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A tree is a connected graph with no cycles. A rooted tree is a tree graph in which one vertex has been designated as the root, or origin. Rooted tree graphs can be drawn using the Buchheim layout algorithm (named after the developer, Christoph Buchheim).","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"In the next example, we start with a binary tree, in which each vertex is connected to no more than two others - but we'll add one more vertex so that it's no longer a binary tree. ","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"
Code for this figure","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"This code generates the figure below.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"using Karnak, Graphs, NetworkLayout, Colors\n\nd = @drawsvg begin\n background(\"grey10\")\n sethue(\"purple\")\n fontsize(12)\n\n bt = binary_tree(4)\n g = SimpleDiGraph(collect(edges(bt)))\n\n # add another vertex\n add_vertex!(g)\n add_edge!(g, 7, 16)\n\n drawgraph(g,\n layout=buchheim,\n margin=20,\n edgestrokeweights=2,\n edgegaps=12, \n vertexlabels = 1:nv(g),\n vertexshapes=:circle,\n vertexfillcolors=[RGB(Karnak.Luxor.julia_red...), \n RGB(Karnak.Luxor.julia_purple...), \n RGB(Karnak.Luxor.julia_green...), \n RGB(Karnak.Luxor.julia_blue...)],\n vertexshapesizes=12,\n vertexlabeltextcolors=colorant\"white\",\n )\nend 600 350\nnothing # hide","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"
","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"d # hide","category":"page"},{"location":"basics/#Shortest-paths:-the-A*-algorithm","page":"Basic graphs","title":"Shortest paths: the A* algorithm","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"One way to find the shortest path between two vertices is to use the a_star() function, and provide the graph, the start vertex, and the end vertex. The function returns a list of edges.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"(The unusual name of this function is just a reference to the name of the algorithm, A*, first published in 1968 by Peter Hart, Nils Nilsson, and Bertram Raphael.)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The function finds the shortest path and returns an array of edges that define the path.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\nbackground(\"grey10\")\nsethue(\"lemonchiffon\")\ng = binary_tree(5)\ndirg = SimpleDiGraph(collect(edges(g)))\nastar = a_star(dirg, 1, 21)\ndrawgraph(dirg, layout=buchheim,\n vertexlabels = 1:nv(g),\n vertexshapes = (vtx) -> box(O, 30, 20, :fill),\n vertexlabelfontsizes = 16,\n edgegaps=20,\n edgestrokeweights= 5,\n edgestrokecolors = (edgenumber, s, d, f, t) -> (s ∈ src.(astar) && d ∈ dst.(astar)) ?\n colorant\"gold\" : colorant\"grey40\",\n vertexfillcolors = (vtx) -> (vtx ∈ src.(astar) ||\n vtx ∈ dst.(astar)) && colorant\"gold\"\n )\nend 800 400","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"One use for the A* algorithm is for finding paths through mazes. In the next example, a grid graph is subjected to some random vandalism, removing quite a few edges. Then a route through the maze was easily found by a_star().","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"using Random\nRandom.seed!(6)\n\n@drawsvg begin\nbackground(\"grey10\")\n\nW, H = 20, 20\ng = grid((W, H))\n\n# vandalize the grid:\nlet\n c = 0\n while c < 200\n v = rand(1:W*H)\n rem_edge!(g, v, [v-1, v+1, v-W, v+H][rand(1:end)]) && (c += 1)\n end\nend\n\n# find a route\nastar = a_star(g, 1, W * H)\n\nsethue(\"grey60\")\nsetlinecap(\"square\")\ndrawgraph(g,\n vertexshapesizes = 0,\n layout=squaregrid,\n edgestrokeweights = 12)\n\nsethue(\"red\")\ndrawgraph(g,\n vertexshapes = :none,\n layout=squaregrid,\n edgelist=astar,\n edgegaps=0,\n edgestrokeweights=5)\n\nend 600 600","category":"page"},{"location":"basics/#Shortest-paths:-Dijkstra's-algorithm","page":"Basic graphs","title":"Shortest paths: Dijkstra's algorithm","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A well-known algorithm for finding the shortest path between graph vertices is named for its creator, Edsger W. Dijkstra. He wrote about his inspiration:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"\"I designed it in about twenty minutes. One morning I was shopping in Amsterdam with my young fiancée, and tired, we sat down on the café terrace to drink a cup of coffee and I was just thinking about whether I could do this, and I then designed the algorithm for the shortest path.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"In Graphs.jl, this algorithm is available with dijkstra_shortest_paths(). After running this function, the result is an object with various pieces of information about all the shortest paths: this is a DijkstraState object, with fields parents, dists, predecessors, pathcounts, closest_vertices. There's an enumerate_paths() function which can extract the vertex information for a specific path from the DijkstraState object.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The following code animates the results of examining a grid graph using Dijkstra's algorithm. The shortest paths between the first vertex and every other vertex are drawn in a series of frames, one by one.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"function frame(scene, framenumber, g)\n framenumber == 1 && return\n\n # run Dijkstra's algorithm\n\n ds = dijkstra_shortest_paths(g, 1, allpaths=true, trackvertices=true)\n\n # for which destination vertex?\n destv = framenumber\n\n # get the vertices on the path\n _, ep = enumerate_paths(ds, [1, destv])\n\n # convert to edges\n vlist = [Edge(p[1] => p[2]) for p in zip(ep, circshift(ep, -1))]\n\n # draw background graph\n background(\"grey10\")\n sethue(\"grey40\")\n drawgraph(g, layout=squaregrid, vertexshapes=:none)\n path = Point[]\n\n # draw shortest path\n drawgraph(g,\n layout=squaregrid,\n vertexlabelfontsizes=30,\n vertexshapes=:none,\n edgelist = vlist[1:end-1],\n edgefunction = (n, s, d, f, t) -> begin\n push!(path, f)\n push!(path, t)\n end)\n sethue(\"orange\")\n setline(10)\n setlinejoin(\"bevel\")\n poly(path, :stroke, close=false)\n sethue(\"red\")\n circle.(path[[1, end]], 10, :fill)\nend\n\nfunction main()\n g = grid((20, 20))\n amovie = Movie(600, 600, \"dijkstra\")\n animate(amovie,\n Scene(amovie, (s, f) -> frame(s, f, g), 1:400),\n framerate=10)\nend\n\nmain()","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"(Image: animated dijkstra)","category":"page"},{"location":"basics/#Weighted-graphs","page":"Basic graphs","title":"Weighted graphs","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Up to now, our graphs have been like maps of train or metro networks, focusing on connections, rather than on, say, distances and journey times. Edges have been effectively always one unit long, and shortest path calculations can't take into account the true length of edges. But some systems modelled by graphs require this knowledge, which is where weighted graphs are useful.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A weighted graph, which can be either undirected or directed, has numeric values assigned to each edge. This value is called the \"weight\" of an edge, and it's usually a positive integer, but can be anything.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"The word \"weight\" is interpreted according to context and the nature of the system modelled by the graph. For example, a higher value for the weight of an edge could mean a longer journey time or more expensive fuel costs, for map-style graphs, but it could signify high attraction levels for a social network graph.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"To use weighted graphs, we must install a separate package, SimpleWeightedGraphs.jl, and load it alongside Graphs.jl.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"To create a new weighted graph:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"using Graphs, SimpleWeightedGraphs\n\njulia> g = SimpleWeightedGraph()","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"This creates a new, empty, weighted, undirected, graph. Or we can pass an existing graph to this function:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> wg = SimpleWeightedGraph(Graph(6, 15), 4.0)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"To get the weights of the edge between two vertices, use get_weight():","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> get_weight(wg, 1, 2)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"To change the weight of the edge between two vertices, use add_edge():","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> add_edge!(graph, from, to, weight)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"You can provide a list of weights to the edgelabels keyword, which can accept a vector of edge weights.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"g = SimpleWeightedGraph(3)\nadd_edge!(g, 1, 2, 12)\nadd_edge!(g, 1, 3, 13)\nadd_edge!(g, 2, 3, 23)\n\nedgeweights = [g.weights[e.src, e.dst] for e in edges(g)]\n\n@drawsvg begin\n background(\"black\")\n sethue(\"magenta\")\n fontsize(20)\n drawgraph(\n g,\n vertexshapesizes = 15,\n vertexlabels = 1:nv(g),\n edgelabelfontsizes = 40,\n edgelabels = edgeweights\n )\nend","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"In this next example, we set the default weight of every edge to 4.0 when the graph is created, and changed just one edge's weight:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"wg = SimpleWeightedGraph(Graph(6, 15), 4.0)\nadd_edge!(wg, 1, 2, 10_000_000)\n@drawsvg begin\nbackground(\"grey10\")\nsethue(\"gold\")\ndrawgraph(wg, edgecurvature=10,\n vertexlabels = 1:nv(wg),\n edgelabels = (k, s, d, f, t) -> begin\n weight = get_weight(wg, s, d)\n if weight > 10\n sethue(\"white\")\n box(midpoint(f, t), 30, 16, :fill)\n setcolor(\"magenta\")\n else\n sethue(HSB(rescale(k, 1, ne(wg), 0, 360), 0.7, 0.6))\n end\n text(string(weight), midpoint(f,t), halign=:center, valign=:middle)\n end,\n edgegaps = 10\n )\nend 600 300","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A look at the graph's adjacency matrix shows that the weights have replaced the 1s:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"julia> adjacency_matrix(wg)\n6×6 SparseArrays.SparseMatrixCSC{Float64, Int64} with 30 stored entries:\n ⋅ 1.0e7 4.0 4.0 4.0 4.0\n 1.0e7 ⋅ 4.0 4.0 4.0 4.0\n 4.0 4.0 ⋅ 4.0 4.0 4.0\n 4.0 4.0 4.0 ⋅ 4.0 4.0\n 4.0 4.0 4.0 4.0 ⋅ 4.0\n 4.0 4.0 4.0 4.0 4.0 ⋅","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"For a directed graph, each edge can have two weights, one from src to dst, the other from dst to src.","category":"page"},{"location":"basics/#Spanning-trees","page":"Basic graphs","title":"Spanning trees","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A spanning tree is a set of edges that connect all the vertices of a graph together, without forming any cycles. There are various functions for finding spanning trees in Graphs.jl, including algorithms by Otakar Borůvka (boruvka_mst()), Joseph Kruskal (kruskal_mst()), and Robert Prim (prim_mst()). (Immortality can be attained by inventing a new graph-spanning algorithm.)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"When used on a weighted graph, these functions find the minimum possible tree - the tree that scores the lowest when the weights of the edges are added up. (Some of these functions can also find the highest-scoring trees.)","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\nbackground(\"grey10\")\n\ng = SimpleWeightedGraph(smallgraph(:octahedral))\n\nfor e in edges(g)\n add_edge!(g, src(e), dst(e), rand(1:10))\nend\nadd_edge!(g, 1, 4, 200)\n\nsethue(\"grey50\")\ndrawgraph(g, layout=spring, vertexshapesizes = 20, edgestrokeweights = 3,\n edgelabels = (k, src, dest, f, t) ->\n (sethue(\"cyan\"); label(string(get_weight(g, src, dest)), :nw, midpoint(f, t))))\n\nmst, weights = boruvka_mst(g)\nsethue(\"gold\")\ndrawgraph(g, vertexshapes = :none, layout=spring, edgelist = mst, edgestrokeweights = 15)\n\nmst = kruskal_mst(g)\nsethue(\"green\")\ndrawgraph(g, layout=spring, vertexshapes = :none, edgelist = mst, edgestrokeweights = 10)\n\nmst = prim_mst(g)\nsethue(\"red\")\ndrawgraph(g, layout=spring, vertexshapes = :none, edgelist = mst, edgestrokeweights = 3)\n\nsethue(\"black\")\ndrawgraph(g, layout=spring, vertexlabels = 1:nv(g), edgelines=:none)\n\nend 600 400","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Notice how all the spanning trees found have avoided the edge joining 1 and 4, which has a weight of 200.0.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Next, here's boruka_mst() looking for the maximum spanning tree; Edge(1 => 4) is always included every time the function runs.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"using Karnak, Luxor, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs\n\n@drawsvg begin\n background(\"grey10\")\n tiles = Tiler(600, 600, 2, 2)\n let\n g = SimpleWeightedGraph(smallgraph(:octahedral))\n for (pos, n) in tiles\n for e in edges(g)\n add_edge!(g, src(e), dst(e), rand(1:10))\n end\n add_edge!(g, 1, 4, 200)\n @layer begin\n translate(pos)\n bb = BoundingBox(box(O, tiles.tilewidth, tiles.tileheight))\n sethue(\"grey50\")\n mst, weights = boruvka_mst(g, minimize=false)\n drawgraph(g,\n boundingbox=bb,\n layout=spring,\n vertexshapesizes=10,\n edgestrokeweights=3,\n edgelabels=(k, src, dest, f, t) -> begin\n sethue(\"orange\")\n label(string(get_weight(g, src, dest)), :nw, midpoint(f, t))\n end,)\n\n sethue(\"gold\")\n drawgraph(g,\n boundingbox=bb,\n layout=spring,\n vertexshapes=:none,\n edgelist=mst,\n edgestrokeweights=5,)\n\n drawgraph(\n g,\n boundingbox=bb,\n layout=spring,\n vertexlabels=1:nv(g),\n vertexshapes=:circle,\n vertexshapesizes=7.5,\n edgegaps=0,\n edgelines=:none,)\n end\n end\n end\nend 600 600","category":"page"},{"location":"basics/#Centrality","page":"Basic graphs","title":"Centrality","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Centrality is a measure of the importance of vertices in a graph. It might describe the importance of \"influencers\" in social networks, or the importance of certain key positions in a transport network. Graphs.jl offers a number of ways to measure the centrality of vertices in a graph. Refer to the manual's \"Centrality Measures\" section for details.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Here's betweenness_centrality() applied to the Karate Club network. The vertices are sized and colored using the vector of values returned in bc.","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:karate)\nbc = betweenness_centrality(g)\nsethue(\"gold\")\ndrawgraph(g, layout = spring,\n vertexlabels = string.(round.(100bc, digits = 1)),\n vertexshapesizes = 15 .+ 30bc,\n vertexfillcolors = HSB.(rescale.(bc, 0, maximum(bc), 150, 360), 0.7, 0.8),\n )\nend 800 600","category":"page"},{"location":"basics/#Graph-coloring","page":"Basic graphs","title":"Graph coloring","text":"","category":"section"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"A simple graph coloring is a way of coloring the vertices of a graph so that no two adjacent vertices are the same color. The greedy_color() function finds a random graph coloring for a graph. The total number of colors, and an array of integers representing the colors, are returned in fields num_colors and colors (as integers between 1 and n).","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"In the following example, only three colors are needed such that no edge connects two vertices with the same color. Colors.jl has a distinguishable_colors() function that finds n colors which look sufficiently different:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\n background(\"grey10\")\n g = smallgraph(:octahedral)\n gc = greedy_color(g)\n dcolors = distinguishable_colors(gc.num_colors)\n sethue(\"gold\")\n drawgraph(g, layout=stress,\n vertexfillcolors = dcolors[gc.colors],\n vertexshapesizes = 30)\nend 800 400","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"Here gc.num_colors is 3. However, a complete graph might require many colors because there are so many connected vertices. For example, gc.num_colors is now 20:","category":"page"},{"location":"basics/","page":"Basic graphs","title":"Basic graphs","text":"@drawsvg begin\n background(\"grey10\")\n g = complete_graph(20)\n gc = greedy_color(g)\n dcolors = distinguishable_colors(gc.num_colors)\n sethue(\"grey50\")\n drawgraph(g, layout=stress,\n vertexfillcolors = dcolors[gc.colors],\n vertexshapesizes = 20)\nend 600 300","category":"page"},{"location":"reference/api/","page":"Function reference","title":"Function reference","text":"Modules = [Karnak]\nOrder = [:macro, :function, :type, :constant, ]","category":"page"},{"location":"reference/api/#Karnak.drawgraph-Tuple{Graphs.AbstractGraph}","page":"Function reference","title":"Karnak.drawgraph","text":"Draw a graph g using coordinates in layout to fit in a Luxor boundingbox (defaulting to the current drawing's extent).\n\nReturns a vector of Points, the location of the graph vertices as drawn.\n\nKeyword arguments\n\nboundingbox::BoundingBox graph fits inside this BB\nlayout Point[] or function\nmargin default 30\nedgelist draw only these edges\n\nvertexfunction(vtx, coords) -> draw vertices\nedgefunction(edgenumber, edgesrc, edgedest, from, to) -> draw edges\n\nlayout\n\nthe layout method or coordinates to be used. Examples:\n\nlayout = squaregrid\n\nlayout = shell\n\nlayout = vcat(\n between.(O + (-W/2, H), O + (W/2, H), range(0, 1, length=N)),\n between.(O + (-W/2, -H), O + (W/2, -H), range(0, 1, length=N)))\n\nlayout = stress\n\nlayout = (g) -> spectral(adjacency_matrix(g), dim=2)\n\nlayout = shell ∘ adjacency_matrix\n\nlayout = (g) -> sfdp(g, Ptype=Float64, dim=2, tol=0.05, C=0.4, K=2)\n\nlayout = Shell(nlist=[6:10,]) # inner shell for vertices 6 to 10\n\nlayout = squaregrid\n\nthe_positions = [(pt.x, pt.y) for pt in randompointarray(BoundingBox(), 50)[1:nv(G)]]\nthe_weights = rand(1:20, nv(G), nv(G))\nlayout=Stress(initialpos = the_positions,\n iterations = 30,\n weights = the_weights)\n\nlayout = Stress(iterations = 100, weights = M) # M is matrix of weights\n\nlayout = Spring(iterations = 200, initialtemp = 2.5)\n\nRefer to the NetworkLayout.jl documentation for more.\n\nExtended help\n\nAll keywords:\n\n boundingbox BoundingBox \n margin Number \n layout Vector{Point} \n function from NetworkLayout.jl \n f(g::Graph) \n edgefunction f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Poi\n vertexfunction f(vtx::Int, coordinates::Vector{Point}) \n edgecurvature Float64 \n edgedashpatterns Vector{Vector}[number] \n Vector{Number} \n edgegaps Vector \n Range \n Real \n edgelabelcolors Vector{Colorant} \n Colorant \n edgelabelfontfaces Vector{Strings}[edgenumber] \n String \n :none \n edgelabelfontsizes Vector{Number} \n Number \n edgelabelrotations Vector{angles} \n angle::Float64 \n f(edgenumber, edges, edgedest, from, to) \n edgelabels Vector \n range \n Dict{Int, Int} \n f(edgenumber, edgesrc, edgedest, from::Point, to::Point)\n - this function should draw the required text \n :none \n edgelines Vector{Int} \n range \n Int \n f(edgenumber, edgesrc, edgedest, from::Point, to::Point) \n edgelist Graphs.EdgeIterator \n edgestrokecolors Vector{Colorant}[edge::Int] \n Colorant \n f(edgenumber, edgesrc, edgedest, from::Point, to::Point) \n edgestrokeweights Vector{Number}[vtx] \n range \n Real \n f(edgenumber, edgesrc, edgedest, from::Point, to::Point) \n vertexfillcolors Vector{Colorant} \n Colorant \n :none \n f(vtx::Int) \n vertexlabelfontfaces Vector{Strings} \n String \n vertexlabelfontsizes Vector \n range \n Real \n :none\n f(vtx::Int, coord::Point[])\n function should return a numeric value for fontsize\n vertexlabeloffsetangles Vector \n Range \n Real \n vertexlabeloffsetdistances Vector \n range \n Real \n vertexlabelrotations Vector \n range \n Real \n :none \n vertexlabels Vector{String} \n String \n range[vtx::Int] \n :none \n f(vtx::Int)\n this function should return a string \n vertexlabeltextcolors Vector{Colorant} \n Colorant\n f(vtx::Int) \n :none \n vertexshaperotations f(vtx::Int) \n angle::Float64 \n vertexshapes Vector of :circle :square :none \n range[vtx] \n :circle :square :none \n f(vtx::Int) \n vertexshapesizes Vector{Real} \n range \n Real \n :none \n f(vtx::Int) \n vertexstrokecolors Vector \n Colorant \n :none \n f(vtx::Int) \n vertexstrokeweights Vector \n range \n :none \n f(vtx::Int) \n\n\n\n\n\n","category":"method"},{"location":"reference/functionindex/#Index","page":"Alphabetical function list","title":"Index","text":"","category":"section"},{"location":"reference/functionindex/","page":"Alphabetical function list","title":"Alphabetical function list","text":"","category":"page"},{"location":"#Introduction-to-Karnak","page":"Introduction to Karnak","title":"Introduction to Karnak","text":"","category":"section"},{"location":"","page":"Introduction to Karnak","title":"Introduction to Karnak","text":"(Image: karnak splash image)","category":"page"},{"location":"","page":"Introduction to Karnak","title":"Introduction to Karnak","text":"Karnak.jl is a package for drawing graphs and networks. It's built on top of Luxor.jl.","category":"page"},{"location":"","page":"Introduction to Karnak","title":"Introduction to Karnak","text":"Karnak also uses Graphs.jl for graph construction, and NetworkLayout.jl for graph layout algorithms.","category":"page"},{"location":"","page":"Introduction to Karnak","title":"Introduction to Karnak","text":"note: Note\nThere's a good selection of Julia packages for visualizing graphs:TikzGraphs.jl: backend: Tikz/LaTeX\nGraphPlot.jl: backend: Compose.jl\nSGtSNEpi.jl: backend: Makie.jl\nGraphRecipes.jl: backend: Plots.jl\nGraphMakie.jl: backend: Makie.jl","category":"page"},{"location":"#Quick-start","page":"Introduction to Karnak","title":"Quick start","text":"","category":"section"},{"location":"","page":"Introduction to Karnak","title":"Introduction to Karnak","text":"using Karnak\nusing Graphs\nusing NetworkLayout\ng = barabasi_albert(100, 1)\n@drawsvg begin\n background(\"black\")\n sethue(\"white\")\n drawgraph(g, layout=stress, vertexlabels = 1:nv(g))\nend","category":"page"},{"location":"","page":"Introduction to Karnak","title":"Introduction to Karnak","text":"note: Note\nKarnak.jl contains just one function: drawgraph(), and re-exports Luxor.jl. So all graphics and drawing functions are from Luxor. See the documentation of Luxor.jl for details.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"using Karnak, Graphs, NetworkLayout, Colors, SimpleWeightedGraphs","category":"page"},{"location":"syntax/#Syntax","page":"Syntax","title":"Syntax","text":"","category":"section"},{"location":"syntax/#Overview","page":"Syntax","title":"Overview","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Karnak's function for drawing graphs is drawgraph(). This takes a single argument, a Graph, and tries to place representative graphics on the current Luxor drawing.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The default display for graphs is:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"current Luxor origin, scale and rotation\ncurrent Luxor color for edges\ncircles for all vertex shapes\nno vertex labels\nall edges drawn","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\n background(\"grey10\")\n sethue(\"darkcyan\")\n g = complete_graph(10)\n drawgraph(g)\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"To control the appearance of the graph, you supply values to the various keyword arguments. Apart from the general keywords BoundingBox, layout, and margin, the keywords can be grouped into two categories:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"(Image: two groups of keyword)","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Most of these keyword arguments accept vectors, ranges, and scalar values, and some accept functions as well.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Here's a contrived (and consequently hideously ugly) example of the type of syntax available:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\nsethue(\"purple\")\ng = smallgraph(:karate)\ndrawgraph(g, layout=stress,\n vertexshapes = [:square, :circle],\n vertexfillcolors = (v) -> v ∈ (1, 3, 6) ? colorant\"red\" : colorant\"grey40\",\n vertexstrokecolors = colorant\"orange\",\n vertexstrokeweights = range(0.5, 4, length=nv(g)),\n vertexshapesizes = 2 .* [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],\n vertexlabelfontsizes = 2 .* [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],\n vertexlabels = 1:nv(g),\n vertexlabelrotations = π/8,\n vertexlabeltextcolors = distinguishable_colors(10)\n)\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Here, the outdegree for each vertex (the number of edges leaving it) is used to control the size of the vertices and the font sizes too. vertexshapes flip-flops between squares and circles for each vertex shape, but the size of the shape is determined by a vertexshapesizes function, which receives a Vector of sizes, the outdegree values for each vertex. The font sizes of the labels are also set this way. A vertexfillcolors function lets you determine the shape's fill color for specific vertices, whereas the stroke color is always orange, with stroke weights gradually increasing. The colors of the labels are set by the Colors.distinguishable_colors() function passed to vertexlabeltextcolors. And all the labels are rotated, for no particularly good reason.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Usually, if a vector runs out before the vertices and edges have been drawn, some mod1 magic means the values repeat from the beginning again.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Use drawgraph() more than once, if needed, to build up the graph in layers. Remember to use the same layout algorithm.","category":"page"},{"location":"syntax/#Summary-of-keywords","page":"Syntax","title":"Summary of keywords","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":" \nboundingbox BoundingBox drawing will fit inside this bounding box\nmargin Number margin in points/pixels\nlayout Vector{Point} list of coordinates of each vertex\n function from NetworkLayout.jl squaregrid, shell, stress, etc\n f(g::Graph) (g) -> spectral(adjacency_matrix(g), dim=2)\nedgefunction f(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point, to::Point) function that completely specifies the appearance of every edge. If present, none of the other edge- keyword arguments are used.\nvertexfunction f(vtx::Int, coordinates::Vector{Point}) function that completely specifies the appearance of every vertex. If present, None of the other vertex- keyword arguments will be used.\nedgecurvature Float64 curviness of edge arrows\nedgedashpatterns Vector{Vector}[number] vector of dash patterns\n Vector{Number} a dash pattern\nedgegaps Vector gaps from each vertex center to arrow tip\n Range \n Real gaps from every vertex center to arrow tip\nedgelabelcolors Vector{Colorant} colors of each vertex's label text\n Colorant color of all vertex labels\nedgelabelfontfaces Vector{Strings}[edgenumber] font face for each edge\n String font face for every edge\n :none \nedgelabelfontsizes Vector{Number} the font size of each edge label\n Number the font size of every edge label\nedgelabelrotations Vector{angles} rotation of each label\n angle::Float64 rotation of every label\n f(edgenumber, edges, edgedest, from, to) function returns angle for this edge\nedgelabels Vector \n range \n Dict{Int, Int} (src, dst) => \"labeltext\"\n f(edgenumber, edgesrc, edgedest, from::Point, to::Point) \n :none \nedgelines Vector{Int} numbers of edges to be drawn\n range \n Int \n f(edgenumber, edgesrc, edgedest, from::Point, to::Point) \nedgelist Graphs.EdgeIterator the edges to be drawn - takes prioity over edgelines\nedgestrokecolors Vector{Colorant}[edge::Int] colors for edges\n Colorant color for every edge\n f(edgenumber, edgesrc, edgedest, from::Point, to::Point) function to set color for this edge\nedgestrokeweights Vector{Number}[vtx] \n range \n Real \n f(edgenumber, edgesrc, edgedest, from::Point, to::Point) function that returns a value for line width\nvertexfillcolors Vector{Colorant} \n Colorant \n :none \n f(vtx::Int) \nvertexlabelfontfaces Vector{Strings} font face for each vertex\n String font face for every vertex\nvertexlabelfontsizes Vector \n range \n Real \n :none \n f(vtx::Int, coords::Point[]) function returns the fontsize for this label\nvertexlabeloffsetangles Vector \n Range \n Real \nvertexlabeloffsetdistances Vector \n range \n Real \nvertexlabelrotations Vector \n range \n Real \n :none \nvertexlabels Vector{String} cycles\n String used for all vertices\n range[vtx::Int] string of the number in the range, cycles\n :none \n f(vtx::Int) function returns a string for the vertex label\nvertexlabeltextcolors Vector{Colorant} color for each text label\n Colorant color of all text labels\n :none \n f(vtx::Int) function returning a colorant\nvertexshaperotations f(vtx::Int) \n angle::Float64 \nvertexshapes Vector of :circle :square :none shapes of each vertex\n range[vtx] draw default shape at this vertex\n :circle :square :none shape of every vertex\n f(vtx::Int) function draws shape at this vertex (which is Point(0, 0))\nvertexshapesizes Vector{Real} \n range \n Real \n :none \n f(vtx::Int) \nvertexstrokecolors Vector \n Colorant \n :none \n f(vtx::Int) \nvertexstrokeweights Vector \n range \n :none ","category":"page"},{"location":"syntax/#The-BoundingBox","page":"Syntax","title":"The BoundingBox","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The graphics for the graph are placed to fit inside the current BoundingBox (by default, the drawing), after allowing for the margin (the default is 30). Pass a different BoundingBox to the boundingbox keyword argument to control the graph layout's size.","category":"page"},{"location":"syntax/#Layout-algorithms","page":"Syntax","title":"Layout algorithms","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The only clever part of this package is provided by NetworkLayout.jl), which is where you should look for information about the various algorithms that determine where vertices are positioned.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"You can choose a layout algorithm, or supply the vertex positions yourself.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The main layout algorithms available are:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"shell\nspring\nstress\nsquaregrid","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Here are some formulations which work as keywords in drawgraph():","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"layout = squaregrid\n\nlayout = shell\n\nlayout = stress\n\nlayout = spectral\n\nlayout = (g) -> spectral(adjacency_matrix(g), dim=2)\n\nlayout = shell ∘ adjacency_matrix\n\nlayout = (g) -> sfdp(g, Ptype=Float64, dim=2, tol=0.05, C=0.4, K=2)\n\nlayout = Shell(nlist=[6:10,])\n\nlayout = Stress(iterations = 100, weights = M) # M is matrix of weights\n\nlayout = Spring(iterations = 200, initialtemp = 2.5)","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Alternatively, you can pass a vector of points to the layout keyword argument. Vertices will be placed on these points (vertex 1 on point 1, etc...), rather than at points suggested by the NetworkLayout algorithms. For example, in this next drawing, the two sets of points for a bipartite graph are generated beforehand.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\nN = 12; H = 250; W = 550\ng = complete_bipartite_graph(N, N)\npts = vcat(\n between.(O + (-W/2, -H/2), O + (-W/2, H/2), range(0, 1, length=N)), # left set\n between.(O + (W/2, H/2), O + (W/2, -H/2), range(0, 1, length=N))) # right set\ncircle.(pts, 1, :fill)\ndrawgraph(g, vertexlabels = 1:nv(g), layout = pts,\n edgestrokeweights = 0.5,\n edgestrokecolors = (n, f, t, s, d) -> HSB(rescale(n, 1, ne(g), 0, 360), 0.6, 0.9))\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The calculated positions are returned by the drawgraph() function.","category":"page"},{"location":"syntax/#Initial-positions-for-the-layout-algorithms","page":"Syntax","title":"Initial positions for the layout algorithms","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Some of the layout algorithms - the Spring and Stress ones, for example - allow you to pass initial vertex positions to be used by the algorithms as starting points. The algorithm will continually adjust them to make a better result. These initial positions should be supplied as xy pairs, rather than Points (which NetworkLayout doesn't know about).","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Here's an animation showing how the Stress algorithm gradually improves the layout on each iteration. The initial positions are just the \"grid locations\" of a Tiler iterator.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"using Karnak, Graphs, NetworkLayout, Colors\n\nfunction frame(scene, framenumber, G)\n\n background(\"black\")\n initialpositions = [(pt.x, pt.y) for (pt, n) in Tiler(600, 600, 3, 3)]\n\n sethue(\"grey50\")\n circle.(Point.(initialpositions), 3, :fill)\n\n for i in 1:framenumber\n setopacity(rescale(i, 1, scene.framerange.stop, 0, 0.6))\n drawgraph(G,\n layout=Stress(initialpos=initialpositions, iterations=i),\n vertexfillcolors=(i == framenumber) ? colorant\"gold\" : :none\n )\n end\n\nend\n\nfunction main()\n G = smallgraph(:petersen)\n amovie = Movie(600, 600, \"layout\")\n animate(amovie,\n Scene(amovie, (s, f) -> frame(s, f, G), 1:60),\n framerate=10, creategif=true)\nend\n\nmain()","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"(Image: animate stress algorithm)","category":"page"},{"location":"syntax/#The-vertexfunction-and-edgefunction-arguments","page":"Syntax","title":"The vertexfunction and edgefunction arguments","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The two keyword arguments vertexfunction and edgefunction allow you to pass control over the drawing process completely to these two functions.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"note: Note\nIf you define these functions, all the other vertex/edge keywords are ignored.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"vertexfunction = my_vertexfunction(vertex, coordinates)\nedgefunction = my_edgefunction(edgenumber, edgesrc, edgedest, from::Point, to::Point)","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"These allow you to place graphics at coordinates[vertex], and to draw edges from from to to, using any available tools for drawing.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"In the following picture, the vertex positions were passed to a function that placed clipped PNG images on the drawing (using readpng() and placeimage()), and the edges were drawn using sine curves. Refer to the Luxor.jl documentation for more about putting colored things on drawings.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"(Image: image vertices)","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"It's also possible, for example, to draw a graph at a vertex point (ie recursive graph drawing) if you use vertexfunction.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"g = complete_graph(5)\n\nfunction rgraph(g, l=1)\n if l > 4\n return\n else\n drawgraph(g,\n layout=stress,\n boundingbox=BoundingBox() / 2l,\n vertexfunction=(v, c) -> begin\n @layer begin\n sethue(HSB(rescale(v, 1, 4, 0, 360), 0.7, 0.8))\n translate(c[v])\n #circle(c[v], 5, :fill)\n rgraph(g, l + 1)\n end\n end,\n )\n end\nend\n\n@drawsvg begin\n background(\"grey10\")\n sethue(\"gold\")\n rgraph(g)\nend 800 600","category":"page"},{"location":"syntax/#Functions-as-keyword-arguments","page":"Syntax","title":"Functions as keyword arguments","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The following keyword arguments accept functions:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"edgelabelrotations\nedgelabels\nedgelines\nedgestrokecolors\nedgestrokeweights\nvertexfillcolors\nvertexlabels\nvertexlabeltextcolors\nvertexshaperotations\nvertexshapes\nvertexshapesizes\nvertexstrokecolors\nvertexstrokeweights","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The edge- keywords accept functions with arguments (edgenumber, sourcevertex, destinationvertex, frompoint, topoint). The vertex- keywords accept functions with arguments (vertex).","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"These functions aren't used if you supply functions to vertexfunction or edgefunction.","category":"page"},{"location":"syntax/#Vertex-labels-and-shapes","page":"Syntax","title":"Vertex labels and shapes","text":"","category":"section"},{"location":"syntax/#vertexlabels","page":"Syntax","title":"vertexlabels","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Use vertexlabels to choose the text to associate with each vertex. Supply a range, array of strings or numbers, a single string, or a function.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"This example draws all vertices, and numbers them from 1 to 6.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"note: Note\nIn Graphs.jl, vertices are always numbered from 1 to n. If you remove a vertex, vertices are effectively re-numbered.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\n background(\"grey10\")\n g = smallgraph(:octahedral)\n sethue(\"gold\")\n drawgraph(g, layout=stress,\n vertexlabels = 1:nv(g),\n vertexshapesizes = 10)\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"A function can be passed to vertexlabels to display a vertex; it should accept a single numerical argument, the vertex number, and return a string to display. Labelling all of them isn't always necessary.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:octahedral)\nsethue(\"skyblue\")\ndrawgraph(g, layout=stress,\n vertexlabels = (v) -> v ∈ (1, 4, 6) && string(v, \"/6\"),\n vertexshapesizes = 15,\n vertexlabelfontsizes = 20,\n )\nend 600 300","category":"page"},{"location":"syntax/#Using-LaTex-in-labels","page":"Syntax","title":"Using LaTex in labels","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"If you want to use LaTeX in vertex labels, you can load MathTeXEngine.jl to parse the LaTeXStrings. Make sure the fonts in the MathTexEngine package are also available to the Operating System's font routines (so copying them to your local font folder is probably required).","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"using Karnak, Graphs, NetworkLayout, Colors\nusing MathTeXEngine, LaTeXStrings\n\ng = complete_graph(4)\n@svg begin\n background(\"grey10\")\n sethue(\"cyan\")\n fontsize(40)\n drawgraph(g,\n margin=30,\n vertexlabels = [L\"v_%$(x)\" for x in 1:nv(g)],\n vertexlabeloffsetdistances = [40, 40, -40, 40],\n vertexlabeltextcolors = colorant\"white\"\n )\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"(Image: latex tet)","category":"page"},{"location":"syntax/#vertexshapes-and-vertexshapesizes","page":"Syntax","title":"vertexshapes and vertexshapesizes","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The default shape for a vertex is a filled circle.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Options for vertexshapes are :circle and :square. With just two in a vector, they will be used alternately.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:moebiuskantor)\nsethue(\"gold\")\ndrawgraph(g, layout=shell, vertexshapes = [:square, :circle])\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"vertexshapesizes can set the sizes for the built-in vertex shapes.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:moebiuskantor)\nsethue(\"gold\")\ndrawgraph(g, layout=shell,\n vertexshapes = [:square, :circle],\n vertexshapesizes = [15, 5])\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:moebiuskantor)\nsethue(\"gold\")\ndrawgraph(g, layout=shell,\n vertexshapesizes = (v) -> rescale(v, 1, nv(g), 5, 25))\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"vertexshaperotations can set the rotations.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:moebiuskantor)\nsethue(\"gold\")\ndrawgraph(g, layout=shell,\n vertexshapes = :square,\n vertexshapesizes = [10, 20, 5],\n vertexshaperotations = [π/2, π/3],\n )\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"To show every other vertex and label, you could use something like this:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:truncatedcube)\nsethue(\"darkturquoise\")\ndrawgraph(g, layout=stress,\n vertexlabels = [\"1\", \"\"],\n vertexshapesizes = [10, 0])\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"When circles and squares don't cut it, supply a function to vertexshapes. The single argument is the vertex number; any graphics you draw will be centered at the vertex location, the current origin, Point(0, 0).","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:moebiuskantor)\nsethue(\"hotpink\")\ndrawgraph(g, layout=shell,\n vertexshapes = (v) -> star(O, 15, v+2, 0.5, 0, :fill))\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Here, the vertex number is hinted at by the number of points on each star.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"In the next example, the sizes of the labels and shapes are determined by the degree of each vertex, supplied in a vector.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:karate)\nsethue(\"slateblue\")\ndrawgraph(g, layout=stress,\n vertexlabels = 1:nv(g),\n vertexlabelfontsizes = [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],\n vertexshapesizes = [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],\n vertexfillcolors = (v) -> v ∈ (1, 3, 6) && colorant\"red\",\n )\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"One more example with vertexshapes.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"function whiten(col::Color, f=0.5)\n hsl = convert(HSL, col)\n h, s, l = hsl.h, hsl.s, hsl.l\n return convert(RGB, HSL(h, s, f))\nend\n\nfunction drawball(pos, ballradius, col::Color;\n fromlum=0.2,\n tolum=1.0)\n gsave()\n translate(pos)\n for i in ballradius:-0.25:1\n sethue(whiten(col, rescale(i, ballradius, 0.5, fromlum, tolum)))\n offset = rescale(i, ballradius, 0.5, 0, -ballradius/2)\n circle(O + (offset, offset), i, :fill)\n end\n grestore()\nend\n\n@drawsvg begin\nbackground(\"grey10\")\ng = clique_graph(5, 6)\nsethue(\"yellow\")\nsetline(0.2)\ndrawgraph(g,\n layout = stress,\n vertexshapes = (v) -> drawball(O, 25, RGB([Karnak.Luxor.julia_red,Karnak.Luxor.julia_purple, Karnak.Luxor.julia_green][rand(1:end)]...))\n)\nend 600 600","category":"page"},{"location":"syntax/#vertexstrokecolors-and-vertexfillcolors","page":"Syntax","title":"vertexstrokecolors and vertexfillcolors","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"These keywords accept a Colors.jl colorant, an array of them, or a function that generates a color.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:cubical)\nsethue(\"darkorange\")\ndrawgraph(g, layout=stress,\n vertexshapes = :square,\n vertexshapesizes = 20,\n vertexfillcolors = [colorant\"red\", colorant\"blue\"],\n vertexstrokecolors = [colorant\"blue\", colorant\"red\"])\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The function should return a Colorant for a vertex:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:icosahedral)\nsethue(\"darkorange\")\ndrawgraph(g, layout=spring,\n vertexshapes = :circle,\n vertexshapesizes = 20,\n vertexstrokeweights = 5,\n vertexstrokecolors = (v) -> HSB(rescale(v, 1, nv(g), 360, 0), 1, 1),\n vertexfillcolors = (v) -> HSB(rescale(v, 1, nv(g), 0, 359), 1, 1),\n )\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"or an array of colors:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\nsethue(\"orange\")\ng = grid((15, 15))\ndrawgraph(g,\n layout = squaregrid,\n vertexshapesizes = 15,\n vertexfillcolors = [RGB([Karnak.Luxor.julia_red, Luxor.julia_green,\n Luxor.julia_purple][rand(1:end)]...) for i in 1:nv(g)])\nend 600 600","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The following keyword arguments operate in a similar way:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"vertexstrokeweights : Array | Range | :none\nvertexlabeltextcolors : Array | Range | colorant\nvertexlabelfontsizes : Array | Range | number\nvertexlabelfontfaces : Array | string\nvertexlabelrotations : Array | Range | number\nvertexlabeloffsetangles : Array | Range | number\nvertexlabeloffsetdistances : Array | Range | number","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"It's possible to specify the font faces for vertex labels, but it's difficult to demonstrate when the documentation is built on machines in the cloud with unknown typographical resources. But anyway:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:pappus)\nsethue(\"slateblue\")\ndrawgraph(g,\n vertexlabels = 1:nv(g),\n vertexshapes = 0,\n vertexlabelfontfaces = [\"Times-Roman\", \"Courier\", \"Helvetica-Bold\"],\n vertexlabelfontsizes = 30)\nend 600 300","category":"page"},{"location":"syntax/#Edge-options","page":"Syntax","title":"Edge options","text":"","category":"section"},{"location":"syntax/#edgefunction","page":"Syntax","title":"edgefunction","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"As with vertexfunction, the edgefunction keyword argument allows you to do anything you like when the edges are drawn, and overrides all other edge- keyword arguments. Here, the calculated coordinates of the graph and a path between two vertices aren't drawn at first, just extracted into vectors for further processing.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"black\")\nsethue(\"white\")\ng = clique_graph(16, 4)\n\nA = Point[]\nB = Point[]\n\ndrawgraph(g, layout=stress,\n edgefunction = (edgenumber, edgesrc, edgedest, from, to) -> begin\n push!(A, from),\n push!(A, to)\n end,\n vertexshapes = :none,\n )\n\nroute = a_star(g, 6, 29)\n\ndrawgraph(g, layout=stress,\n edgelist = route,\n vertexshapes = :none,\n edgefunction = (edgenumber, edgesrc, edgedest, from, to) -> begin\n push!(B, from),\n push!(B, to)\n end)\n\nsetlinejoin(\"bevel\")\nsetline(0.25)\n\nsethue(\"grey60\")\n@layer begin\n poly(A, :stroke)\nend\n\nsethue(\"gold\")\nsetline(4)\n@layer begin\n poly(B, :stroke)\nend\ncircle.(B[[begin, end]], 5, :fill)\nend 600 400","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"note: Note\nThis keyword overrides the other edge- keywords.","category":"page"},{"location":"syntax/#edgelist-and-edgelines","page":"Syntax","title":"edgelist and edgelines","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"A Graphs.EdgeIterator supplied to edgelist makes only the specified edges available for drawing. Otherwise, control which edges are to be drawn by supplying numbers (or a function) to edgelines.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\nsethue(\"orange\")\ng = grid((15, 15))\ndrawgraph(g,\n layout = stress,\n vertexshapes = :none,\n edgelines = rand(1:ne(g), 30)\n)\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"edgelist is useful for drawing paths - a sequence of edges. For example, if you use a_star() to find the shortest path between two vertices, you can draw the edges with this keyword. It's useful to draw the graph twice, once with all edges, once with selected edges.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = grid((15, 15))\n\nastar = a_star(g, 1, nv(g))\n\nsethue(\"orange\")\ndrawgraph(g,\n layout = stress,\n vertexshapes = :none)\n\nsethue(\"cyan\")\ndrawgraph(g,\n layout = stress,\n vertexshapes = :none,\n edgestrokeweights = 5,\n edgelist = astar)\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"For more interesting arrows for edges, you can use arrows, and you can also define functions to create all kinds of graphical deatil:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"gd = DiGraph() \nadd_vertices!(gd, 4) \nadd_edge!(gd, 1, 2) \nadd_edge!(gd, 1, 3) \nadd_edge!(gd, 2, 3) \nadd_edge!(gd, 1, 4) # vertex 1 to vertex 4 \nadd_edge!(gd, 4, 1) # vertex 4 to vertex 1 \n\n@drawsvg begin \n background(\"grey10\") \n sethue(\"thistle1\") \n drawgraph(gd, vertexlabels = [1, 2, 3, 4], \n edgefunction = (n, s, d, f, t) -> begin \n arrow(f, t, [10, 10], \n decoration = 0.75, \n decorate = () -> begin \n sethue(HSB(60n, 0.7, 0.8)) \n ngon(O, 10, 3, 0, :fill) \n end, \n arrowheadfunction= (f, t, a) -> () \n ) \n end \n ) \nend 600 300 ","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = star_graph(12)\nfontsize(20)\nsethue(\"slateblue\")\ndrawgraph(g,\n layout=spring,\n vertexshapes = 0,\n vertexlabels = 1:nv(g),\n vertexlabelfontsizes = 12,\n edgestrokecolors = distinguishable_colors(ne(g)),\n edgelines = (k, s, d, f, t) ->\n arrow(f, between(f, t, .95), [20, -45],\n linewidth = 5,\n arrowheadlength = 15,\n arrowheadangle = π/7,\n decorate = () -> begin\n sethue(\"purple\")\n circle(O, 15, :fill)\n sethue(\"white\")\n text(string(k), angle = -getrotation(), halign = :center, valign=:middle)\n end,\n decoration = .7))\nend 600 400","category":"page"},{"location":"syntax/#Edge-labels","page":"Syntax","title":"Edge labels","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Use edgelabels, edgelabelcolors, edgelabelrotations, etc. to control the appearance of the labels alongside edges.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:dodecahedral)\ng = complete_graph(5)\nsethue(\"orange\")\nfontsize(20)\ndrawgraph(g, layout=stress,\n vertexshapes = :none,\n vertexlabels = \"vertex\",\n vertexlabeltextcolors = colorant\"cyan\",\n edgelabels = [\"edge\"],\n edgestrokecolors = colorant\"orange\",\n edgelabelcolors = colorant\"pink\",\n )\nend 600 500","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"edgelabels can also be a dictionary, where the keys are tuples: (src, dst), and the values are the text labels.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"g = complete_graph(5)\nedgelabeldict = Dict()\nn = nv(g)\nfor i in 1:n\n for j in 1:n\n edgelabeldict[(i, j)] = \"($i, $j)\"\n end\nend\n\n@drawsvg begin\n background(\"grey10\")\n drawgraph(g, layout=stress,\n vertexshapes = :circle,\n vertexlabels = 1:n,\n edgestrokecolors = colorant\"orange\",\n edgelabelcolors = colorant\"white\",\n edgelabels = edgelabeldict)\nend 600 350","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The edgelabels keyword argument can also accept a function with five arguments: edgenumber, source, destination, from and to. In this example, the graphical distances between the two vertex positions provide the annotations for each edge.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\nbackground(\"grey10\")\ng = smallgraph(:dodecahedral)\ng = complete_graph(5)\nfontsize(20)\ndrawgraph(g, layout=stress,\n vertexshapes = :none,\n edgestrokecolors = colorant\"orange\",\n edgelabels = (k, src, dest, f, t) -> begin\n @layer begin\n sethue(\"white\")\n θ = slope(f, t)\n text(string(round(distance(f, t), digits=1)),\n midpoint(f, t),\n angle=θ,\n halign=:center)\n end\n end)\nend 600 500","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"The more code you're prepared to write, the more elaborate your labels can be:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"sources = [1,2,1]\ndestinations = [2,3,3]\nweights = [0.5, 0.8, 2.0]\ng = SimpleWeightedGraph(sources, destinations, weights)\n@drawsvg begin\nbackground(\"grey10\")\nsethue(\"gold\")\ndrawgraph(g,\n vertexlabels = 1:nv(g),\n vertexshapesizes = 20,\n vertexlabelfontsizes = 30,\n edgecurvature = 10,\n edgegaps = 25,\n edgelabels = (edgenumber, edgesrc, edgedest, from, to) -> begin\n @layer begin\n sethue(\"black\")\n box(midpoint(from, to), 50, 30, :fill)\n end\n box(midpoint(from, to), 50, 30, :stroke)\n fontsize(16)\n text(string(get_weight(g, edgesrc, edgedest)),\n midpoint(from, to),\n halign=:center,\n valign=:middle)\n end)\nend 600 300","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"For directed weighted graphs, each edge can have two weights. This makes it slightly more difficult to draw the labels automatically. You could write an edge labelling function that calculates the slope of the edge and positions the label accordingly:","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"function f(edgenumber, edgesrc, edgedest, from::Point, to::Point)\n sl = slope(from, to)\n wt = g.weights[edgesrc, edgedest]\n if sl > π\n label(string(wt), :e, midpoint(from, to))\n else\n label(string(wt), :w, midpoint(from, to))\n end\nend \n\n...\n edgelabels=f,\n...","category":"page"},{"location":"syntax/#edgelist","page":"Syntax","title":"edgelist","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"This example draws the graph more than once; once with all the edges, once with only the edges in edgelist, where edgelist is the path from vertex 15 to vertex 17, drawn in a pale translucent yellow, and once to draw the vertices on the path \"X marks the spot\" cyan-colored crosses.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"@drawsvg begin\n background(\"grey10\")\n g = smallgraph(:karate)\n sethue(\"slateblue\")\n\n drawgraph(g, layout = stress,\n vertexlabels = 1:nv(g),\n vertexshapes = :circle,\n vertexshapesizes = 10,\n vertexlabelfontsizes = 10)\n\n astar = a_star(g, 15, 17)\n\n drawgraph(g,\n layout=stress,\n vertexshapes = :none,\n edgelist = astar,\n edgestrokecolors=RGBA(1, 1, 0, 0.5),\n edgestrokeweights=10)\n\n drawgraph(g,\n layout=stress,\n edgelines=0,\n vertexshapes = (v) -> v ∈ src.(astar) && polycross(O, 20, 4, 0.5, π/4, :fill),\n vertexfillcolors = (v) -> v ∈ src.(astar) && colorant\"cyan\"\n )\nend 600 600","category":"page"},{"location":"syntax/#edgecurvature-and-edgecaps","page":"Syntax","title":"edgecurvature and edgecaps","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"edgecurvature determines the curvature of the edges, and edgegaps sets the distance between the tip of the arrowhead and the vertex position. Units, as everywhere in Karnak, are points/pixels (1 point is 0.3527mm).","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"g = grid((3, 3))\n\n# add some self-loops\nfor e in edges(g)\n add_edge!(g, src(e), src(e))\n add_edge!(g, dst(e), dst(e))\nend\n\n@drawsvg begin\n background(\"grey10\")\n sethue(\"white\")\n for c in 1:10\n drawgraph(g,\n margin=70,\n vertexshapes = :none,\n edgegaps = 3c,\n edgecurvature = 3c,\n edgestrokecolors = HSB(36c, .8, .8),\n edgestrokeweights = 0.5,\n layout=squaregrid)\n end\nend 600 500","category":"page"},{"location":"syntax/#edgestrokecolors-and-edgestrokeweights","page":"Syntax","title":"edgestrokecolors and edgestrokeweights","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"g = barbell_graph(3, 3)\n@drawsvg begin\n background(\"grey10\")\n fontsize(30)\n sethue(\"white\")\n drawgraph(g,\n layout=stress,\n edgelabels = 1:ne(g),\n edgecurvature = 10,\n edgestrokeweights = 2 * (1:ne(g)),\n edgelabelcolors = colorant\"white\",\n edgestrokecolors= (n, from, to, edgesrc, edgedest) -> HSB(rescale(n, 1, ne(g), 0, 359), .8, .8))\nend 600 500","category":"page"},{"location":"syntax/#edgedashpatterns","page":"Syntax","title":"edgedashpatterns","text":"","category":"section"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"Line dashes work the same as in Luxor.jl, ie they're numbers in an array, with line length following by space length. If you want to alternate between dash patterns, supply an array of pattern arrays.","category":"page"},{"location":"syntax/","page":"Syntax","title":"Syntax","text":"g = grid((5, 5))\n@drawsvg begin\n background(\"grey10\")\n sethue(\"white\")\n drawgraph(g,\n layout=squaregrid,\n edgestrokeweights = 5,\n edgelabels = (edgenumber, edgesrc, edgedest, from::Point, to::Point) ->\n begin\n labeltext = [\"a\", \"b\", \"c\"][mod1(edgenumber, end)]\n label(labeltext, :se, midpoint(from, to), offset=5)\n end,\n edgedashpatterns = [[20, 10, 1, 10], [20, 10], [0.5, 10]],\n edgelabelfontsizes = 20,\n vertexshapesizes = 2,\n edgestrokecolors=(edgenumber, from, to, src, dst) ->\n HSB(rescale(edgenumber, 1, ne(g), 0, 359), .8, .8)\n )\nend 600 400","category":"page"}] -} diff --git a/dev/syntax.html b/dev/syntax.html new file mode 100644 index 0000000..eca304b --- /dev/null +++ b/dev/syntax.html @@ -0,0 +1,585 @@ + + + + + + Syntax | Karnak.jl + + + + + + + + + + + + + + +
Skip to content

Syntax

Overview

Karnak's function for drawing graphs is drawgraph(). This takes a single argument, a Graph, and tries to place representative graphics on the current Luxor drawing.

The default display for graphs is:

  • current Luxor origin, scale and rotation

  • current Luxor color for edges

  • circles for all vertex shapes

  • no vertex labels

  • all edges drawn

julia
@drawsvg begin
+    background("grey10")
+    sethue("darkcyan")
+    g = complete_graph(10)
+    drawgraph(g)
+end 600 300

To control the appearance of the graph, you supply values to the various keyword arguments. Apart from the general keywords BoundingBox, layout, and margin, the keywords can be grouped into two categories:

Most of these keyword arguments accept vectors, ranges, and scalar values, and some accept functions as well.

Here's a contrived (and consequently hideously ugly) example of the type of syntax available:

julia
@drawsvg begin
+background("grey10")
+sethue("purple")
+g = smallgraph(:karate)
+drawgraph(g, layout=stress,
+    vertexshapes = [:square, :circle],
+    vertexfillcolors = (v) -> v  (1, 3, 6) ? colorant"red" : colorant"grey40",
+    vertexstrokecolors = colorant"orange",
+    vertexstrokeweights = range(0.5, 4, length=nv(g)),
+    vertexshapesizes = 2 .* [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
+    vertexlabelfontsizes = 2 .* [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
+    vertexlabels = 1:nv(g),
+    vertexlabelrotations = π/8,
+    vertexlabeltextcolors = distinguishable_colors(10)
+)
+end 600 300

Here, the outdegree for each vertex (the number of edges leaving it) is used to control the size of the vertices and the font sizes too. vertexshapes flip-flops between squares and circles for each vertex shape, but the size of the shape is determined by a vertexshapesizes function, which receives a Vector of sizes, the outdegree values for each vertex. The font sizes of the labels are also set this way. A vertexfillcolors function lets you determine the shape's fill color for specific vertices, whereas the stroke color is always orange, with stroke weights gradually increasing. The colors of the labels are set by the Colors.distinguishable_colors() function passed to vertexlabeltextcolors. And all the labels are rotated, for no particularly good reason.

Usually, if a vector runs out before the vertices and edges have been drawn, some mod1 magic means the values repeat from the beginning again.

Use drawgraph() more than once, if needed, to build up the graph in layers. Remember to use the same layout algorithm.

Summary of keywords

boundingboxBoundingBoxdrawing will fit inside this bounding box
marginNumbermargin in points/pixels
layoutVectorlist of coordinates of each vertex
function from NetworkLayout.jlsquaregrid, shell, stress, etc
f(g::Graph)(g) -> spectral(adjacency_matrix(g), dim=2)
edgefunctionf(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point, to::Point)function that completely specifies the appearance of every edge. If present, none of the other edge- keyword arguments are used.
vertexfunctionf(vtx::Int, coordinates::Vector{Point})function that completely specifies the appearance of every vertex. If present, None of the other vertex- keyword arguments will be used.
edgecurvatureFloat64curviness of edge arrows
edgedashpatternsVector{Vector}[number]vector of dash patterns
Vectora dash pattern
edgegapsVectorgaps from each vertex center to arrow tip
Range
Realgaps from every vertex center to arrow tip
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)gaps from every vertex center to arrow tip
edgelabelcolorsVectorcolors of each vertex's label text
Colorantcolor of all vertex labels
edgelabelfontfacesVector{Strings}[edgenumber]font face for each edge
Stringfont face for every edge
:none
edgelabelfontsizesVectorthe font size of each edge label
Numberthe font size of every edge label
edgelabelrotationsVectorrotation of each label
angle::Float64rotation of every label
f(edgenumber, edges, edgedest, from, to)function returns angle for this edge
edgelabelsVector
range
Dict(src, dst) => "labeltext"
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
:none
edgelinesVectornumbers of edges to be drawn
range
Int
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
edgelistGraphs.EdgeIteratorthe edges to be drawn - takes prioity over edgelines
edgestrokecolorsVector{Colorant}[edge::Int]colors for edges
Colorantcolor for every edge
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)function to set color for this edge
edgestrokeweightsVector{Number}[vtx]
range
Real
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)function that returns a value for line width
vertexfillcolorsVector
Colorant
:none
f(vtx::Int)
vertexlabelfontfacesVectorfont face for each vertex
Stringfont face for every vertex
vertexlabelfontsizesVector
range
Real
:none
f(vtx::Int, coords::Point[])function returns the fontsize for this label
vertexlabeloffsetanglesVector
Range
Real
vertexlabeloffsetdistancesVector
range
Real
vertexlabelrotationsVector
range
Real
:none
vertexlabelsVectorcycles
Stringused for all vertices
range[vtx::Int]string of the number in the range, cycles
:none
f(vtx::Int)function returns a string for the vertex label
vertexlabeltextcolorsVectorcolor for each text label
Colorantcolor of all text labels
:none
f(vtx::Int)function returning a colorant
vertexshaperotationsf(vtx::Int)
angle::Float64
vertexshapesVector of :circle :square :noneshapes of each vertex
range[vtx]draw default shape at this vertex
:circle :square :noneshape of every vertex
f(vtx::Int)function draws shape at this vertex (which is Point(0, 0))
vertexshapesizesVector
range
Real
:none
f(vtx::Int)
vertexstrokecolorsVector
Colorant
:none
f(vtx::Int)
vertexstrokeweightsVector
range
:none

The BoundingBox

The graphics for the graph are placed to fit inside the current BoundingBox (by default, the drawing), after allowing for the margin (the default is 30). Pass a different BoundingBox to the boundingbox keyword argument to control the graph layout's size.

Layout algorithms

The only clever part of this package is provided by NetworkLayout.jl), which is where you should look for information about the various algorithms that determine where vertices are positioned.

You can choose a layout algorithm, or supply the vertex positions yourself.

The main layout algorithms available are:

  • shell

  • spring

  • stress

  • squaregrid

Here are some formulations which work as keywords in drawgraph():

julia
layout = squaregrid
+
+layout = shell
+
+layout = stress
+
+layout = spectral
+
+layout = (g) -> spectral(adjacency_matrix(g), dim=2)
+
+layout = shell  adjacency_matrix
+
+layout = (g) -> sfdp(g, Ptype=Float64, dim=2, tol=0.05, C=0.4, K=2)
+
+layout = Shell(nlist=[6:10,])
+
+layout = Stress(iterations = 100, weights = M) # M is matrix of weights
+
+layout = Spring(iterations = 200, initialtemp = 2.5)

Alternatively, you can pass a vector of points to the layout keyword argument. Vertices will be placed on these points (vertex 1 on point 1, etc...), rather than at points suggested by the NetworkLayout algorithms. For example, in this next drawing, the two sets of points for a bipartite graph are generated beforehand.

julia
@drawsvg begin
+background("grey10")
+N = 12; H = 250; W = 550
+g = complete_bipartite_graph(N, N)
+pts = vcat(
+    [between(O + (-W / 2, -H / 2), O + (-W / 2, H / 2), i) for i in range(0, 1, length=N)], # left
+    [between(O + (W / 2, H / 2), O + (W / 2, -H / 2), i) for i in range(0, 1, length=N)] # right
+    )
+circle.(pts, 1, :fill)
+drawgraph(g, vertexlabels = 1:nv(g), layout = pts,
+    edgestrokeweights = 0.5,
+    edgestrokecolors = (n, f, t, s, d) -> HSB(rescale(n, 1, ne(g), 0, 360), 0.6, 0.9))
+end 600 300

The calculated positions are returned by the drawgraph() function.

Initial positions for the layout algorithms

Some of the layout algorithms - the Spring and Stress ones, for example - allow you to pass initial vertex positions to be used by the algorithms as starting points. The algorithm will continually adjust them to make a better result. These initial positions should be supplied as xy pairs, rather than Points (which NetworkLayout doesn't know about).

Here's an animation showing how the Stress algorithm gradually improves the layout on each iteration. The initial positions are just the "grid locations" of a Tiler iterator.

julia
using Karnak, Graphs, NetworkLayout, Colors
+
+function frame(scene, framenumber, G)
+
+    background("black")
+    initialpositions = [(pt.x, pt.y) for (pt, n) in Tiler(600, 600, 3, 3)]
+
+    sethue("grey50")
+    circle.(Point.(initialpositions), 3, :fill)
+
+    for i in 1:framenumber
+        setopacity(rescale(i, 1, scene.framerange.stop, 0, 0.6))
+        drawgraph(G,
+            layout=Stress(initialpos=initialpositions, iterations=i),
+            vertexfillcolors=(i == framenumber) ? colorant"gold" : :none
+        )
+    end
+
+end
+
+function main()
+    G = smallgraph(:petersen)
+    amovie = Movie(600, 600, "layout")
+    animate(amovie,
+        Scene(amovie, (s, f) -> frame(s, f, G), 1:60),
+        framerate=10, creategif=true)
+end
+
+main()

The vertexfunction and edgefunction arguments

The two keyword arguments vertexfunction and edgefunction allow you to pass control over the drawing process completely to these two functions.

Note

If you define these functions, all the other vertex/edge keywords are ignored.

vertexfunction = my_vertexfunction(vertex, coordinates)
+edgefunction = my_edgefunction(edgenumber, edgesrc, edgedest, from::Point, to::Point)

These allow you to place graphics at coordinates[vertex], and to draw edges from from to to, using any available tools for drawing.

In the following picture, the vertex positions were passed to a function that placed clipped PNG images on the drawing (using readpng() and placeimage()), and the edges were drawn using sine curves. Refer to the Luxor.jl documentation for more about putting colored things on drawings.

It's also possible, for example, to draw a graph at a vertex point (ie recursive graph drawing) if you use vertexfunction.

julia
g = complete_graph(5)
+
+function rgraph(g, l=1)
+    if l > 4
+        return
+    else
+        drawgraph(g,
+            layout=stress,
+            boundingbox=BoundingBox() / 2l,
+            vertexfunction=(v, c) -> begin
+                @layer begin
+                    sethue(HSB(rescale(v, 1, 4, 0, 360), 0.7, 0.8))
+                    translate(c[v])
+                    #circle(c[v], 5, :fill)
+                    rgraph(g, l + 1)
+                end
+            end,
+            )
+    end
+end
+
+@drawsvg begin
+    background("grey10")
+    sethue("gold")
+    rgraph(g)
+end 800 600

Functions as keyword arguments

The following keyword arguments accept functions:

  • edgelabelrotations

  • edgelabels

  • edgelines

  • edgestrokecolors

  • edgestrokeweights

  • vertexfillcolors

  • vertexlabels

  • vertexlabeltextcolors

  • vertexshaperotations

  • vertexshapes

  • vertexshapesizes

  • vertexstrokecolors

  • vertexstrokeweights

The edge- keywords accept functions with arguments (edgenumber, sourcevertex, destinationvertex, frompoint, topoint). The vertex- keywords accept functions with arguments (vertex).

These functions aren't used if you supply functions to vertexfunction or edgefunction.

Vertex labels and shapes

vertexlabels

Use vertexlabels to choose the text to associate with each vertex. Supply a range, array of strings or numbers, a single string, or a function.

This example draws all vertices, and numbers them from 1 to 6.

Note

In Graphs.jl, vertices are always numbered from 1 to n. If you remove a vertex, vertices are effectively re-numbered.

julia
@drawsvg begin
+    background("grey10")
+    g = smallgraph(:octahedral)
+    sethue("gold")
+    drawgraph(g, layout=stress,
+        vertexlabels = 1:nv(g),
+        vertexshapesizes = 10)
+end 600 300

A function can be passed to vertexlabels to display a vertex; it should accept a single numerical argument, the vertex number, and return a string to display. Labelling all of them isn't always necessary.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:octahedral)
+sethue("skyblue")
+drawgraph(g, layout=stress,
+    vertexlabels = (v) -> v  (1, 4, 6) && string(v, "/6"),
+    vertexshapesizes = 15,
+    vertexlabelfontsizes = 20,
+    )
+end 600 300

Using LaTex in labels

If you want to use LATEX in vertex labels, you can load MathTeXEngine.jl to parse the LaTeXStrings. Make sure the fonts in the MathTexEngine package are also available to the Operating System's font routines (so copying them to your local font folder is probably required).

julia
using Karnak, Graphs, NetworkLayout, Colors
+using MathTeXEngine, LaTeXStrings
+
+g = complete_graph(4)
+@svg begin
+    background("grey10")
+    sethue("cyan")
+    fontsize(40)
+    drawgraph(g,
+        margin=30,
+        vertexlabels = [L"v_%$(x)" for x in 1:nv(g)],
+        vertexlabeloffsetdistances = [40, 40, -40, 40],
+        vertexlabeltextcolors = colorant"white"
+    )
+end 600 300

vertexshapes and vertexshapesizes

The default shape for a vertex is a filled circle.

Options for vertexshapes are :circle and :square. With just two in a vector, they will be used alternately.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("gold")
+drawgraph(g, layout=shell, vertexshapes = [:square, :circle])
+end 600 300

vertexshapesizes can set the sizes for the built-in vertex shapes.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("gold")
+drawgraph(g, layout=shell,
+    vertexshapes = [:square, :circle],
+    vertexshapesizes = [15, 5])
+end 600 300
julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("gold")
+drawgraph(g, layout=shell,
+    vertexshapesizes = (v) -> rescale(v, 1, nv(g), 5, 25))
+end 600 300

vertexshaperotations can set the rotations.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("gold")
+drawgraph(g, layout=shell,
+    vertexshapes = :square,
+    vertexshapesizes = [10, 20, 5],
+    vertexshaperotations = [π/2, π/3],
+    )
+end 600 300

To show every other vertex and label, you could use something like this:

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:truncatedcube)
+sethue("darkturquoise")
+drawgraph(g, layout=stress,
+    vertexlabels = ["1", ""],
+    vertexshapesizes = [10, 0])
+end 600 300

When circles and squares don't cut it, supply a function to vertexshapes. The single argument is the vertex number; any graphics you draw will be centered at the vertex location, the current origin, Point(0, 0).

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:moebiuskantor)
+sethue("hotpink")
+drawgraph(g, layout=shell,
+    vertexshapes = (v) -> star(O, 15, v+2, 0.5, 0, :fill))
+end 600 300

Here, the vertex number is hinted at by the number of points on each star.

In the next example, the sizes of the labels and shapes are determined by the degree of each vertex, supplied in a vector.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:karate)
+sethue("slateblue")
+drawgraph(g, layout=stress,
+    vertexlabels = 1:nv(g),
+    vertexlabelfontsizes = [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
+    vertexshapesizes = [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
+    vertexfillcolors = (v) -> v  (1, 3, 6) && colorant"red",
+    )
+end 600 300

One more example with vertexshapes.

julia
function whiten(col::Color, f=0.5)
+    hsl = convert(HSL, col)
+    h, s, l = hsl.h, hsl.s, hsl.l
+    return convert(RGB, HSL(h, s, f))
+end
+
+function drawball(pos, ballradius, col::Color;
+        fromlum=0.2,
+        tolum=1.0)
+    gsave()
+    translate(pos)
+    for i in ballradius:-0.25:1
+        sethue(whiten(col, rescale(i, ballradius, 0.5, fromlum, tolum)))
+        offset = rescale(i, ballradius, 0.5, 0, -ballradius/2)
+        circle(O + (offset, offset), i, :fill)
+    end
+    grestore()
+end
+
+@drawsvg begin
+background("grey10")
+g = clique_graph(5, 6)
+sethue("yellow")
+setline(0.2)
+drawgraph(g,
+    layout = stress,
+    vertexshapes = (v) -> drawball(O, 25, RGB([Karnak.Luxor.julia_red,Karnak.Luxor.julia_purple, Karnak.Luxor.julia_green][rand(1:end)]...))
+)
+end 600 600

vertexstrokecolors and vertexfillcolors

These keywords accept a Colors.jl colorant, an array of them, or a function that generates a color.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:cubical)
+sethue("darkorange")
+drawgraph(g, layout=stress,
+    vertexshapes = :square,
+    vertexshapesizes =  20,
+    vertexfillcolors = [colorant"red", colorant"blue"],
+    vertexstrokecolors = [colorant"blue", colorant"red"])
+end 600 300

The function should return a Colorant for a vertex:

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:icosahedral)
+sethue("darkorange")
+drawgraph(g, layout=spring,
+    vertexshapes = :circle,
+    vertexshapesizes =  20,
+    vertexstrokeweights = 5,
+    vertexstrokecolors = (v) -> HSB(rescale(v, 1, nv(g), 360, 0), 1, 1),
+    vertexfillcolors = (v)   -> HSB(rescale(v, 1, nv(g), 0, 359), 1, 1),
+    )
+end 600 300

or an array of colors:

julia
@drawsvg begin
+background("grey10")
+sethue("orange")
+g = grid((15, 15))
+drawgraph(g,
+    layout = squaregrid,
+    vertexshapesizes = 15,
+    vertexfillcolors = [RGB([Karnak.Luxor.julia_red, Luxor.julia_green,
+        Luxor.julia_purple][rand(1:end)]...) for i in 1:nv(g)])
+end 600 600

The following keyword arguments operate in a similar way:

  • vertexstrokeweights : Array | Range | :none

  • vertexlabeltextcolors : Array | Range | colorant

  • vertexlabelfontsizes : Array | Range | number

  • vertexlabelfontfaces : Array | string

  • vertexlabelrotations : Array | Range | number

  • vertexlabeloffsetangles : Array | Range | number

  • vertexlabeloffsetdistances : Array | Range | number

It's possible to specify the font faces for vertex labels, but it's difficult to demonstrate when the documentation is built on machines in the cloud with unknown typographical resources. But anyway:

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:pappus)
+sethue("slateblue")
+drawgraph(g,
+    vertexlabels = 1:nv(g),
+    vertexshapes = 0,
+    vertexlabelfontfaces = ["Times-Roman", "Courier", "Helvetica-Bold"],
+    vertexlabelfontsizes = 30)
+end 600 300

Edge options

edgefunction

As with vertexfunction, the edgefunction keyword argument allows you to do anything you like when the edges are drawn, and overrides all other edge- keyword arguments. Here, the calculated coordinates of the graph and a path between two vertices aren't drawn at first, just extracted into vectors for further processing.

julia
@drawsvg begin
+background("black")
+sethue("white")
+g = clique_graph(16, 4)
+
+A = Point[]
+B = Point[]
+
+drawgraph(g, layout=stress,
+    edgefunction = (edgenumber, edgesrc, edgedest, from, to) -> begin
+        push!(A, from),
+        push!(A, to)
+        end,
+    vertexshapes = :none,
+    )
+
+route = a_star(g, 6, 29)
+
+drawgraph(g, layout=stress,
+    edgelist = route,
+    vertexshapes = :none,
+    edgefunction = (edgenumber, edgesrc, edgedest, from, to) -> begin
+        push!(B, from),
+        push!(B, to)
+        end)
+
+setlinejoin("bevel")
+setline(0.25)
+
+sethue("grey60")
+@layer begin
+    poly(A, :stroke)
+end
+
+sethue("gold")
+setline(4)
+@layer begin
+    poly(B, :stroke)
+end
+circle.(B[[begin, end]], 5, :fill)
+end 600 400

Note

This keyword overrides the other edge- keywords.

edgelist and edgelines

A Graphs.EdgeIterator supplied to edgelist makes only the specified edges available for drawing. Otherwise, control which edges are to be drawn by supplying numbers (or a function) to edgelines.

julia
@drawsvg begin
+background("grey10")
+sethue("orange")
+g = grid((15, 15))
+drawgraph(g,
+    layout = stress,
+    vertexshapes = :none,
+    edgelines = rand(1:ne(g), 30)
+)
+end 600 300

edgelist is useful for drawing paths - a sequence of edges. For example, if you use a_star() to find the shortest path between two vertices, you can draw the edges with this keyword. It's useful to draw the graph twice, once with all edges, once with selected edges.

julia
@drawsvg begin
+background("grey10")
+g = grid((15, 15))
+
+astar = a_star(g, 1, nv(g))
+
+sethue("orange")
+drawgraph(g,
+    layout = stress,
+    vertexshapes = :none)
+
+sethue("cyan")
+drawgraph(g,
+    layout = stress,
+    vertexshapes = :none,
+    edgestrokeweights = 5,
+    edgelist = astar)
+end 600 300

For more interesting arrows for edges, you can use arrows, and you can also define functions to create all kinds of graphical deatil:

julia
gd = DiGraph()
+add_vertices!(gd, 4)
+add_edge!(gd, 1, 2)
+add_edge!(gd, 1, 3)
+add_edge!(gd, 2, 3)
+add_edge!(gd, 1, 4) # vertex 1 to vertex 4
+add_edge!(gd, 4, 1) # vertex 4 to vertex 1
+
+@drawsvg begin
+    background("grey10")
+    sethue("thistle1")
+    drawgraph(gd, vertexlabels = [1, 2, 3, 4],
+        edgefunction = (n, s, d, f, t) -> begin
+            arrow(f, t, [10, 10],
+            decoration = 0.75,
+            decorate = () -> begin
+                sethue(HSB(60n, 0.7, 0.8))
+                ngon(O, 10, 3, 0, :fill)
+            end,
+            arrowheadfunction= (f, t, a) -> ()
+            )
+        end
+    )
+end 600 300
julia
@drawsvg begin
+background("grey10")
+g = star_graph(12)
+fontsize(20)
+sethue("slateblue")
+drawgraph(g,
+    layout=spring,
+    vertexshapes = 0,
+    vertexlabels = 1:nv(g),
+    vertexlabelfontsizes = 12,
+    edgestrokecolors = distinguishable_colors(ne(g)),
+    edgelines = (k, s, d, f, t) ->
+        arrow(f, between(f, t, .95), [20, -45],
+            linewidth = 5,
+            arrowheadlength = 15,
+            arrowheadangle = π/7,
+            decorate = () -> begin
+                    sethue("purple")
+                    circle(O, 15, :fill)
+                    sethue("white")
+                    text(string(k), angle = -getrotation(), halign = :center, valign=:middle)
+                end,
+            decoration = .7))
+end 600 400

Edge labels

Use edgelabels, edgelabelcolors, edgelabelrotations, etc. to control the appearance of the labels alongside edges.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:dodecahedral)
+g = complete_graph(5)
+sethue("orange")
+fontsize(20)
+drawgraph(g, layout=stress,
+    vertexshapes = :none,
+    vertexlabels = "vertex",
+    vertexlabeltextcolors = colorant"cyan",
+    edgelabels = ["edge"],
+    edgestrokecolors = colorant"orange",
+    edgelabelcolors = colorant"pink",
+    )
+end 600 500

edgelabels can also be a dictionary, where the keys are tuples: (src, dst), and the values are the text labels.

julia
g = complete_graph(5)
+edgelabeldict = Dict()
+n = nv(g)
+for i in 1:n
+    for j in 1:n
+        edgelabeldict[(i, j)] = "($i, $j)"
+    end
+end
+
+@drawsvg begin
+    background("grey10")
+    drawgraph(g, layout=stress,
+        vertexshapes = :circle,
+        vertexlabels = 1:n,
+        edgestrokecolors = colorant"orange",
+        edgelabelcolors = colorant"white",
+        edgelabels = edgelabeldict)
+end 600 350

The edgelabels keyword argument can also accept a function with five arguments: edgenumber, source, destination, from and to. In this example, the graphical distances between the two vertex positions provide the annotations for each edge.

julia
@drawsvg begin
+background("grey10")
+g = smallgraph(:dodecahedral)
+g = complete_graph(5)
+fontsize(20)
+drawgraph(g, layout=stress,
+    vertexshapes = :none,
+    edgestrokecolors = colorant"orange",
+    edgelabels = (k, src, dest, f, t) -> begin
+        @layer begin
+            sethue("white")
+            θ = slope(f, t)
+            text(string(round(distance(f, t), digits=1)),
+                midpoint(f, t),
+                angle=θ,
+                halign=:center)
+        end
+    end)
+end 600 500

The more code you're prepared to write, the more elaborate your labels can be:

julia
sources      = [1,2,1]
+destinations = [2,3,3]
+weights      = [0.5, 0.8, 2.0]
+g = SimpleWeightedGraph(sources, destinations, weights)
+@drawsvg begin
+background("grey10")
+sethue("gold")
+drawgraph(g,
+    vertexlabels = 1:nv(g),
+    vertexshapesizes = 20,
+    vertexlabelfontsizes = 30,
+    edgecurvature = 10,
+    edgegaps = 25,
+    edgelabels = (edgenumber, edgesrc, edgedest, from, to) -> begin
+        @layer begin
+            sethue("black")
+            box(midpoint(from, to), 50, 30, :fill)
+        end
+        box(midpoint(from, to), 50, 30, :stroke)
+        fontsize(16)
+        text(string(get_weight(g, edgesrc, edgedest)),
+            midpoint(from, to),
+            halign=:center,
+            valign=:middle)
+    end)
+end 600 300

For directed weighted graphs, each edge can have two weights. This makes it slightly more difficult to draw the labels automatically. You could write an edge labelling function that calculates the slope of the edge and positions the label accordingly:

julia
function f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
+    sl = slope(from, to)
+    wt = g.weights[edgesrc, edgedest]
+    if sl > π
+        label(string(wt), :e, midpoint(from, to))
+    else
+        label(string(wt), :w, midpoint(from, to))
+    end
+end 
+
+...
+    edgelabels=f,
+...

edgelist

This example draws the graph more than once; once with all the edges, once with only the edges in edgelist, where edgelist is the path from vertex 15 to vertex 17, drawn in a pale translucent yellow, and once to draw the vertices on the path "X marks the spot" cyan-colored crosses.

julia
@drawsvg begin
+    background("grey10")
+    g = smallgraph(:karate)
+    sethue("slateblue")
+
+    drawgraph(g, layout = stress,
+        vertexlabels = 1:nv(g),
+        vertexshapes = :circle,
+        vertexshapesizes = 10,
+        vertexlabelfontsizes = 10)
+
+    astar = a_star(g, 15, 17)
+
+    drawgraph(g,
+        layout=stress,
+        vertexshapes = :none,
+        edgelist = astar,
+        edgestrokecolors=RGBA(1, 1, 0, 0.5),
+        edgestrokeweights=10)
+
+    drawgraph(g,
+        layout=stress,
+        edgelines=0,
+        vertexshapes = (v) -> v  src.(astar) && polycross(O, 20, 4, 0.5, π/4, :fill),
+             vertexfillcolors = (v) -> v  src.(astar) && colorant"cyan"
+        )
+end 600 600

edgecurvature and edgegaps

The edgecurvature keyword determines the curvature of the edges.

The edgegaps keyword sets the distances between the ends of the edges and the vertex positions.

Units, as everywhere in Karnak, are points/pixels (1 point is 0.3527mm).

julia
g = grid((3, 3))
+
+# add some self-loops
+for e in edges(g)
+    add_edge!(g, src(e), src(e))
+    add_edge!(g, dst(e), dst(e))
+end
+
+@drawsvg begin
+    background("grey10")
+    sethue("white")
+    for c in 1:10
+        drawgraph(g,
+            margin=70,
+            vertexshapes = :none,
+            edgegaps = 3c,
+            edgecurvature = 3c,
+            edgestrokecolors = HSB(36c, .8, .8),
+            edgestrokeweights = 0.5,
+            layout=squaregrid)
+    end
+end 600 500

The value for the edge gap (either as supplied in vector, range, or scalar form, or calculated and returned by a function) applies to both ends of an edge. This is a minor issue for cases where, for example, the vertex shapes are different sizes, and the gaps need to be calculated independently for each end of a single edge. You'll have to calculate and draw the edges yourself, as shown in this unnecessarily animated example:

julia
using Karnak, Graphs, Colors
+function frame(scene, framenumber, g, vertexsizes)
+    background("black")
+    eased_n = scene.easingfunction(framenumber - scene.framerange.start,
+        0, 1, (scene.framerange.stop + 1) - scene.framerange.start)
+    a = 10 + vertexsizes[1] * abs(sin(0 + rescale(eased_n, 0, 1, 0, π)))
+    b = 10 + vertexsizes[2] * abs(sin(π / 4 + rescale(eased_n, 0, 1, 0, π)))
+    c = 10 + vertexsizes[3] * abs(sin(π / 3 + rescale(eased_n, 0, 1, 0, π)))
+    d = 10 + vertexsizes[4] * abs(sin(rescale(eased_n, 0, 1, 0, π)))
+    newvertexsizes = [a, b, c, d]
+    sethue("gold")
+    drawgraph(g,
+        margin=80,
+        vertexshapesizes=newvertexsizes,
+        vertexfillcolors=[c for c in Colors.JULIA_LOGO_COLORS |> values],
+        edgefunction=(args...) -> begin
+            edgenumber, edgesrc, edgedest, from, to = args
+            d = distance(from, to)
+            startpoint = between(from, to, newvertexsizes[edgesrc] / d)
+            endpoint = between(from, to, 1 - newvertexsizes[edgedest] / d)
+            arrow(startpoint, endpoint)
+        end)
+end
+
+function main()
+    g = complete_digraph(4)
+    vertexsizes = [20, 35, 50, 60]
+    amovie = Movie(800, 600, "gap animation")
+    animate(amovie,
+        Scene(amovie, (s, f) -> frame(s, f, g, vertexsizes), 1:40),
+        framerate=15,
+        creategif=true,
+        pathname=joinpath(dirname(dirname(pathof(Karnak))) * "/docs/src/assets/figures/edgegapanimation.gif"))
+end
+
+main()

edgestrokecolors and edgestrokeweights

julia
g = barbell_graph(3, 3)
+@drawsvg begin
+    background("grey10")
+    fontsize(30)
+    sethue("white")
+    drawgraph(g,
+        layout=stress,
+        edgelabels = 1:ne(g),
+        edgecurvature = 10,
+        edgestrokeweights = 2 * (1:ne(g)),
+        edgelabelcolors = colorant"white",
+        edgestrokecolors= (n, from, to, edgesrc, edgedest) -> HSB(rescale(n, 1, ne(g), 0, 359), .8, .8))
+end 600 500

edgedashpatterns

Line dashes work the same as in Luxor.jl, ie they're numbers in an array, with line length following by space length. If you want to alternate between dash patterns, supply an array of pattern arrays.

julia
g = grid((5, 5))
+@drawsvg begin
+    background("grey10")
+    sethue("white")
+    drawgraph(g,
+        layout=squaregrid,
+        edgestrokeweights = 5,
+        edgelabels = (edgenumber, edgesrc, edgedest, from::Point, to::Point) ->
+            begin
+                labeltext = ["a", "b", "c"][mod1(edgenumber, end)]
+                label(labeltext, :se, midpoint(from, to), offset=5)
+            end,
+        edgedashpatterns = [[20, 10, 1, 10], [20, 10], [0.5, 10]],
+        edgelabelfontsizes = 20,
+        vertexshapesizes = 2,
+        edgestrokecolors=(edgenumber, from, to, src, dst) ->
+            HSB(rescale(edgenumber, 1, ne(g), 0, 359), .8, .8)
+          )
+end 600 400
+ + + + \ No newline at end of file diff --git a/dev/syntax/05655401.svg b/dev/syntax/05655401.svg deleted file mode 100644 index c21e5e8..0000000 --- a/dev/syntax/05655401.svg +++ /dev/null @@ -1,726 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/193cd084.svg b/dev/syntax/193cd084.svg deleted file mode 100644 index fddbdae..0000000 --- a/dev/syntax/193cd084.svg +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/22398389.svg b/dev/syntax/22398389.svg deleted file mode 100644 index a2e78b1..0000000 --- a/dev/syntax/22398389.svg +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/27aed8d3.svg b/dev/syntax/27aed8d3.svg deleted file mode 100644 index 1ff01c6..0000000 --- a/dev/syntax/27aed8d3.svg +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/2cae3477.svg b/dev/syntax/2cae3477.svg deleted file mode 100644 index 66646a6..0000000 --- a/dev/syntax/2cae3477.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/2ccca73f.svg b/dev/syntax/2ccca73f.svg deleted file mode 100644 index 86cb5a9..0000000 --- a/dev/syntax/2ccca73f.svg +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/339cf2c8.svg b/dev/syntax/339cf2c8.svg deleted file mode 100644 index 4ec393f..0000000 --- a/dev/syntax/339cf2c8.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/35fc5aa0.svg b/dev/syntax/35fc5aa0.svg deleted file mode 100644 index d3912f3..0000000 --- a/dev/syntax/35fc5aa0.svg +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/39dd7f69.svg b/dev/syntax/39dd7f69.svg deleted file mode 100644 index ffe3d93..0000000 --- a/dev/syntax/39dd7f69.svg +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/44043806.svg b/dev/syntax/44043806.svg deleted file mode 100644 index 9cec457..0000000 --- a/dev/syntax/44043806.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/57cadc72.svg b/dev/syntax/57cadc72.svg deleted file mode 100644 index 3563563..0000000 --- a/dev/syntax/57cadc72.svg +++ /dev/null @@ -1,2982 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/657e839e.svg b/dev/syntax/657e839e.svg deleted file mode 100644 index 083d7b9..0000000 --- a/dev/syntax/657e839e.svg +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/682d5e9d.svg b/dev/syntax/682d5e9d.svg deleted file mode 100644 index e723b85..0000000 --- a/dev/syntax/682d5e9d.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/78f3778d.svg b/dev/syntax/78f3778d.svg deleted file mode 100644 index 87d2bca..0000000 --- a/dev/syntax/78f3778d.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/8d7218b0.svg b/dev/syntax/8d7218b0.svg deleted file mode 100644 index f76fff7..0000000 --- a/dev/syntax/8d7218b0.svg +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/906b2799.svg b/dev/syntax/906b2799.svg deleted file mode 100644 index fe00329..0000000 --- a/dev/syntax/906b2799.svg +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/922539e4.svg b/dev/syntax/922539e4.svg deleted file mode 100644 index df2c3ac..0000000 --- a/dev/syntax/922539e4.svg +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/9261a6a3.svg b/dev/syntax/9261a6a3.svg deleted file mode 100644 index 6779675..0000000 --- a/dev/syntax/9261a6a3.svg +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/a87fd90e.svg b/dev/syntax/a87fd90e.svg deleted file mode 100644 index 9eee1ab..0000000 --- a/dev/syntax/a87fd90e.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/b6b7d425.svg b/dev/syntax/b6b7d425.svg deleted file mode 100644 index 0c7fd43..0000000 --- a/dev/syntax/b6b7d425.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/dev/syntax/b7a767ef.svg b/dev/syntax/b7a767ef.svg deleted file mode 100644 index b280ac6..0000000 --- a/dev/syntax/b7a767ef.svg +++ /dev/null @@ -1,1566 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/c13b0aa5.svg b/dev/syntax/c13b0aa5.svg deleted file mode 100644 index ec78af5..0000000 --- a/dev/syntax/c13b0aa5.svg +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/c1d12af4.svg b/dev/syntax/c1d12af4.svg deleted file mode 100644 index 3476a72..0000000 --- a/dev/syntax/c1d12af4.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/ce1186ac.svg b/dev/syntax/ce1186ac.svg deleted file mode 100644 index ca3bf7b..0000000 --- a/dev/syntax/ce1186ac.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/e395a36e.svg b/dev/syntax/e395a36e.svg deleted file mode 100644 index b666d9c..0000000 --- a/dev/syntax/e395a36e.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/f079585b.svg b/dev/syntax/f079585b.svg deleted file mode 100644 index db6454c..0000000 --- a/dev/syntax/f079585b.svg +++ /dev/null @@ -1,651 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/f260d6d1.svg b/dev/syntax/f260d6d1.svg deleted file mode 100644 index 5cb30d9..0000000 --- a/dev/syntax/f260d6d1.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/f53742cf.svg b/dev/syntax/f53742cf.svg deleted file mode 100644 index 532f439..0000000 --- a/dev/syntax/f53742cf.svg +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/feef1387.svg b/dev/syntax/feef1387.svg deleted file mode 100644 index d5f85e7..0000000 --- a/dev/syntax/feef1387.svg +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/syntax/index.html b/dev/syntax/index.html deleted file mode 100644 index 08f7fde..0000000 --- a/dev/syntax/index.html +++ /dev/null @@ -1,587 +0,0 @@ - -Syntax · Karnak

Syntax

Overview

Karnak's function for drawing graphs is drawgraph(). This takes a single argument, a Graph, and tries to place representative graphics on the current Luxor drawing.

The default display for graphs is:

  • current Luxor origin, scale and rotation

  • current Luxor color for edges

  • circles for all vertex shapes

  • no vertex labels

  • all edges drawn

@drawsvg begin
-    background("grey10")
-    sethue("darkcyan")
-    g = complete_graph(10)
-    drawgraph(g)
-end 600 300
Example block output

To control the appearance of the graph, you supply values to the various keyword arguments. Apart from the general keywords BoundingBox, layout, and margin, the keywords can be grouped into two categories:

two groups of keyword

Most of these keyword arguments accept vectors, ranges, and scalar values, and some accept functions as well.

Here's a contrived (and consequently hideously ugly) example of the type of syntax available:

@drawsvg begin
-background("grey10")
-sethue("purple")
-g = smallgraph(:karate)
-drawgraph(g, layout=stress,
-    vertexshapes = [:square, :circle],
-    vertexfillcolors = (v) -> v ∈ (1, 3, 6) ? colorant"red" : colorant"grey40",
-    vertexstrokecolors = colorant"orange",
-    vertexstrokeweights = range(0.5, 4, length=nv(g)),
-    vertexshapesizes = 2 .* [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
-    vertexlabelfontsizes = 2 .* [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
-    vertexlabels = 1:nv(g),
-    vertexlabelrotations = π/8,
-    vertexlabeltextcolors = distinguishable_colors(10)
-)
-end 600 300
Example block output

Here, the outdegree for each vertex (the number of edges leaving it) is used to control the size of the vertices and the font sizes too. vertexshapes flip-flops between squares and circles for each vertex shape, but the size of the shape is determined by a vertexshapesizes function, which receives a Vector of sizes, the outdegree values for each vertex. The font sizes of the labels are also set this way. A vertexfillcolors function lets you determine the shape's fill color for specific vertices, whereas the stroke color is always orange, with stroke weights gradually increasing. The colors of the labels are set by the Colors.distinguishable_colors() function passed to vertexlabeltextcolors. And all the labels are rotated, for no particularly good reason.

Usually, if a vector runs out before the vertices and edges have been drawn, some mod1 magic means the values repeat from the beginning again.

Use drawgraph() more than once, if needed, to build up the graph in layers. Remember to use the same layout algorithm.

Summary of keywords

boundingboxBoundingBoxdrawing will fit inside this bounding box
marginNumbermargin in points/pixels
layoutVector{Point}list of coordinates of each vertex
function from NetworkLayout.jlsquaregrid, shell, stress, etc
f(g::Graph)(g) -> spectral(adjacency_matrix(g), dim=2)
edgefunctionf(edgenumber::Int, edgesrc::Int, edgedest::Int, from::Point, to::Point)function that completely specifies the appearance of every edge. If present, none of the other edge- keyword arguments are used.
vertexfunctionf(vtx::Int, coordinates::Vector{Point})function that completely specifies the appearance of every vertex. If present, None of the other vertex- keyword arguments will be used.
edgecurvatureFloat64curviness of edge arrows
edgedashpatternsVector{Vector}[number]vector of dash patterns
Vector{Number}a dash pattern
edgegapsVectorgaps from each vertex center to arrow tip
Range
Realgaps from every vertex center to arrow tip
edgelabelcolorsVector{Colorant}colors of each vertex's label text
Colorantcolor of all vertex labels
edgelabelfontfacesVector{Strings}[edgenumber]font face for each edge
Stringfont face for every edge
:none
edgelabelfontsizesVector{Number}the font size of each edge label
Numberthe font size of every edge label
edgelabelrotationsVector{angles}rotation of each label
angle::Float64rotation of every label
f(edgenumber, edges, edgedest, from, to)function returns angle for this edge
edgelabelsVector
range
Dict{Int, Int}(src, dst) => "labeltext"
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
:none
edgelinesVector{Int}numbers of edges to be drawn
range
Int
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
edgelistGraphs.EdgeIteratorthe edges to be drawn - takes prioity over edgelines
edgestrokecolorsVector{Colorant}[edge::Int]colors for edges
Colorantcolor for every edge
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)function to set color for this edge
edgestrokeweightsVector{Number}[vtx]
range
Real
f(edgenumber, edgesrc, edgedest, from::Point, to::Point)function that returns a value for line width
vertexfillcolorsVector{Colorant}
Colorant
:none
f(vtx::Int)
vertexlabelfontfacesVector{Strings}font face for each vertex
Stringfont face for every vertex
vertexlabelfontsizesVector
range
Real
:none
f(vtx::Int, coords::Point[])function returns the fontsize for this label
vertexlabeloffsetanglesVector
Range
Real
vertexlabeloffsetdistancesVector
range
Real
vertexlabelrotationsVector
range
Real
:none
vertexlabelsVector{String}cycles
Stringused for all vertices
range[vtx::Int]string of the number in the range, cycles
:none
f(vtx::Int)function returns a string for the vertex label
vertexlabeltextcolorsVector{Colorant}color for each text label
Colorantcolor of all text labels
:none
f(vtx::Int)function returning a colorant
vertexshaperotationsf(vtx::Int)
angle::Float64
vertexshapesVector of :circle :square :noneshapes of each vertex
range[vtx]draw default shape at this vertex
:circle :square :noneshape of every vertex
f(vtx::Int)function draws shape at this vertex (which is Point(0, 0))
vertexshapesizesVector{Real}
range
Real
:none
f(vtx::Int)
vertexstrokecolorsVector
Colorant
:none
f(vtx::Int)
vertexstrokeweightsVector
range
:none

The BoundingBox

The graphics for the graph are placed to fit inside the current BoundingBox (by default, the drawing), after allowing for the margin (the default is 30). Pass a different BoundingBox to the boundingbox keyword argument to control the graph layout's size.

Layout algorithms

The only clever part of this package is provided by NetworkLayout.jl), which is where you should look for information about the various algorithms that determine where vertices are positioned.

You can choose a layout algorithm, or supply the vertex positions yourself.

The main layout algorithms available are:

  • shell

  • spring

  • stress

  • squaregrid

Here are some formulations which work as keywords in drawgraph():

layout = squaregrid
-
-layout = shell
-
-layout = stress
-
-layout = spectral
-
-layout = (g) -> spectral(adjacency_matrix(g), dim=2)
-
-layout = shell ∘ adjacency_matrix
-
-layout = (g) -> sfdp(g, Ptype=Float64, dim=2, tol=0.05, C=0.4, K=2)
-
-layout = Shell(nlist=[6:10,])
-
-layout = Stress(iterations = 100, weights = M) # M is matrix of weights
-
-layout = Spring(iterations = 200, initialtemp = 2.5)

Alternatively, you can pass a vector of points to the layout keyword argument. Vertices will be placed on these points (vertex 1 on point 1, etc...), rather than at points suggested by the NetworkLayout algorithms. For example, in this next drawing, the two sets of points for a bipartite graph are generated beforehand.

@drawsvg begin
-background("grey10")
-N = 12; H = 250; W = 550
-g = complete_bipartite_graph(N, N)
-pts = vcat(
-    between.(O + (-W/2, -H/2),  O + (-W/2, H/2),  range(0, 1, length=N)), # left set
-    between.(O + (W/2, H/2),   O + (W/2, -H/2), range(0, 1, length=N)))   # right set
-circle.(pts, 1, :fill)
-drawgraph(g, vertexlabels = 1:nv(g), layout = pts,
-    edgestrokeweights = 0.5,
-    edgestrokecolors = (n, f, t, s, d) -> HSB(rescale(n, 1, ne(g), 0, 360), 0.6, 0.9))
-end 600 300
Example block output

The calculated positions are returned by the drawgraph() function.

Initial positions for the layout algorithms

Some of the layout algorithms - the Spring and Stress ones, for example - allow you to pass initial vertex positions to be used by the algorithms as starting points. The algorithm will continually adjust them to make a better result. These initial positions should be supplied as xy pairs, rather than Points (which NetworkLayout doesn't know about).

Here's an animation showing how the Stress algorithm gradually improves the layout on each iteration. The initial positions are just the "grid locations" of a Tiler iterator.

using Karnak, Graphs, NetworkLayout, Colors
-
-function frame(scene, framenumber, G)
-
-    background("black")
-    initialpositions = [(pt.x, pt.y) for (pt, n) in Tiler(600, 600, 3, 3)]
-
-    sethue("grey50")
-    circle.(Point.(initialpositions), 3, :fill)
-
-    for i in 1:framenumber
-        setopacity(rescale(i, 1, scene.framerange.stop, 0, 0.6))
-        drawgraph(G,
-            layout=Stress(initialpos=initialpositions, iterations=i),
-            vertexfillcolors=(i == framenumber) ? colorant"gold" : :none
-        )
-    end
-
-end
-
-function main()
-    G = smallgraph(:petersen)
-    amovie = Movie(600, 600, "layout")
-    animate(amovie,
-        Scene(amovie, (s, f) -> frame(s, f, G), 1:60),
-        framerate=10, creategif=true)
-end
-
-main()

animate stress algorithm

The vertexfunction and edgefunction arguments

The two keyword arguments vertexfunction and edgefunction allow you to pass control over the drawing process completely to these two functions.

Note

If you define these functions, all the other vertex/edge keywords are ignored.

vertexfunction = my_vertexfunction(vertex, coordinates)
-edgefunction = my_edgefunction(edgenumber, edgesrc, edgedest, from::Point, to::Point)

These allow you to place graphics at coordinates[vertex], and to draw edges from from to to, using any available tools for drawing.

In the following picture, the vertex positions were passed to a function that placed clipped PNG images on the drawing (using readpng() and placeimage()), and the edges were drawn using sine curves. Refer to the Luxor.jl documentation for more about putting colored things on drawings.

image vertices

It's also possible, for example, to draw a graph at a vertex point (ie recursive graph drawing) if you use vertexfunction.

g = complete_graph(5)
-
-function rgraph(g, l=1)
-    if l > 4
-        return
-    else
-        drawgraph(g,
-            layout=stress,
-            boundingbox=BoundingBox() / 2l,
-            vertexfunction=(v, c) -> begin
-                @layer begin
-                    sethue(HSB(rescale(v, 1, 4, 0, 360), 0.7, 0.8))
-                    translate(c[v])
-                    #circle(c[v], 5, :fill)
-                    rgraph(g, l + 1)
-                end
-            end,
-            )
-    end
-end
-
-@drawsvg begin
-    background("grey10")
-    sethue("gold")
-    rgraph(g)
-end 800 600
Example block output

Functions as keyword arguments

The following keyword arguments accept functions:

  • edgelabelrotations
  • edgelabels
  • edgelines
  • edgestrokecolors
  • edgestrokeweights
  • vertexfillcolors
  • vertexlabels
  • vertexlabeltextcolors
  • vertexshaperotations
  • vertexshapes
  • vertexshapesizes
  • vertexstrokecolors
  • vertexstrokeweights

The edge- keywords accept functions with arguments (edgenumber, sourcevertex, destinationvertex, frompoint, topoint). The vertex- keywords accept functions with arguments (vertex).

These functions aren't used if you supply functions to vertexfunction or edgefunction.

Vertex labels and shapes

vertexlabels

Use vertexlabels to choose the text to associate with each vertex. Supply a range, array of strings or numbers, a single string, or a function.

This example draws all vertices, and numbers them from 1 to 6.

Note

In Graphs.jl, vertices are always numbered from 1 to n. If you remove a vertex, vertices are effectively re-numbered.

@drawsvg begin
-    background("grey10")
-    g = smallgraph(:octahedral)
-    sethue("gold")
-    drawgraph(g, layout=stress,
-        vertexlabels = 1:nv(g),
-        vertexshapesizes = 10)
-end 600 300
Example block output

A function can be passed to vertexlabels to display a vertex; it should accept a single numerical argument, the vertex number, and return a string to display. Labelling all of them isn't always necessary.

@drawsvg begin
-background("grey10")
-g = smallgraph(:octahedral)
-sethue("skyblue")
-drawgraph(g, layout=stress,
-    vertexlabels = (v) -> v ∈ (1, 4, 6) && string(v, "/6"),
-    vertexshapesizes = 15,
-    vertexlabelfontsizes = 20,
-    )
-end 600 300
Example block output

Using LaTex in labels

If you want to use $\LaTeX$ in vertex labels, you can load MathTeXEngine.jl to parse the LaTeXStrings. Make sure the fonts in the MathTexEngine package are also available to the Operating System's font routines (so copying them to your local font folder is probably required).

using Karnak, Graphs, NetworkLayout, Colors
-using MathTeXEngine, LaTeXStrings
-
-g = complete_graph(4)
-@svg begin
-    background("grey10")
-    sethue("cyan")
-    fontsize(40)
-    drawgraph(g,
-        margin=30,
-        vertexlabels = [L"v_%$(x)" for x in 1:nv(g)],
-        vertexlabeloffsetdistances = [40, 40, -40, 40],
-        vertexlabeltextcolors = colorant"white"
-    )
-end 600 300

latex tet

vertexshapes and vertexshapesizes

The default shape for a vertex is a filled circle.

Options for vertexshapes are :circle and :square. With just two in a vector, they will be used alternately.

@drawsvg begin
-background("grey10")
-g = smallgraph(:moebiuskantor)
-sethue("gold")
-drawgraph(g, layout=shell, vertexshapes = [:square, :circle])
-end 600 300
Example block output

vertexshapesizes can set the sizes for the built-in vertex shapes.

@drawsvg begin
-background("grey10")
-g = smallgraph(:moebiuskantor)
-sethue("gold")
-drawgraph(g, layout=shell,
-    vertexshapes = [:square, :circle],
-    vertexshapesizes = [15, 5])
-end 600 300
Example block output
@drawsvg begin
-background("grey10")
-g = smallgraph(:moebiuskantor)
-sethue("gold")
-drawgraph(g, layout=shell,
-    vertexshapesizes = (v) -> rescale(v, 1, nv(g), 5, 25))
-end 600 300
Example block output

vertexshaperotations can set the rotations.

@drawsvg begin
-background("grey10")
-g = smallgraph(:moebiuskantor)
-sethue("gold")
-drawgraph(g, layout=shell,
-    vertexshapes = :square,
-    vertexshapesizes = [10, 20, 5],
-    vertexshaperotations = [π/2, π/3],
-    )
-end 600 300
Example block output

To show every other vertex and label, you could use something like this:

@drawsvg begin
-background("grey10")
-g = smallgraph(:truncatedcube)
-sethue("darkturquoise")
-drawgraph(g, layout=stress,
-    vertexlabels = ["1", ""],
-    vertexshapesizes = [10, 0])
-end 600 300
Example block output

When circles and squares don't cut it, supply a function to vertexshapes. The single argument is the vertex number; any graphics you draw will be centered at the vertex location, the current origin, Point(0, 0).

@drawsvg begin
-background("grey10")
-g = smallgraph(:moebiuskantor)
-sethue("hotpink")
-drawgraph(g, layout=shell,
-    vertexshapes = (v) -> star(O, 15, v+2, 0.5, 0, :fill))
-end 600 300
Example block output

Here, the vertex number is hinted at by the number of points on each star.

In the next example, the sizes of the labels and shapes are determined by the degree of each vertex, supplied in a vector.

@drawsvg begin
-background("grey10")
-g = smallgraph(:karate)
-sethue("slateblue")
-drawgraph(g, layout=stress,
-    vertexlabels = 1:nv(g),
-    vertexlabelfontsizes = [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
-    vertexshapesizes = [Graphs.outdegree(g, v) for v in Graphs.vertices(g)],
-    vertexfillcolors = (v) -> v ∈ (1, 3, 6) && colorant"red",
-    )
-end 600 300
Example block output

One more example with vertexshapes.

function whiten(col::Color, f=0.5)
-    hsl = convert(HSL, col)
-    h, s, l = hsl.h, hsl.s, hsl.l
-    return convert(RGB, HSL(h, s, f))
-end
-
-function drawball(pos, ballradius, col::Color;
-        fromlum=0.2,
-        tolum=1.0)
-    gsave()
-    translate(pos)
-    for i in ballradius:-0.25:1
-        sethue(whiten(col, rescale(i, ballradius, 0.5, fromlum, tolum)))
-        offset = rescale(i, ballradius, 0.5, 0, -ballradius/2)
-        circle(O + (offset, offset), i, :fill)
-    end
-    grestore()
-end
-
-@drawsvg begin
-background("grey10")
-g = clique_graph(5, 6)
-sethue("yellow")
-setline(0.2)
-drawgraph(g,
-    layout = stress,
-    vertexshapes = (v) -> drawball(O, 25, RGB([Karnak.Luxor.julia_red,Karnak.Luxor.julia_purple, Karnak.Luxor.julia_green][rand(1:end)]...))
-)
-end 600 600
Example block output

vertexstrokecolors and vertexfillcolors

These keywords accept a Colors.jl colorant, an array of them, or a function that generates a color.

@drawsvg begin
-background("grey10")
-g = smallgraph(:cubical)
-sethue("darkorange")
-drawgraph(g, layout=stress,
-    vertexshapes = :square,
-    vertexshapesizes =  20,
-    vertexfillcolors = [colorant"red", colorant"blue"],
-    vertexstrokecolors = [colorant"blue", colorant"red"])
-end 600 300

The function should return a Colorant for a vertex:

@drawsvg begin
-background("grey10")
-g = smallgraph(:icosahedral)
-sethue("darkorange")
-drawgraph(g, layout=spring,
-    vertexshapes = :circle,
-    vertexshapesizes =  20,
-    vertexstrokeweights = 5,
-    vertexstrokecolors = (v) -> HSB(rescale(v, 1, nv(g), 360, 0), 1, 1),
-    vertexfillcolors = (v)   -> HSB(rescale(v, 1, nv(g), 0, 359), 1, 1),
-    )
-end 600 300
Example block output

or an array of colors:

@drawsvg begin
-background("grey10")
-sethue("orange")
-g = grid((15, 15))
-drawgraph(g,
-    layout = squaregrid,
-    vertexshapesizes = 15,
-    vertexfillcolors = [RGB([Karnak.Luxor.julia_red, Luxor.julia_green,
-        Luxor.julia_purple][rand(1:end)]...) for i in 1:nv(g)])
-end 600 600
Example block output

The following keyword arguments operate in a similar way:

  • vertexstrokeweights : Array | Range | :none

  • vertexlabeltextcolors : Array | Range | colorant

  • vertexlabelfontsizes : Array | Range | number

  • vertexlabelfontfaces : Array | string

  • vertexlabelrotations : Array | Range | number

  • vertexlabeloffsetangles : Array | Range | number

  • vertexlabeloffsetdistances : Array | Range | number

It's possible to specify the font faces for vertex labels, but it's difficult to demonstrate when the documentation is built on machines in the cloud with unknown typographical resources. But anyway:

@drawsvg begin
-background("grey10")
-g = smallgraph(:pappus)
-sethue("slateblue")
-drawgraph(g,
-    vertexlabels = 1:nv(g),
-    vertexshapes = 0,
-    vertexlabelfontfaces = ["Times-Roman", "Courier", "Helvetica-Bold"],
-    vertexlabelfontsizes = 30)
-end 600 300
Example block output

Edge options

edgefunction

As with vertexfunction, the edgefunction keyword argument allows you to do anything you like when the edges are drawn, and overrides all other edge- keyword arguments. Here, the calculated coordinates of the graph and a path between two vertices aren't drawn at first, just extracted into vectors for further processing.

@drawsvg begin
-background("black")
-sethue("white")
-g = clique_graph(16, 4)
-
-A = Point[]
-B = Point[]
-
-drawgraph(g, layout=stress,
-    edgefunction = (edgenumber, edgesrc, edgedest, from, to) -> begin
-        push!(A, from),
-        push!(A, to)
-        end,
-    vertexshapes = :none,
-    )
-
-route = a_star(g, 6, 29)
-
-drawgraph(g, layout=stress,
-    edgelist = route,
-    vertexshapes = :none,
-    edgefunction = (edgenumber, edgesrc, edgedest, from, to) -> begin
-        push!(B, from),
-        push!(B, to)
-        end)
-
-setlinejoin("bevel")
-setline(0.25)
-
-sethue("grey60")
-@layer begin
-    poly(A, :stroke)
-end
-
-sethue("gold")
-setline(4)
-@layer begin
-    poly(B, :stroke)
-end
-circle.(B[[begin, end]], 5, :fill)
-end 600 400
Example block output
Note

This keyword overrides the other edge- keywords.

edgelist and edgelines

A Graphs.EdgeIterator supplied to edgelist makes only the specified edges available for drawing. Otherwise, control which edges are to be drawn by supplying numbers (or a function) to edgelines.

@drawsvg begin
-background("grey10")
-sethue("orange")
-g = grid((15, 15))
-drawgraph(g,
-    layout = stress,
-    vertexshapes = :none,
-    edgelines = rand(1:ne(g), 30)
-)
-end 600 300

edgelist is useful for drawing paths - a sequence of edges. For example, if you use a_star() to find the shortest path between two vertices, you can draw the edges with this keyword. It's useful to draw the graph twice, once with all edges, once with selected edges.

@drawsvg begin
-background("grey10")
-g = grid((15, 15))
-
-astar = a_star(g, 1, nv(g))
-
-sethue("orange")
-drawgraph(g,
-    layout = stress,
-    vertexshapes = :none)
-
-sethue("cyan")
-drawgraph(g,
-    layout = stress,
-    vertexshapes = :none,
-    edgestrokeweights = 5,
-    edgelist = astar)
-end 600 300
Example block output

For more interesting arrows for edges, you can use arrows, and you can also define functions to create all kinds of graphical deatil:

gd = DiGraph()
-add_vertices!(gd, 4)
-add_edge!(gd, 1, 2)
-add_edge!(gd, 1, 3)
-add_edge!(gd, 2, 3)
-add_edge!(gd, 1, 4) # vertex 1 to vertex 4
-add_edge!(gd, 4, 1) # vertex 4 to vertex 1
-
-@drawsvg begin
-    background("grey10")
-    sethue("thistle1")
-    drawgraph(gd, vertexlabels = [1, 2, 3, 4],
-        edgefunction = (n, s, d, f, t) -> begin
-            arrow(f, t, [10, 10],
-            decoration = 0.75,
-            decorate = () -> begin
-                sethue(HSB(60n, 0.7, 0.8))
-                ngon(O, 10, 3, 0, :fill)
-            end,
-            arrowheadfunction= (f, t, a) -> ()
-            )
-        end
-    )
-end 600 300
Example block output
@drawsvg begin
-background("grey10")
-g = star_graph(12)
-fontsize(20)
-sethue("slateblue")
-drawgraph(g,
-    layout=spring,
-    vertexshapes = 0,
-    vertexlabels = 1:nv(g),
-    vertexlabelfontsizes = 12,
-    edgestrokecolors = distinguishable_colors(ne(g)),
-    edgelines = (k, s, d, f, t) ->
-        arrow(f, between(f, t, .95), [20, -45],
-            linewidth = 5,
-            arrowheadlength = 15,
-            arrowheadangle = π/7,
-            decorate = () -> begin
-                    sethue("purple")
-                    circle(O, 15, :fill)
-                    sethue("white")
-                    text(string(k), angle = -getrotation(), halign = :center, valign=:middle)
-                end,
-            decoration = .7))
-end 600 400
Example block output

Edge labels

Use edgelabels, edgelabelcolors, edgelabelrotations, etc. to control the appearance of the labels alongside edges.

@drawsvg begin
-background("grey10")
-g = smallgraph(:dodecahedral)
-g = complete_graph(5)
-sethue("orange")
-fontsize(20)
-drawgraph(g, layout=stress,
-    vertexshapes = :none,
-    vertexlabels = "vertex",
-    vertexlabeltextcolors = colorant"cyan",
-    edgelabels = ["edge"],
-    edgestrokecolors = colorant"orange",
-    edgelabelcolors = colorant"pink",
-    )
-end 600 500
Example block output

edgelabels can also be a dictionary, where the keys are tuples: (src, dst), and the values are the text labels.

g = complete_graph(5)
-edgelabeldict = Dict()
-n = nv(g)
-for i in 1:n
-    for j in 1:n
-        edgelabeldict[(i, j)] = "($i, $j)"
-    end
-end
-
-@drawsvg begin
-    background("grey10")
-    drawgraph(g, layout=stress,
-        vertexshapes = :circle,
-        vertexlabels = 1:n,
-        edgestrokecolors = colorant"orange",
-        edgelabelcolors = colorant"white",
-        edgelabels = edgelabeldict)
-end 600 350
Example block output

The edgelabels keyword argument can also accept a function with five arguments: edgenumber, source, destination, from and to. In this example, the graphical distances between the two vertex positions provide the annotations for each edge.

@drawsvg begin
-background("grey10")
-g = smallgraph(:dodecahedral)
-g = complete_graph(5)
-fontsize(20)
-drawgraph(g, layout=stress,
-    vertexshapes = :none,
-    edgestrokecolors = colorant"orange",
-    edgelabels = (k, src, dest, f, t) -> begin
-        @layer begin
-            sethue("white")
-            θ = slope(f, t)
-            text(string(round(distance(f, t), digits=1)),
-                midpoint(f, t),
-                angle=θ,
-                halign=:center)
-        end
-    end)
-end 600 500
Example block output

The more code you're prepared to write, the more elaborate your labels can be:

sources      = [1,2,1]
-destinations = [2,3,3]
-weights      = [0.5, 0.8, 2.0]
-g = SimpleWeightedGraph(sources, destinations, weights)
-@drawsvg begin
-background("grey10")
-sethue("gold")
-drawgraph(g,
-    vertexlabels = 1:nv(g),
-    vertexshapesizes = 20,
-    vertexlabelfontsizes = 30,
-    edgecurvature = 10,
-    edgegaps = 25,
-    edgelabels = (edgenumber, edgesrc, edgedest, from, to) -> begin
-        @layer begin
-            sethue("black")
-            box(midpoint(from, to), 50, 30, :fill)
-        end
-        box(midpoint(from, to), 50, 30, :stroke)
-        fontsize(16)
-        text(string(get_weight(g, edgesrc, edgedest)),
-            midpoint(from, to),
-            halign=:center,
-            valign=:middle)
-    end)
-end 600 300
Example block output

For directed weighted graphs, each edge can have two weights. This makes it slightly more difficult to draw the labels automatically. You could write an edge labelling function that calculates the slope of the edge and positions the label accordingly:

function f(edgenumber, edgesrc, edgedest, from::Point, to::Point)
-    sl = slope(from, to)
-    wt = g.weights[edgesrc, edgedest]
-    if sl > π
-        label(string(wt), :e, midpoint(from, to))
-    else
-        label(string(wt), :w, midpoint(from, to))
-    end
-end 
-
-...
-    edgelabels=f,
-...

edgelist

This example draws the graph more than once; once with all the edges, once with only the edges in edgelist, where edgelist is the path from vertex 15 to vertex 17, drawn in a pale translucent yellow, and once to draw the vertices on the path "X marks the spot" cyan-colored crosses.

@drawsvg begin
-    background("grey10")
-    g = smallgraph(:karate)
-    sethue("slateblue")
-
-    drawgraph(g, layout = stress,
-        vertexlabels = 1:nv(g),
-        vertexshapes = :circle,
-        vertexshapesizes = 10,
-        vertexlabelfontsizes = 10)
-
-    astar = a_star(g, 15, 17)
-
-    drawgraph(g,
-        layout=stress,
-        vertexshapes = :none,
-        edgelist = astar,
-        edgestrokecolors=RGBA(1, 1, 0, 0.5),
-        edgestrokeweights=10)
-
-    drawgraph(g,
-        layout=stress,
-        edgelines=0,
-        vertexshapes = (v) -> v ∈ src.(astar) && polycross(O, 20, 4, 0.5, π/4, :fill),
-             vertexfillcolors = (v) -> v ∈ src.(astar) && colorant"cyan"
-        )
-end 600 600
Example block output

edgecurvature and edgecaps

edgecurvature determines the curvature of the edges, and edgegaps sets the distance between the tip of the arrowhead and the vertex position. Units, as everywhere in Karnak, are points/pixels (1 point is 0.3527mm).

g = grid((3, 3))
-
-# add some self-loops
-for e in edges(g)
-    add_edge!(g, src(e), src(e))
-    add_edge!(g, dst(e), dst(e))
-end
-
-@drawsvg begin
-    background("grey10")
-    sethue("white")
-    for c in 1:10
-        drawgraph(g,
-            margin=70,
-            vertexshapes = :none,
-            edgegaps = 3c,
-            edgecurvature = 3c,
-            edgestrokecolors = HSB(36c, .8, .8),
-            edgestrokeweights = 0.5,
-            layout=squaregrid)
-    end
-end 600 500
Example block output

edgestrokecolors and edgestrokeweights

g = barbell_graph(3, 3)
-@drawsvg begin
-    background("grey10")
-    fontsize(30)
-    sethue("white")
-    drawgraph(g,
-        layout=stress,
-        edgelabels = 1:ne(g),
-        edgecurvature = 10,
-        edgestrokeweights = 2 * (1:ne(g)),
-        edgelabelcolors = colorant"white",
-        edgestrokecolors= (n, from, to, edgesrc, edgedest) -> HSB(rescale(n, 1, ne(g), 0, 359), .8, .8))
-end 600 500
Example block output

edgedashpatterns

Line dashes work the same as in Luxor.jl, ie they're numbers in an array, with line length following by space length. If you want to alternate between dash patterns, supply an array of pattern arrays.

g = grid((5, 5))
-@drawsvg begin
-    background("grey10")
-    sethue("white")
-    drawgraph(g,
-        layout=squaregrid,
-        edgestrokeweights = 5,
-        edgelabels = (edgenumber, edgesrc, edgedest, from::Point, to::Point) ->
-            begin
-                labeltext = ["a", "b", "c"][mod1(edgenumber, end)]
-                label(labeltext, :se, midpoint(from, to), offset=5)
-            end,
-        edgedashpatterns = [[20, 10, 1, 10], [20, 10], [0.5, 10]],
-        edgelabelfontsizes = 20,
-        vertexshapesizes = 2,
-        edgestrokecolors=(edgenumber, from, to, src, dst) ->
-            HSB(rescale(edgenumber, 1, ne(g), 0, 359), .8, .8)
-          )
-end 600 400
Example block output

ZW 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�zBE;A6`RoYnYVbGchb9$^iIU2 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 literal 0 HcmV?d00001 diff --git a/dev/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 b/dev/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5a9f9cb9ca0cd78b6ea2f3e5c9d2838dc8895598 GIT binary patch literal 8492 zcmV+{A=BP>Pew8T0RR9103j>@5dZ)H07h5<03gEv0|eaw00000000000000000000 z0000Qfg~G@2plRuNLE2of^Y_4KT}jeRDl`*f;ca13aJRB4KTl60X7081B4(8f)W4( zAO(aP2Ot}wL8BwA#{rDwTbk^j37MN0nnkm<&CYCgamAG{BQEv-@{h({JoW2WsiKJ{ zny6DpNHPoG)7pQYy0^RMEdaY!8%0bCP)`3Bl0b67#zmoxM+wMNKk&@$|J=(RT-bHH z&ZRfSMH4riXiQO2mtGhuDmm0S*_?%n8{4L$t(=MqgOqF)PiZY%M!9Mg`Sy%wXsdWi zi&vE7_{K|0QofPlA|)dwE)T@Ldw-UVjnSme!@vrsm!}gjPXlfXhXJSKzO~;D_{{Ft zj#v{*BuL~hh*>+q?$fMk0}-VxizyHmlss&T2(Vn%$U|B3849(nV*F&`?B==1_Ccqdm|ZONTW&&@StM@DVh$ga-iLzu~Y&GUY_3sURj%X_ncfPmoA3C17NwajDXbzt)aEFj@Hu#+DKbyD?gcrUjTvlky0JwkaT2p z8AY2Qu-I6`8`6=EbfhC4=}1R9)LA0?t`iZ766832kO=LeFLgp3u?_&16bTh}*?wY` z29u=(+z0CbsIRUF)!9(t07}m;w`r94SH>0B--x_ovEiXmZ)gc(sTKfsm$@cOl_kKB zN)2Gol=8c&Goqr1n?d6e5Jt%HJd<)iXHgQ)^Rhmn93`fF;Kl{9m&So$tpP#T0KFe7K@E#vfJ8{t0S5CS zV4r0~E^7FF25T$%Y^d(U#(j8H@?`KvynmwSL7-2301rqk_+P&ibaEe_Wl#Eizfb8? zhcppoL>neROy zplht+UGz3~5sWb+6fE|u>f6a8;ijibrcN!R z%OtvX+N^2PENMf_Qh3-^ZZBP0X~#^do&u@bUbbu<9d(f8Z;AjxmY~QZqKntoYS(Di zuT}zdatJqJdZomZdPuNFvMCpctqloDU1yo2=sWVGFV@xOZs z8Je~B$nL}1Z$Ztb6hwWg5$8fQapIDgi53Qph^mk*Hojm4My|x$^mrcA%T`Sw%dY^} znZTQ{7W1K8YB{;I0Fw~8eEfiYFyufL?gUqb%oUWvLO~8<`P~D}eM2AkS6`i^g#Dt( zs7erIq=p4jf=yCgC)NEzzVhZKFM99dw$7%-d+enbyZcUaUTOK=Qz`MmVcC*x((=No zf=eB6X&VM<(ju}X3Cu>1$rdt2H7O0#$CpeKG|Q8X6ar`_F6r@xQM)B!XfbODc&O_Q zYuK=*qg3fxHX8EAGMe{pF<4BgBpdBUCLh^A!qyp`s>or4AgGzw9IG?7!)~nCUHi02 zR=O_GM(k#zdYSbSujOV(`(?9{=^5o5Nh@6-on%Z#U0)fldj0x&5kM!L@R5=B~ zvSP~{r#D|*3UxTEyXk4ArojO;^ z83*hm!k#W19N#u`S!$4EzN@o}Usi<>v{*o09>D?P1H{Uf4v~WDJ}OFq@w;d=_t=G# zE%!2SG|7D_ELvRgPWq?7BKmsp!@JY%061j8VVu9pYxG_w!Z$mfzG$EKp_Abu98A?< z-y@*>`n#7Ib_*@bmHh>OtL6=E6MuZ}oM=+c6W?`V_sp3rAg1Q~`(FGHX1(FMh%HY* zhCKBpziR8y@4u_2$xBmx`7>MAV@;%O@4x?ttt-(3mNQHVe+Lh>hyC5hH&lIih2v0w z*?~XBIz+|)Sp1nvk2<4n$!**fOAv8ReOGv?z?*U6Lbes-*E z?bVuv&jtEM7j>-gm3rEC|L>!8GDPg$vGZ)rrjc&nw#^^tB0uT*UB!C~YB%Jckm?K# z`_7o4(kJjuJ^z+IefzB~<^MU~b82&=>E+^d5^#ur$A9IC1OM9mcQf{8zn(YT2XlOaA8EgPb28~R%>6Rd`Af}br*}^MPVWj1b~Sx9^pyGe;E`=V z9JHV6Onqm1abu5kTkGVS>x-v6`R=K|bP$0JN!Y+y21{<*s8DR)xTK3OuMSePASCt3QVw$5(AEq846U_kcCO$xzWTefN|@I83w!$aq#D8jekW+S2#lO31#a z0f;h%9lCR|c-}>Li>*KbBw)jieH((n|B54rsjLtfns z$=v;w4V;%RhF|P#vTS@TAEZcjUtDnZ7vb1}*c%rvg!cX|UcA1sy``aX+~dazV^<6H zwRaxBipRFREF3v-`HfG`{Vy-FcwJ*tlf0@m4MVJdZbr3}%PaOg+>rm|f4^*BzsjUs zfy3;>;i%=x+rCeJeA^OTT&HVkXNNQ@-HhZs`uqbP?xlA*L62Q_ibXqGp&NP=*eq^O9O`zjCtX$b1JNT10; zWdB}Vu*d*N#7M6P80jS}lcZ$TV~nbl{@N#{WsN7&?W>Yp; zaKmrtVi3`pRYGE`}^zOw$bWb%$ ziQnIwTGk;Z!)h6adRfb~kECc5r)t@f+G%gSE+g7?hafW)btanagbSWC8wvpy=MJ7_ ze*X6=v*Xv-bDs^N005u@I3ivu6K3IRcRqnoRX!i2C?b`tPRVR1@eDJ=Ap0$cjSY}N z&5Pm+P?Jx1c+#`6g*7&kICA0PL40khY-&E88iKVLV9peyYdMfz%0vi#dU_Q zMmKJXfgk6&EIhV=o1&={9FEpTqf@w8#e}IQWWVG%xp}#K8^3`Wl=$nnVy-$RGifWc z1|sd)BW@hHx{H`7l8B*Wz=KQA(uTNv#-nN&;1s2fiNXkOU|ayJ^VYLQ0MyPUVwFWQ zI4x?}P}87E3v&64-vTNos%fCG!H_rO#9f`PQI$(k=wx?5#L3zXM6~Q-1G=~b4qza0 zS6pY)b)|kPX_WXVt5>^>2Nyu&(P)VCcA*5|wc*3t0RV=fYf(8?rU`=Ck>7zLRJ2 z^OBG4DErHE<#>6wcuSysS8mjzT3TmSMO{;G)%%UhrdnB(Hbv7kUE9(2x98d`?cL!x zrJPDmHRmJF=bZoJT<6@z5uC&y!XLrc;m!Ed_#yly{2sTHdx+b^?dN{TJ+Sl(} z_r3V*{4M@a8hn@o2oM1RGXQ{gt%^Zzt(A!l3`XUQ$tFdCwzfYbhcxL7hmA%nji`}~ zdl}M?XaR!(1~3sMC=<}qSe}tHq)FkpoKadiH={rR7ZBhAfSKqRGt#gk2NSYK;0XXl z5LC{zw*X9K0P#sUfGAHC$Ym@yi-Z9xC{6%@o8Hy~svJC_DgcU}MW3rwnLA$LgwNvUxz3#2p?C`sQ&L@KfbuCpEVuVn)+ zhjp(fzo-4!{-8~`wf8zLOLi4T-q^x}{~Y!RldOBki-#E51D z;*5QQ98TCCQ2{$Uo1pePMKb*sCoXh;_T)L{mC%2)#{L4r`2e?10AWIs}%D7cM)J8`7>|HI{^-K~ z`~&!H3K+oF%eE4@@q&WUHr7jVs~o!Xm$uWAk~?8t!#gDsx?KU?rcI{f`L$dEW_&~la&8Am z@?1DTchW&s2!#$DCxBOj-R+$k(`GvWG<`}{qP6yBme=CKn9y4v0v#KsWYCFR#V!ye z1Sf3;Fb!4UYSuT2D?n$K1nAmpw*>LIEAO2N`+)>?E{Q4aRDUUN({FrChiA-lW#+*24fC;3RAro57J;ybWtb_Ui+n7tg40{LiL)*lc4T}1d;naJ(?vaQ{=>li%GA7sVy4m8M~!XD9q7PH{r;?nzlR$x#- z?_y{%R%AmC`U(f{^L`cd%*dzC+ih-}Z1yG3-LiP`(pHzfOU|^pW2R#N)25?*fT@bX#D>Bjl1R| zwHfh9A3UqLgI2Gvo_4rzaBN&MbJ_2seV5~}Q9>6-uvHla0{dp{-TB%r(XJ(Mk$YsY zYM<14e#X~hS3n>*B`03?@S%sWkn(g3(}%`X*o7o840lp5klv zx^}8*=nkC_vvSJkfz*EcK;<_&M6z|indvep%PAjL)Dn82dmse+eie>@n9v1#Wx%_rut1);n&qm>u9ID(=q6k#DK zcus&+PEBY`3h-j0zq4JXTJ2@m14PG|moJ;5X{Qsy`W#+I6i3t{8^Z2a9*B`pQk>~5gEur>|DYp{w5AMiy?&}b0 zGA5tI{`~9o%w3GkpS|@*zQGpk+i2ec?3*JFPm~++OVLP9v}V5ox~nmA{~B>v$!xc> z7;U@4;-z5bnutQn9Oe-;x5PwVJXv58m4U*}!xRu8fGsQVpN}Zkn;?(;j919PMqsX@ zQ8|DEY&p|fKM{7mlgr)ti#?_9YOan>oT!#V4@a`JLQp)x@A64!wo64J}ETfgGJqe5F)r{N;AKFDTj8uSL1Uy zwA&et&*{)^_%-WN0}$d8kB5ID;|qcdadL?UmSy77!OAXjiH=~=brMP zfL5=C$LD8;-R?-_77-kCGehZ@t5S4biNGhmHH&_UKn?YZCRe&ehX{Y8iG++2)UJ3t zj4oG;PFw(s{&fZ3jr+)r^A|@kR3xF9jtB?Ea>nSVi@9$YT-}18go5d?&TY|UPFmy) zWvZirs~H=wefj+$e)sy<9_Jtpsi0}65+af!bCCz({78enTM*tv1zaM;nP?OEEpl+- z>ZndzVdFWAqjJ{v@PlHz^i7&B-7P6m4U{6h#2jPcS<%GCL)|jbq3k&t`Z{XFI%uZ0 zpJE{pivnmm0gh<+vXw=qQsjSK*rhieL@MnPhjw!z zj!S8#J$rk*w-irciA2onjU}uKNRknT@cGryFEtWI!e$ytS9c>Z zpI=d!2BNT#oJ4D)!#`qNPWHFN$SKJ53AMEk2EFz_9}WcHa=ULyYZpJJJ)zz@LAdo+ zUr*&txE|>QmJ1<|8_H`6J#I8!jV}pM&Mb-${H3d>06#%ysF^yVTF9zD$Qz$ zw=+g0;v^-=5sBt0%cUdWtU*|yf=}yv65wlsd_|bkc<)B zKx9dc^{DrQN=qkaJ$sJP#%VtP<-@b^)7JV?OJzGE&)s8$Bb^(xjKwgD_8^5}>Fn!} z7RqEoE0|7#FeBKPXdWC13#Tm5wC*cb%E60cd;)cX1-m-LLa$nY-G#9OZg;>sZX2^( zEI-`t^qVd+wKJ)7@^edzn)ea0S{lq{WcA=Le!u^hP97G<4Rfe)J*~7Grt@_~rqoZ@ zFDfdI9(|!&*6MLLxMKG9d$0C5kG^rDZwa%)1U`MaD@Hn(v`qFxkN0u(_I-?+F3$X! z<2^8@z*-GWUB#R{Kb{dYXG^B#xUJhUW|723Kw{x%205rX^N%&pEE@qJ| zpUvmT<3C4!42KDVoBlhS^%b{btyAr%r|;`xn8icS%{6PzocUMJQfA+G+UBfY4|?xNGi80s-MeEJcw)>?`o?XX8z;_Px+~5Jl6CB7FFRLhgO9VhW~F=A3uA!U}Jnj^|FB z>73KT!6*vD^cZdd+=}Bs5=mS@YG`mswX4SEkzOxJ21u9J>mtPIDEi=4Q*W-5QBK*M zhcR34QZI@x?*TovT2QG#K!dpn1X4;Uq^v6F#YqPa2I$6)lJ2M_=efg+$z-X&(_)c8 zAVQ5RaPg9r(~r6DnFHQzg>GC^FvJ`Ei!Vn{oOtc%GRELm*La#M>IXR0#7Hw_A5URe z6^2nbe)~?5P~L11PMIQEFuBCaE*8h6CW(p$^CA(RkK;Hc6xArfT=4zOO}OuUvR;yO zkfb-A9y2)YHby&D^K;NG^@x-gyt{Kx3oWLF&6h^uogboCQdS!5 z(JnC1;4ON!tmDa*#Q^&8a1J*wahPt7GeVeNUM{WI)NR=#2RpXdc{tEQy(E^XY(5rr zqjsR*6?}hS=*(cP$2*kzZy<f5&+Pk01)`@QF`0@L`kO=K*aX5dtz~l49AG-2TI$o zIxGnfH7A)0N7Xc%AdAJYbvjLhGaUmnTYGhF*-j9V;ewesc7tm>K#m60!Azw%uHJ*g z@-W&oRM>+PqmKb{ktFTvB5G%I>?fVt!cl3zn3WTLJrRt=`%>6f0lF>48E0!}NY+r^ z3h-t%6D}#Dz<-Uve^lD^xfK=|SE5yxqD@I-86OBkf*ge~GY)rnmCIY@5-do}1>h3U zhY>urVN`*~!z?qkmt*E|p1F>fv32J{3V{$3VG>+4JeKj|;UakMS>wiuAY2R)VBrTS z3drzy@Srq2f#RUzxlr(eMO53tXpdc5G&ATR@NW2Lk@N}F?%>wG<+h)wTkRT4W0xIT zZMDU^Q0^%m40cfdq}AXWTQz^#?KbIUb?087&Qc3T=&Q6KLz~P|x#hXGlGv=yAnI$e z!+x{`W}8W((tHawYtdnb1FkoNFuZQsV!I_e)m=7CQyVV(H~HA@Nxcm|Wt+7lZo9OA a!Vc~9U7SGB8$q3Ii#9CnAx#qS0RRAsKuhfa literal 0 HcmV?d00001 diff --git a/dev/assets/karnak-docs.css b/dev/assets/karnak-docs.css deleted file mode 100644 index 5684dfe..0000000 --- a/dev/assets/karnak-docs.css +++ /dev/null @@ -1,130 +0,0 @@ -/* change Bulma Dark styles */ - -/* disclaimer - I hate CSS */ - -:root { - --signage: hsl(193, 46%, 60%); - --verydark: hsl(237, 20%, 10%); - --quitedark: hsl(237, 20%, 13%); - --lessdark: hsl(237, 20%, 16%); -} - -html.theme--documenter-dark body { - background-color: var(--verydark); - color: #eff; - font-size: 1.1em; - font-weight: 400; - line-height: 1.8rem; -} - -html.theme--documenter-dark a { - color: var(--signage); -} - -html.theme--documenter-dark p > a:after { - padding-left:0.2rem; - font-family: "JuliaMono"; - content: "⮻"; - color: var(--signage); - background-color: inherit; - font-size: 120%; -} - -html.theme--documenter-light p > a:after { - padding-left:0.2rem; - font-family: "JuliaMono"; - content: "⮻"; - background-color: inherit; - font-size: 120%; -} - -html.theme--documenter-dark .has-text-left, -html.theme--documenter-dark body, -html.theme--documenter-dark #documenter .docs-sidebar, -html.theme--documenter-dark .documenter-example-output, -html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem, -html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover, -html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem, -html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover, -html.theme--documenter-dark #documenter .docs-main header.docs-navbar { - background-color: var(--verydark); - border: 0.5px solid hsla(237, 20%, 10%, 0.3) !important; -} - -html.theme--documenter-dark .modal-card-body , -html.theme--documenter-dark .modal-card-head , -html.theme--documenter-dark .modal-card-foot , -html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu , -html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active { - background-color: var(--verydark); -} - -html.theme--documenter-dark .docstring , -html.theme--documenter-dark .docstring>header { - background-color: var(--lessdark); -} - -html.theme--documenter-dark .content pre, -html.theme--documenter-dark pre { - background-color: var(--lessdark); - border: 0.5px solid hsla(237, 20%, 10%, 0.3) !important; -} - -html.theme--documenter-dark a { - color: var(--signage); -} - -html.theme--documenter-dark .modal-card-head { - border: none; -} - - -.schemename { - font-family: "JuliaMono"; -} - -.swatch { - -} - -.category { - font-family: "JuliaMono"; - font-size: 0.8em; -} - -html.theme--documenter-dark p > code { - color: #eff !important; -} - - -html.theme--documenter-dark li > code { - color: #eff !important; -} - - -html.theme--documenter-dark a > code { - color: #eff !important; -} - -html.theme--documenter-dark p > a { - color: #eff !important; - } - -html.theme--documenter-dark .select select:focus, -html.theme--documenter-dark .textarea:focus, -html.theme--documenter-dark .input:focus, -html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus, -html.theme--documenter-dark .select select.is-focused, -html.theme--documenter-dark .is-focused.textarea, -html.theme--documenter-dark .is-focused.input, -html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused, -html.theme--documenter-dark .select select:active, -html.theme--documenter-dark .textarea:active, -html.theme--documenter-dark .input:active, -html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active, -html.theme--documenter-dark .select select.is-active, -html.theme--documenter-dark .is-active.textarea, -html.theme--documenter-dark .is-active.input, -html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active { - border-color: var(--signage); -} diff --git a/dev/assets/figures/karnakmap.png b/dev/assets/karnakmap.B9r8wlPZ.png similarity index 100% rename from dev/assets/figures/karnakmap.png rename to dev/assets/karnakmap.B9r8wlPZ.png diff --git a/dev/assets/figures/latextext.svg b/dev/assets/latextext.D6K4VOzp.svg similarity index 100% rename from dev/assets/figures/latextext.svg rename to dev/assets/latextext.D6K4VOzp.svg diff --git a/dev/assets/figures/ll_tree.svg b/dev/assets/ll_tree.nJMR1l_c.svg similarity index 100% rename from dev/assets/figures/ll_tree.svg rename to dev/assets/ll_tree.nJMR1l_c.svg diff --git a/dev/assets/figures/pagerank.svg b/dev/assets/pagerank.C3B1wbP-.svg similarity index 100% rename from dev/assets/figures/pagerank.svg rename to dev/assets/pagerank.C3B1wbP-.svg diff --git a/dev/assets/reference_api.md.Bu8sozjY.js b/dev/assets/reference_api.md.Bu8sozjY.js new file mode 100644 index 0000000..32f18b0 --- /dev/null +++ b/dev/assets/reference_api.md.Bu8sozjY.js @@ -0,0 +1,128 @@ +import{_ as n,c as s,o as a,a7 as p}from"./chunks/framework.BHs3sUaM.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"reference/api.md","filePath":"reference/api.md","lastUpdated":null}'),e={name:"reference/api.md"},l=p(`