From a5a35582153cb2d60ca7754622a8263314a43fe8 Mon Sep 17 00:00:00 2001 From: alandefreitas Date: Tue, 3 Dec 2024 14:16:18 +0000 Subject: [PATCH] deploy: 8693504c861d6c5e60940fc4cb21bffda1c73746 --- .nojekyll | 0 docs/404.html | 58 + docs/_/css/boostlook.css | 1 + docs/_/css/search.css | 123 + docs/_/css/site.css | 1 + docs/_/css/vendor/tabs.css | 1 + docs/_/font/roboto-latin-400-italic.woff | Bin 0 -> 22048 bytes docs/_/font/roboto-latin-400-italic.woff2 | Bin 0 -> 17368 bytes docs/_/font/roboto-latin-400-normal.woff | Bin 0 -> 20344 bytes docs/_/font/roboto-latin-400-normal.woff2 | Bin 0 -> 15744 bytes docs/_/font/roboto-latin-500-italic.woff | Bin 0 -> 22092 bytes docs/_/font/roboto-latin-500-italic.woff2 | Bin 0 -> 17336 bytes docs/_/font/roboto-latin-500-normal.woff | Bin 0 -> 20544 bytes docs/_/font/roboto-latin-500-normal.woff2 | Bin 0 -> 15920 bytes docs/_/font/roboto-mono-latin-400-normal.woff | Bin 0 -> 15160 bytes .../_/font/roboto-mono-latin-400-normal.woff2 | Bin 0 -> 12312 bytes docs/_/font/roboto-mono-latin-500-normal.woff | Bin 0 -> 15364 bytes .../_/font/roboto-mono-latin-500-normal.woff2 | Bin 0 -> 12532 bytes ...Boost_Brandmark_WhiteBoost_Transparent.svg | 1 + docs/_/img/Boost_Symbol_Transparent.svg | 1 + docs/_/img/arrow-left.svg | 1 + docs/_/img/arrow-right.svg | 1 + docs/_/img/arrow-up.svg | 1 + docs/_/img/back.svg | 1 + docs/_/img/caret.svg | 1 + docs/_/img/caution.svg | 1 + docs/_/img/chevron.svg | 1 + docs/_/img/dark-back.svg | 1 + docs/_/img/dark-menu.svg | 1 + docs/_/img/home-o.svg | 1 + docs/_/img/home.png | Bin 0 -> 358 bytes docs/_/img/home.svg | 1 + docs/_/img/important.svg | 1 + docs/_/img/menu.svg | 1 + docs/_/img/next.png | Bin 0 -> 336 bytes docs/_/img/note.svg | 1 + docs/_/img/octicons-16.svg | 1 + docs/_/img/prev.png | Bin 0 -> 334 bytes docs/_/img/tip.svg | 1 + docs/_/img/up.png | Bin 0 -> 370 bytes docs/_/img/warning.svg | 1 + docs/_/js/search-ui.js | 448 +++ docs/_/js/site.js | 6 + docs/_/js/vendor/highlight.js | 1 + docs/_/js/vendor/lunr.js | 6 + docs/_/js/vendor/tabs.js | 2 + docs/index.html | 9 + .../develop/_attachments/mrdocs.schema.json | 263 ++ docs/mrdocs/develop/_images/MrDocsBanner.jpg | Bin 0 -> 163542 bytes .../develop/_images/generator_front.svg | 1066 +++++++ docs/mrdocs/develop/commands.html | 187 ++ docs/mrdocs/develop/config-file.html | 1330 ++++++++ docs/mrdocs/develop/contribute.html | 667 ++++ docs/mrdocs/develop/demos.html | 251 ++ docs/mrdocs/develop/design-notes.html | 307 ++ docs/mrdocs/develop/generators.html | 1642 ++++++++++ docs/mrdocs/develop/index.html | 125 + docs/mrdocs/develop/install.html | 1088 +++++++ docs/mrdocs/develop/license.html | 377 +++ docs/mrdocs/develop/usage.html | 498 +++ docs/robots.txt | 2 + docs/search-index.js | 1 + docs/sitemap.xml | 43 + index.html | 565 ++++ styles.css | 2743 +++++++++++++++++ 65 files changed, 11830 insertions(+) create mode 100644 .nojekyll create mode 100644 docs/404.html create mode 100644 docs/_/css/boostlook.css create mode 100644 docs/_/css/search.css create mode 100644 docs/_/css/site.css create mode 100644 docs/_/css/vendor/tabs.css create mode 100644 docs/_/font/roboto-latin-400-italic.woff create mode 100644 docs/_/font/roboto-latin-400-italic.woff2 create mode 100644 docs/_/font/roboto-latin-400-normal.woff create mode 100644 docs/_/font/roboto-latin-400-normal.woff2 create mode 100644 docs/_/font/roboto-latin-500-italic.woff create mode 100644 docs/_/font/roboto-latin-500-italic.woff2 create mode 100644 docs/_/font/roboto-latin-500-normal.woff create mode 100644 docs/_/font/roboto-latin-500-normal.woff2 create mode 100644 docs/_/font/roboto-mono-latin-400-normal.woff create mode 100644 docs/_/font/roboto-mono-latin-400-normal.woff2 create mode 100644 docs/_/font/roboto-mono-latin-500-normal.woff create mode 100644 docs/_/font/roboto-mono-latin-500-normal.woff2 create mode 100644 docs/_/img/Boost_Brandmark_WhiteBoost_Transparent.svg create mode 100755 docs/_/img/Boost_Symbol_Transparent.svg create mode 100644 docs/_/img/arrow-left.svg create mode 100644 docs/_/img/arrow-right.svg create mode 100644 docs/_/img/arrow-up.svg create mode 100644 docs/_/img/back.svg create mode 100644 docs/_/img/caret.svg create mode 100644 docs/_/img/caution.svg create mode 100644 docs/_/img/chevron.svg create mode 100644 docs/_/img/dark-back.svg create mode 100644 docs/_/img/dark-menu.svg create mode 100644 docs/_/img/home-o.svg create mode 100644 docs/_/img/home.png create mode 100644 docs/_/img/home.svg create mode 100644 docs/_/img/important.svg create mode 100644 docs/_/img/menu.svg create mode 100644 docs/_/img/next.png create mode 100644 docs/_/img/note.svg create mode 100644 docs/_/img/octicons-16.svg create mode 100644 docs/_/img/prev.png create mode 100644 docs/_/img/tip.svg create mode 100644 docs/_/img/up.png create mode 100644 docs/_/img/warning.svg create mode 100644 docs/_/js/search-ui.js create mode 100644 docs/_/js/site.js create mode 100644 docs/_/js/vendor/highlight.js create mode 100644 docs/_/js/vendor/lunr.js create mode 100644 docs/_/js/vendor/tabs.js create mode 100644 docs/index.html create mode 100644 docs/mrdocs/develop/_attachments/mrdocs.schema.json create mode 100644 docs/mrdocs/develop/_images/MrDocsBanner.jpg create mode 100644 docs/mrdocs/develop/_images/generator_front.svg create mode 100644 docs/mrdocs/develop/commands.html create mode 100644 docs/mrdocs/develop/config-file.html create mode 100644 docs/mrdocs/develop/contribute.html create mode 100644 docs/mrdocs/develop/demos.html create mode 100644 docs/mrdocs/develop/design-notes.html create mode 100644 docs/mrdocs/develop/generators.html create mode 100644 docs/mrdocs/develop/index.html create mode 100644 docs/mrdocs/develop/install.html create mode 100644 docs/mrdocs/develop/license.html create mode 100644 docs/mrdocs/develop/usage.html create mode 100644 docs/robots.txt create mode 100644 docs/search-index.js create mode 100644 docs/sitemap.xml create mode 100644 index.html create mode 100644 styles.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 000000000..78c5f13a0 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,58 @@ + + + + + + Page Not Found :: MrDocs + + + + + + + + + +
+ +
+
+

Page Not Found

+
+

The page you’re looking for does not exist. It may have been moved. You can return to the start page, or follow one of the links in the navigation to the left.

+
+
+

If you arrived on this page by clicking on a link, please notify the owner of the site that the link is broken. +If you typed the URL of this page manually, please double check that you entered the address correctly.

+
+
+
+ +
+ + + diff --git a/docs/_/css/boostlook.css b/docs/_/css/boostlook.css new file mode 100644 index 000000000..2dde33b27 --- /dev/null +++ b/docs/_/css/boostlook.css @@ -0,0 +1 @@ +:root{--bl-primary-color:#ff9f00;--bl-header-height:2.5rem;--light-bl-background:#fff;--light-bl-breadcrumbs-svg-color:#000;--light-bl-caret-svg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M320-200v-560l440 280-440 280z'/%3E%3C/svg%3E");--light-bl-card-background-color:#fff;--light-bl-code-background:#fff;--light-bl-code-border-color:#dcdcdc;--light-bl-code-text-color:#000;--light-bl-link-color:#005a9c;--light-bl-link-hover-color:rgba(0,90,156,0.7);--light-bl-hljs-attribute-color:#4682b4;--light-bl-hljs-doctag-color:#d14;--light-bl-hljs-keyword-color:#333;--light-bl-hljs-number-color:teal;--light-bl-hljs-section-color:#900;--light-bl-nav-link-color:#000;--light-bl-nav-link-hover-color:rgba(0,0,0,0.6);--light-bl-nav-fade-color:#fff;--light-bl-paragraph-color:#000;--light-bl-pasteboard-color:#e5e7eb;--light-bl-pre-background:#f8f8f8;--light-bl-primary-color:#ff9f00;--light-bl-quote-background:#fff;--light-bl-table-border-color:#e8e8e8;--light-bl-table-head-background:#f8f8f8;--light-bl-table-stripe-color:#f8f8f8;--light-bl-tabpanel-background:#fff;--light-bl-text-color:#000;--dark-bl-border-color:#d1e4f2;--dark-bl-breadcrumbs-svg-color:#fff;--dark-bl-caret-svg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24' fill='%23ccc'%3E%3Cpath d='M320-200v-560l440 280-440 280z'/%3E%3C/svg%3E");--dark-bl-card-background-color:#172a34;--dark-bl-code-background:#141414;--dark-bl-code-border-color:transparent;--dark-bl-code-text-color:#fff;--dark-bl-link-color:#7dd3fc;--dark-bl-link-hover-color:#64a0d2;--dark-bl-hljs-attribute-color:#4682b4;--dark-bl-hljs-doctag-color:#ff6384;--dark-bl-hljs-keyword-color:#add8e6;--dark-bl-hljs-number-color:#48d1cc;--dark-bl-hljs-section-color:#ff453a;--dark-bl-nav-link-color:#fff;--dark-bl-nav-link-hover-color:hsla(0,0%,100%,0.6);--dark-bl-nav-fade-color:#172a34;--dark-bl-paragraph-color:#fff;--dark-bl-pasteboard-color:#051a26;--dark-bl-pagination-color:#c8c8c8;--dark-bl-quote-background:#0b3b52;--dark-bl-quote-word-color:#d1e4f2;--dark-bl-tab-background:#172a34;--dark-bl-table-stripe-color:#314a57;--dark-bl-tabpanel-background:#314a57;--dark-bl-text-color:#fff}html{--bl-background:var(--light-bl-background);--bl-breadcrumbs-svg-color:var(--light-bl-breadcrumbs-svg-color);--bl-caret-svg:var(--light-bl-caret-svg);--bl-card-background-color:var(--light-bl-card-background-color);--bl-code-background:var(--light-bl-code-background);--bl-code-border-color:var(--light-bl-code-border-color);--bl-code-text-color:var(--light-bl-code-text-color);--bl-hljs-doctag-color:var(--light-bl-hljs-doctag-color);--bl-hljs-attribute-color:var(--light-bl-hljs-attribute-color);--bl-hljs-keyword-color:var(--light-bl-hljs-keyword-color);--bl-hljs-number-color:var(--light-bl-hljs-number-color);--bl-hljs-section-color:var(--light-bl-hljs-section-color);--bl-link-color:var(--light-bl-link-color);--bl-link-hover-color:var(--light-bl-link-hover-color);--bl-nav-link-color:var(--light-bl-nav-link-color);--bl-nav-link-hover-color:var(--light-bl-nav-link-hover-color);--bl-nav-fade-color:var(--light-bl-nav-fade-color);--bl-paragraph-color:var(--light-bl-paragraph-color);--bl-pasteboard-color:var(--light-bl-pasteboard-color);--bl-pre-background:var(--light-bl-pre-background);--bl-quote-background:var(--light-bl-quote-background);--bl-tab-background:var(--light-bl-tab-background);--bl-table-border-color:var(--light-bl-table-border-color);--bl-table-head-background:var(--light-bl-table-head-background);--bl-table-stripe-color:var(--light-bl-table-stripe-color);--bl-tabpanel-background:var(--light-bl-tabpanel-background);--bl-text-color:var(--light-bl-text-color)}html.dark{--bl-border-color:var(--dark-bl-border-color);--bl-breadcrumbs-svg-color:var(--dark-bl-breadcrumbs-svg-color);--bl-caret-svg:var(--dark-bl-caret-svg);--bl-card-background-color:var(--dark-bl-card-background-color);--bl-code-background:var(--dark-bl-code-background);--bl-code-border-color:var(--dark-bl-code-border-color);--bl-code-text-color:var(--dark-bl-code-text-color);--bl-hljs-attribute-color:var(--dark-bl-hljs-attribute-color);--bl-hljs-doctag-color:var(--dark-bl-hljs-doctag-color);--bl-hljs-keyword-color:var(--dark-bl-hljs-keyword-color);--bl-hljs-number-color:var(--dark-bl-hljs-number-color);--bl-hljs-section-color:var(--dark-bl-hljs-section-color);--bl-link-color:var(--dark-bl-link-color);--bl-link-hover-color:var(--dark-bl-link-hover-color);--bl-nav-link-color:var(--dark-bl-nav-link-color);--bl-nav-link-hover-color:var(--dark-bl-nav-link-hover-color);--bl-nav-fade-color:var(--dark-bl-nav-fade-color);--bl-paragraph-color:var(--dark-bl-paragraph-color);--bl-pasteboard-color:var(--dark-bl-pasteboard-color);--bl-pagination-color:var(--dark-bl-pagination-color);--bl-quote-background:var(--dark-bl-quote-background);--bl-quote-word-color:var(--dark-bl-quote-word-color);--bl-tab-background:var(--dark-bl-tab-background);--bl-table-stripe-color:var(--dark-bl-table-stripe-color);--bl-tabpanel-background:var(--dark-bl-tabpanel-background);--bl-text-color:var(--dark-bl-text-color)}@font-face{font-family:Noto Sans Display;font-style:normal;font-weight:400;font-stretch:semi-condensed;font-display:block;src:url(/_/fonts/NotoSansDisplay.ttf) format("truetype"),url(../../../../tools/boostlook/NotoSansDisplay.ttf) format("truetype"),url(https://cppalliance.org/fonts/NotoSansDisplay.ttf) format("truetype")}@font-face{font-family:Noto Sans Display;font-style:italic;font-weight:400;font-stretch:semi-condensed;font-display:block;src:url(/font/NotoSansDisplay-Italic.ttf) format("truetype"),url(../../../../tools/boostlook/NotoSansDisplay-Italic.ttf) format("truetype"),url(https://cppalliance.org/fonts/NotoSansDisplay-Italic.ttf) format("truetype")}@font-face{font-family:Noto Sans Mono;font-style:normal;font-weight:400;font-stretch:semi-condensed;font-display:block;src:url(/_/boostlook/NotoSansMono.ttf) format("truetype"),url(../../../../tools/boostlook/NotoSansMono.ttf) format("truetype"),url(https://cppalliance.org/fonts/NotoSansMono.ttf) format("truetype")}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}*{margin:0}body{line-height:1.5;-webkit-font-smoothing:antialiased}canvas,img,picture,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}#__next,#root{isolation:isolate}.boostlook{font-family:Noto Sans Display!important;font-stretch:condensed}.boostlook h1,.boostlook h2,.boostlook h3,.boostlook h4,.boostlook h5,.boostlook h6{display:block;line-height:1;margin-top:1em;margin-bottom:1em;font-weight:500}.boostlook h1{font-size:2.5rem}.boostlook h2{font-size:2rem}.boostlook h3{font-size:1.5rem}.boostlook h4{font-size:1.35rem}.boostlook h5{font-size:1.25rem}.boostlook h6{font-size:1rem}.boostlook h1,.boostlook h2,.boostlook h3,.boostlook h4,.boostlook h5,.boostlook h6{margin-top:2rem;margin-bottom:1rem}.boostlook p{font-size:1rem;margin-bottom:1.5rem}.boostlook table p,.boostlook ul p{margin:0}.boostlook .doc a,.boostlook a{color:var(--bl-link-color);text-decoration:none}.boostlook .doc a:hover,.boostlook a:hover{color:var(--bl-link-hover-color);cursor:pointer;text-decoration:none}.boostlook code{font-family:Noto Sans Mono,monospace;margin-bottom:1.25rem}.boostlook code em,.boostlook em{font-family:Noto Sans Display;font-size:inherit}.boostlook h6:has(+table){margin-left:1em}.boostlook p code,.boostlook p kbd,.boostlook p pre,.boostlook p samp,.boostlook p tt,.boostlook table code{overflow-x:hidden}.boostlook .content div:has(>table){overflow-x:auto}.boostlook .colist>table code,.boostlook p code{color:var(--bl-code-text-color)!important}.boostlook .quoteblock,.boostlook .verseblock{background:var(--bl-quote-background);border-left:3px solid var(--bl-border-color);color:var(--bl-text-color)}.boostlook .quoteblock:before,.boostlook .verseblock:before{color:var(--bl-quote-word-color)}.boostlook .tabpanel{background-color:var(--bl-tabpanel-background)}.boostlook .hljs-keyword,.boostlook .hljs-selector-tag,.boostlook .hljs-subst{color:var(--bl-hljs-keyword-color)}.boostlook .hljs-number{color:var(--bl-hljs-number-color)}.boostlook .hljs-doctag,.boostlook .hljs-string{color:var(--bl-hljs-doctag-color)}.boostlook .hljs-section,.boostlook .hljs-selector-id,.boostlook .hljs-title{color:var(--bl-hljs-section-color)}.boostlook .pagination a,.boostlook p a:visited,.boostlook table a{color:var(--bl-link-color)}.boostlook .hljs-attribute,.boostlook .hljs-name,.boostlook .hljs-tag{color:var(--bl-hljs-attribute-color)}.boostlook nav.pagination span:before{color:var(--bl-pagination-color)}.boostlook #toc a{color:var(--bl-nav-link-color)}.boostlook #toc a:focus,.boostlook #toc a:hover{color:var(--bl-nav-link-hover-color)}.boostlook #toc.toc2{padding-bottom:1.5rem}.article.toc2.toc-left{min-height:100vh;max-width:80rem;margin-left:auto;margin-right:auto;background-color:var(--bl-pasteboard-color);position:relative}.boostlook:not(:has(.doc)) pre{font-family:Noto Sans Mono,monospace;background-color:var(--bl-pre-background);margin-bottom:1.25rem;padding:1rem;overflow-x:auto}.boostlook:not(:has(.doc)) table{border-collapse:collapse;margin:1em;border:1px solid var(--bl-table-border-color)}.boostlook:not(:has(.doc)) th{background-color:var(--bl-table-head-background);text-align:left;padding:.25em .55em;font-weight:550}.boostlook:not(:has(.doc)) td{border:1px solid var(--bl-table-border-color);padding:.25em .55em}.boostlook #header>h1{margin-top:0}.boostlook #toc>ul.sectlevel1{padding-left:0}.boostlook #toc ul{margin:0;padding:0 0 0 .5rem;line-height:1.725;font-size:1rem;list-style:none}.boostlook #toc .sectlevel1>li>a{font-weight:bolder}.boostlook #toc #toctitle{font-size:1.5rem}.boostlook,.boostlook #toc.toc2{background-color:var(--bl-card-background-color);padding:1rem 1.5rem}.boostlook #toc.toc2{position:static;padding-left:0;overflow-y:auto}.boostlook #toc.toc2>ul{padding-bottom:2rem;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;z-index:0}.boostlook #toggle-toc{visibility:hidden;height:0;width:0}.boostlook #content .sect3:has(.tableblock){overflow-x:auto}.boostlook .title{font-weight:bolder;margin-bottom:.5rem}.boostlook pre.rouge .o{font-weight:400}.boostlook pre.rouge code span{font-style:normal}@media screen and (min-width:768px){.boostlook #toggle-toc{visibility:visible;height:auto;width:auto}.article.toc2.toc-left{padding:1rem}.boostlook,.boostlook #toc.toc2{border-radius:.5rem}.boostlook #toc.toc2{position:fixed;width:17rem;left:max(1rem,50% - 39rem);top:1rem;z-index:1000;height:calc(100vh - 2rem);padding:1rem 1rem 1.5rem;overflow-x:hidden;overflow-y:auto}.boostlook:not(#libraryReadMe){margin-left:18rem}.boostlook #toggle-toc{position:fixed;top:2rem;left:max(1rem,50% - 39rem - 1rem);background-color:hsla(0,0%,100%,.5);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1);border:0;padding:0;cursor:pointer;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24' fill='%235f6368'%3E%3Cpath d='M400-240l240-240-240-240-56 56 184 184-184 184 56 56z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;border-radius:1rem;height:2rem;width:2rem;text-indent:-9999px;z-index:1001}}@media screen and (min-width:768px){html.toc-hidden .boostlook{margin-left:0}html.toc-hidden .boostlook #toggle-toc{left:max(0,50% - 39rem - 1rem)}html.toc-visible .boostlook #toggle-toc{left:max(0,50% - 39rem - 1rem);background-color:#fff}html.toc-visible .boostlook{margin-left:0}html.toc-hidden .boostlook #toc.toc2{width:0;opacity:0;visibility:hidden}html.toc-visible #toc.toc2{opacity:1;visibility:visible;width:250px;padding-left:1.5rem}html.toc-visible:not(.toc-pinned) #toc.toc2{-webkit-box-shadow:4px 0 12px 0 rgba(0,0,0,.1);box-shadow:4px 0 12px 0 rgba(0,0,0,.1)}html.toc-visible.toc-pinned #toggle-toc{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24' fill='%235f6368'%3E%3Cpath d='M560-240L320-480l240-240 56 56-184 184 184 184-56 56z'/%3E%3C/svg%3E")}html.toc-visible.toc-pinned .boostlook{margin-left:17rem}}.boostlook .doc{line-height:1.5rem}.boostlook .doc,.boostlook .doc i{color:var(--bl-text-color);font-family:Noto Sans Display}.boostlook .nav-menu .title{font-size:1.5rem}.boostlook .breadcrumbs ul li{font-size:.875rem!important}.boostlook p{color:var(--bl-text-color);padding-top:0!important;padding-bottom:0!important}.boostlook .nav-panel-menu{overflow:visible}.boostlook .nav-close{display:none}.boostlook .nav-menu>.nav-list>.nav-list{margin-left:0}.boostlook .nav-menu>.nav-list>.nav-list>li{font-weight:bolder}.boostlook .nav-link,.boostlook .nav-menu a{cursor:pointer;color:var(--bl-nav-link-color);margin-right:-.5rem}.boostlook .nav-link:hover,.boostlook .nav-menu a:hover{color:var(--bl-link-hover-color)}.boostlook .nav-text{color:#828282}.source-docs-antora .boostlook #toc.toc2{top:1rem!important;max-height:calc(100vh - 1rem)!important}.boostlook .nav-list .is-current-page.is-active{position:relative}.boostlook .is-current-page.is-active:before{content:"";position:absolute;top:.3125rem;width:16px;height:16px;margin-left:-1.25rem;background-image:var(--bl-caret-svg);background-repeat:no-repeat;background-position:50%;background-size:16px}.boostlook .breadcrumbs{display:block}.boostlook .breadcrumbs ul li:first-of-type{display:-webkit-box;display:-ms-flexbox;display:flex}.boostlook .breadcrumbs svg{fill:var(--bl-breadcrumbs-svg-color)}.boostlook .doc .content pre code{background-color:var(--bl-code-background);border-color:var(--bl-code-border-color);color:var(--bl-code-text-color)}.boostlook .doc pre{padding:initial;overflow-x:hidden}.boostlook .article .content{gap:1rem}.boostlook #content:has(.toc.sidebar){display:-webkit-box;display:-ms-flexbox;display:flex}.boostlook .nav{height:100%}.boostlook .toc .toc-menu a{border-left:0;padding:.25rem 0 0}.boostlook .nav-menu .title{padding-left:1rem}.boostlook .admonitionblock p{line-height:normal}.boostlook .doc .admonitionblock{background-color:var(--bl-tabpanel-background)}.boostlook .tabs:not(.is-loading) .tablist li:not(.is-selected){background-color:var(--bl-tab-background)}.boostlook .tablist>ul li{background-color:var(--bl-tabpanel-background)}.boostlook .doc table.tableblock tr th{background-color:transparent}.dark .doc table.stripes-even>tbody>tr:nth-of-type(2n){background-color:var(--bl-table-stripe-color)}.boostlook .toolbar .breadcrumbs a,.boostlook .toolbar .breadcrumbs li{color:var(--bl-text-color)} \ No newline at end of file diff --git a/docs/_/css/search.css b/docs/_/css/search.css new file mode 100644 index 000000000..d3845333e --- /dev/null +++ b/docs/_/css/search.css @@ -0,0 +1,123 @@ +.search-result-dropdown-menu { + position: absolute; + z-index: 100; + display: block; + right: 0; + left: inherit; + top: 100%; + border-radius: 4px; + margin: 6px 0 0; + padding: 0; + text-align: left; + height: auto; + background: transparent; + border: none; + max-width: 600px; + min-width: 500px; + box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2), 0 2px 3px 0 rgba(0, 0, 0, 0.1); +} + +@media screen and (max-width: 768px) { + .search-result-dropdown-menu { + min-width: calc(100vw - 3.75rem); + } +} + +.search-result-dataset { + position: relative; + border: 1px solid #d9d9d9; + background: #fff; + border-radius: 4px; + overflow: auto; + padding: 8px; + max-height: calc(100vh - 5.25rem); + line-height: 1.5; +} + +.search-result-item { + display: flex; + margin-top: 0.5rem; +} + +.search-result-component-header { + color: #1e1e1e; + border-bottom: 1px solid #ddd; + margin-left: 0.5em; + margin-right: 0.5em; + padding-top: 0.25em; + padding-bottom: 0.25em; +} + +.search-result-document-title { + width: 33%; + border-right: 1px solid #ddd; + color: #02060c; + font-weight: 500; + font-size: 0.8rem; + padding: 0.5rem 0.5rem 0.5rem 0; + text-align: right; + position: relative; + word-wrap: break-word; +} + +.search-result-document-hit { + flex: 1; + font-size: 0.75rem; + color: #63676d; +} + +.search-result-document-hit > a { + color: inherit; + display: block; + padding: 0.55rem 0.25rem 0.55rem 0.75rem; +} + +.search-result-document-hit > a:hover { + background-color: rgba(69, 142, 225, 0.05); +} + +.search-result-document-hit .search-result-highlight { + color: #174d8c; + background: rgba(143, 187, 237, 0.1); + padding: 0.1em 0.05em; + font-weight: 500; +} + +.search-result-document-hit .search-result-section-title { + color: #303030; + font-weight: 500; + font-size: 1.05em; + margin-bottom: 0.25em; +} + +#search-input { + padding: 0.25em; +} + +#search-input:focus { + outline: none; +} + +#search-field { + display: flex; +} + +#search-field .filter { + background: #fff linear-gradient(180deg,#e1e1e1 0,#e1e1e1) no-repeat 0/1px 50%; + border: 1px solid #e1e1e1; + border-left: none; + border-radius: 0 0.1em 0.1em 0; + color: #5d5d5d; + cursor: pointer; + font-size: .875em; + display: flex; + align-items: center; + padding: 0 0.5rem; + white-space: nowrap; + overflow: hidden; +} + +#search-field.has-filter > input { + border-right: none; + border-radius: 0.1em 0 0 0.1em; +} diff --git a/docs/_/css/site.css b/docs/_/css/site.css new file mode 100644 index 000000000..05557942c --- /dev/null +++ b/docs/_/css/site.css @@ -0,0 +1 @@ +@import "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200";@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-latin-400-normal.woff2) format("woff2"),url(../font/roboto-latin-400-normal.woff) format("woff");unicode-range:U+00??,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:Roboto;font-style:italic;font-weight:400;src:url(../font/roboto-latin-400-italic.woff2) format("woff2"),url(../font/roboto-latin-400-italic.woff) format("woff");unicode-range:U+00??,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:Roboto;font-style:normal;font-weight:500;src:url(../font/roboto-latin-500-normal.woff2) format("woff2"),url(../font/roboto-latin-500-normal.woff) format("woff");unicode-range:U+00??,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:Roboto;font-style:italic;font-weight:500;src:url(../font/roboto-latin-500-italic.woff2) format("woff2"),url(../font/roboto-latin-500-italic.woff) format("woff");unicode-range:U+00??,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:Roboto Mono;font-style:normal;font-weight:400;src:url(../font/roboto-mono-latin-400-normal.woff2) format("woff2"),url(../font/roboto-mono-latin-400-normal.woff) format("woff");unicode-range:U+00??,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:Roboto Mono;font-style:normal;font-weight:500;src:url(../font/roboto-mono-latin-500-normal.woff2) format("woff2"),url(../font/roboto-mono-latin-500-normal.woff) format("woff");unicode-range:U+00??,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}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:.83333rem;height:100%;scroll-behavior:smooth}@media screen and (min-width:1024px){html{font-size:1rem}}body{background:#fff;color:#314a57;font-family:Noto Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;line-height:var(--body-line-height);font-size:inherit;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere}a{text-decoration:none}a:hover{text-decoration:underline}a:active{background-color:none}code,kbd,pre{font-family:Noto Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}b,dt,strong,th{font-weight:600}em em{font-style:normal}strong strong{font-weight:400}button{cursor:pointer;font-family:inherit;font-size:1em;line-height:var(--body-line-height);margin:0}button::-moz-focus-inner{border:none;padding:0}summary{cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none}table{word-wrap:normal}object[type="image/svg+xml"]:not([width]){width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}::-webkit-input-placeholder{opacity:.5}::-moz-placeholder{opacity:.5}:-ms-input-placeholder{opacity:.5}::-ms-input-placeholder{opacity:.5}::placeholder{opacity:.5}@media (pointer:fine){@supports (scrollbar-width:thin){html{scrollbar-color:#c1c1c1 #eaf0f3}body *{scrollbar-width:thin;scrollbar-color:#c1c1c1 transparent}}html::-webkit-scrollbar{background-color:#eaf0f3;height:12px;width:12px}body ::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:#c1c1c1;border:3px solid transparent;border-radius:12px}body ::-webkit-scrollbar-thumb{border-width:1.75px;border-radius:6px}::-webkit-scrollbar-thumb:hover{background-color:#9c9c9c}}@media screen and (min-width:1024px){.body{display:-webkit-box;display:-ms-flexbox;display:flex}}.nav-container{position:fixed;top:var(--navbar-height);left:0;width:100%;font-size:1.0625rem;z-index:1;visibility:hidden}@media screen and (min-width:769px){.nav-container{width:16.875rem}}@media screen and (min-width:1024px){.nav-container{font-size:.96875rem;-webkit-box-flex:0;-ms-flex:none;flex:none;position:static;top:0;visibility:visible}}.nav-container.is-active{visibility:visible}.nav{position:relative;top:2.8125rem;height:calc(100vh - var(--navbar-height) - 2.8125rem)}@media screen and (min-width:769px){.nav{-webkit-box-shadow:.5px 0 3px #c1c1c1;box-shadow:.5px 0 3px #c1c1c1}}@media screen and (min-width:1024px){.nav{top:var(--navbar-height);-webkit-box-shadow:none;box-shadow:none;position:sticky;height:calc(100vh - var(--navbar-height))}}.nav a{color:inherit}.nav .panels{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:inherit}html.is-clipped--nav{overflow-y:hidden}.nav-panel-menu{overflow-y:scroll;-ms-scroll-chaining:none;overscroll-behavior:none;height:calc(100% - 2.8125rem)}.nav-panel-menu:not(.is-active) .nav-menu{opacity:.75}.nav-panel-menu:not(.is-active)::after{content:"";background:rgba(0,0,0,.5);display:block;position:absolute;top:0;right:0;bottom:0;left:0}.nav-menu{min-height:100%;line-height:1.35;position:relative}.nav-menu h3.title{color:#424242;font-size:inherit;font-weight:600;margin:0;padding:.25em 0 .125em}.nav-list{list-style:none;margin:0 0 0 .75rem;padding:0}.nav-menu>.nav-list+.nav-list{margin-top:.5rem}.nav-item{margin-top:.5em}.nav-item-toggle~.nav-list{padding-bottom:.125rem}.nav-item[data-depth="0"]>.nav-list:first-child{display:block;margin:0}.nav-item:not(.is-active)>.nav-list{display:none}.nav-item-toggle{background:transparent url(../img/caret.svg) no-repeat 50%/50%;border:none;outline:none;line-height:inherit;padding:0;position:absolute;height:1.35em;width:1.35em;margin-top:-.05em;margin-left:-1.35em}.nav-item.is-active>.nav-item-toggle{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.is-current-page>.nav-link,.is-current-page>.nav-text{font-weight:600}.nav-panel-explore{background:#eaf0f3;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;top:0;right:0;bottom:0;left:0}.nav-panel-explore:not(:first-child){top:auto;max-height:calc(50% + 2.8125rem)}.nav-panel-explore .context{font-size:.9375rem;-ms-flex-negative:0;flex-shrink:0;color:#5d5d5d;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;line-height:1;height:2.8125rem}.nav-panel-explore:not(:first-child) .context{cursor:pointer}.nav-panel-explore .context .version{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit}.nav-panel-explore .context .version::after{content:"";background:url(../img/chevron.svg) no-repeat 100%/auto 100%;width:1.25em;height:.75em}.nav-panel-explore .components{line-height:1.15;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-shadow:inset 0 1px 5px #eaf0f3;box-shadow:inset 0 1px 5px #eaf0f3;background:#f0f0f0;padding:.5rem .75rem 0;margin:0;overflow-y:scroll;-ms-scroll-chaining:none;overscroll-behavior:none;max-height:100%;display:block}.nav-panel-explore:not(.is-active) .components{display:none}.nav-panel-explore .component{display:block}.nav-panel-explore .component+.component{margin-top:.5rem}.nav-panel-explore .component:last-child{margin-bottom:.75rem}.nav-panel-explore .component .title{font-weight:600}.nav-panel-explore .versions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-top:-.25rem;line-height:1;list-style:none}.nav-panel-explore .component .version{margin:.375rem .375rem 0 0}.nav-panel-explore .component .version a{border:1px solid #c1c1c1;border-radius:.25rem;opacity:.75;white-space:nowrap;padding:.125em .25em;display:inherit}.nav-panel-explore .component .is-current a{border-color:currentColor;opacity:.9;font-weight:600}@media screen and (max-width:1023.5px){aside.toc.sidebar{display:none}main>.content{overflow-x:auto}}@media screen and (min-width:1024px){main{-webkit-box-flex:1;-ms-flex:auto;flex:auto;min-width:0}main>.content{display:-webkit-box;display:-ms-flexbox;display:flex}aside.toc.embedded{display:none}aside.toc.sidebar{-webkit-box-flex:0;-ms-flex:0 0 10.125rem;flex:0 0 10.125rem;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media screen and (min-width:1216px){aside.toc.sidebar{-ms-flex-preferred-size:13.5rem;flex-basis:13.5rem}}.toolbar{color:#5d5d5d;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#eaf0f3;-webkit-box-shadow:0 1px 0 #eaf0f3;box-shadow:0 1px 0 #eaf0f3;font-size:.9375rem;height:2.8125rem;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;position:sticky;top:var(--navbar-height);z-index:2}.toolbar a{color:inherit}.nav-toggle{background:url(../img/menu.svg) no-repeat 50% 47.5%;background-size:49%}.dark .nav-toggle,.nav-toggle{border:none;outline:none;line-height:inherit;padding:0;height:2.8125rem;width:2.8125rem;margin-right:-.25rem}.dark .nav-toggle{background:url(../img/dark-menu.svg) no-repeat 50% 47.5%;background-size:49%}@media screen and (min-width:1024px){.nav-toggle{display:none}}.nav-toggle.is-active{background-image:url(../img/back.svg);background-size:41.5%}.home-link{display:block;background:url(../img/home-o.svg) no-repeat 50%;height:1.40625rem;width:1.40625rem;margin:.70313rem}.home-link.is-current,.home-link:hover{background-image:url(../img/home.svg)}.edit-this-page{display:none;padding-right:.5rem}@media screen and (min-width:1024px){.edit-this-page{display:block}}.toolbar .edit-this-page a{color:#8e8e8e}.breadcrumbs{display:none;-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;padding:0 .5rem 0 .75rem;font-size:.7rem;line-height:1.35}@media screen and (min-width:1024px){.breadcrumbs{display:block}}a+.breadcrumbs{padding-left:.05rem}.breadcrumbs ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0;list-style:none}.breadcrumbs li{display:inline;margin:0}.breadcrumbs li::after{content:"/";padding:0 .5rem}.breadcrumbs li:last-of-type::after{content:none}.page-versions{margin:0 .2rem 0 auto;position:relative;line-height:1}@media screen and (min-width:1024px){.page-versions{margin-right:.7rem}}.page-versions .version-menu-toggle{color:inherit;background:url(../img/chevron.svg) no-repeat;background-position:right .5rem top 50%;background-size:auto .75em;border:none;outline:none;line-height:inherit;padding:.5rem 1.5rem .5rem .5rem;position:relative;z-index:3}.page-versions .version-menu{display:-webkit-box;display:-ms-flexbox;display:flex;min-width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;background:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#f0f0f0)) no-repeat;background:linear-gradient(180deg,#f0f0f0 0,#f0f0f0) no-repeat;padding:1.375rem 1.5rem .5rem .5rem;position:absolute;top:0;right:0;white-space:nowrap}.page-versions:not(.is-active) .version-menu{display:none}.page-versions .version{display:block;padding-top:.5rem}.page-versions .version.is-current{display:none}.page-versions .version.is-missing{color:#8e8e8e;font-style:italic;text-decoration:none}.toc-menu{color:#5d5d5d}.toc.sidebar .toc-menu{margin-right:.75rem;position:sticky;top:calc(var(--navbar-height) + 2.8125rem)}.toc .toc-menu h3{color:#000;font-size:1rem;font-weight:600;line-height:1.3;margin:0 -.5px;padding-bottom:.25rem}.toc.sidebar .toc-menu h3{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:2.5rem;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.toc .toc-menu ul{font-size:.9375rem;line-height:1.2;list-style:none;margin:0;padding:0}.toc.sidebar .toc-menu ul{max-height:calc(100vh - var(--navbar-height) - 5.3125rem);overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none}@supports (scrollbar-width:none){.toc.sidebar .toc-menu ul{scrollbar-width:none}}.toc .toc-menu ul::-webkit-scrollbar{width:0;height:0}@media screen and (min-width:1024px){.toc .toc-menu h3{font-size:.9375rem}.toc .toc-menu ul{font-size:.84375rem}}.toc .toc-menu li{margin:0}.toc .toc-menu li[data-level="2"] a{padding-left:1.25rem}.toc .toc-menu li[data-level="3"] a{padding-left:2rem}.toc .toc-menu a{color:inherit;border-left:2px solid #eaf0f3;display:inline-block;padding:.25rem 0 .25rem .5rem;text-decoration:none}.sidebar.toc .toc-menu a{display:block;outline:none}.toc .toc-menu a:hover{color:#1565c0}.toc .toc-menu a.is-active{border-left-color:#1565c0;color:#000}.sidebar.toc .toc-menu a:focus{background:#eaf0f3}.toc .toc-menu .is-hidden-toc{display:none!important}.doc{color:#000;font-family:Noto Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;line-height:1.15;margin:0 auto;max-width:45rem}@media screen and (min-width:1024px){.doc{-webkit-box-flex:1;-ms-flex:auto;flex:auto;font-size:.83333rem;margin:0 2rem;max-width:51.75rem;min-width:0}}.doc h1,.doc h2,.doc h3,.doc h4,.doc h5,.doc h6{color:#000;font-weight:600;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.3;margin:1rem 0 0;font-size:revert}.doc>h1.page:first-child{font-size:1.375rem;margin:1.5rem 0}@media screen and (min-width:769px){.doc>h1.page:first-child{margin-top:2.5rem}}.doc>h1.page:first-child+aside.toc.embedded{margin-top:-.5rem}.doc>h2#name+.sectionbody{margin-top:1rem}#preamble+.sect1,.doc .sect1+.sect1{margin-top:2rem}.doc h1.sect0{background:#f0f0f0;font-size:1.8em;margin:1.5rem -1rem 0;padding:.5rem 1rem}.doc h2:not(.discrete){border-bottom:1px solid #eaf0f3;margin-left:-1rem;margin-right:-1rem;padding:.4rem 1rem .1rem}.doc h3:not(.discrete),.doc h4:not(.discrete){font-weight:600}.doc h1 .anchor,.doc h2 .anchor,.doc h3 .anchor,.doc h4 .anchor,.doc h5 .anchor,.doc h6 .anchor{position:absolute;text-decoration:none;width:1.75ex;margin-left:-1.5ex;visibility:hidden;font-size:.8em;font-weight:400;padding-top:.05em}.doc h1 .anchor::before,.doc h2 .anchor::before,.doc h3 .anchor::before,.doc h4 .anchor::before,.doc h5 .anchor::before,.doc h6 .anchor::before{content:"\00a7"}.doc h1:hover .anchor,.doc h2:hover .anchor,.doc h3:hover .anchor,.doc h4:hover .anchor,.doc h5:hover .anchor,.doc h6:hover .anchor{visibility:visible}.doc dl,.doc p{margin:0}.doc a{color:#1565c0}.doc a:hover{color:#104d92}.doc a.bare{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.doc a.unresolved{color:#d32f2f}.doc i.fa{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;font-style:normal}.doc .colist>table code,.doc p code,.doc thead code{color:#314a57;background:#eaf0f3;border-radius:.25em;font-size:.95em;padding:.125em .25em}.doc code,.doc pre{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.doc pre{font-size:inherit;line-height:1.5;margin:0}.doc blockquote{margin:0}.doc .paragraph.lead>p{font-size:1.125rem}.doc .right{float:right}.doc .left{float:left}.doc .float-gap.right{margin:0 1rem 1rem 0}.doc .float-gap.left{margin:0 0 1rem 1rem}.doc .float-group::after{content:"";display:table;clear:both}.doc .stretch{width:100%}.doc .underline{text-decoration:underline}.doc .line-through{text-decoration:line-through}.doc .dlist,.doc .exampleblock,.doc .hdlist,.doc .imageblock,.doc .listingblock,.doc .literalblock,.doc .olist,.doc .paragraph,.doc .partintro,.doc .quoteblock,.doc .sidebarblock,.doc .tabs,.doc .ulist,.doc .verseblock,.doc .videoblock,.doc details,.doc hr{margin:1rem 0 0}.doc table.tableblock{font-size:inherit;border:0}.doc .tablecontainer,.doc .tablecontainer+*,.doc :not(.tablecontainer)>table.tableblock,.doc :not(.tablecontainer)>table.tableblock+*{margin-top:1.5rem}.doc p.tableblock+p.tableblock{margin-top:.5rem}.doc td.tableblock>.content>:first-child{margin-top:0}.doc table.tableblock td,.doc table.tableblock th{padding:.5rem}.doc table.tableblock tr th{background-color:#f0f0f0;border:1px solid #dcdcdc}.doc table.tableblock,.doc table.tableblock>*>tr>*{border:0 solid #dcdcdc}.doc table.grid-all>*>tr>*{border-width:1px}.doc table.grid-cols>*>tr>*{border-width:0 1px}.doc table.grid-rows>*>tr>*{border-width:1px 0}.doc table.grid-all>thead th,.doc table.grid-rows>thead th{border-bottom-width:1px}.doc table.frame-all{border-width:0}.doc table.frame-ends{border-width:1px 0}.doc table.frame-sides{border-width:0 1px}.doc table.frame-none>colgroup+*>:first-child>*,.doc table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}.doc table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}.doc table.frame-ends>*>tr>:first-child,.doc table.frame-none>*>tr>:first-child{border-left-width:0}.doc table.frame-ends>*>tr>:last-child,.doc table.frame-none>*>tr>:last-child{border-right-width:0}.doc table.stripes-all>tbody>tr,.doc table.stripes-even>tbody>tr:nth-of-type(2n),.doc table.stripes-hover>tbody>tr:hover,.doc table.stripes-odd>tbody>tr:nth-of-type(odd){background:#eaf0f3}.doc table.tableblock>tfoot{background:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#fff));background:linear-gradient(180deg,#f0f0f0 0,#fff)}.doc .halign-left{text-align:left}.doc .halign-right{text-align:right}.doc .halign-center{text-align:center}.doc .valign-top{vertical-align:top}.doc .valign-bottom{vertical-align:bottom}.doc .valign-middle{vertical-align:middle}.doc .admonitionblock{margin:1.4rem 0 0;padding:1rem;background:#fff;border:1px solid #dcdcdc}.doc .admonitionblock p,.doc .admonitionblock td.content{font-size:inherit}.doc .admonitionblock td.content>.title+*,.doc .admonitionblock td.content>:not(.title):first-child{margin-top:0}.doc .admonitionblock pre{font-size:inherit}.doc .admonitionblock>table{table-layout:fixed;position:relative;width:100%}.doc .admonitionblock>table tr{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:.25em}.doc .admonitionblock td.content{padding:0 1.7rem;width:100%;word-wrap:anywhere}.doc .admonitionblock .icon{font-size:inherit;padding:0 0 0 1.25rem;line-height:1;font-weight:600;color:#000!important;min-height:1.25rem}.doc .admonitionblock.caution .icon{color:#fff;background:no-repeat url(../img/caution.svg)}.doc .admonitionblock.important .icon{color:#fff;background:no-repeat url(../img/important.svg)}.doc .admonitionblock.note .icon{color:#fff;background:no-repeat url(../img/note.svg)}.doc .admonitionblock.tip .icon{color:#fff;background:no-repeat url(../img/tip.svg)}.doc .admonitionblock.warning .icon{color:#fff;background:no-repeat url(../img/warning.svg)}.doc .admonitionblock .icon i{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;padding:0 .35rem}.doc .admonitionblock .icon i::after{content:attr(title)}.doc .imageblock,.doc .videoblock{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.doc .imageblock.text-left,.doc .videoblock.text-left{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.doc .imageblock.text-right,.doc .videoblock.text-right{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.doc .image>img,.doc .image>object,.doc .image>svg,.doc .imageblock img,.doc .imageblock object,.doc .imageblock svg{display:inline-block;height:auto;max-width:100%;vertical-align:middle}.doc .image:not(.left):not(.right)>img{margin-top:-.2em}.doc .videoblock iframe{max-width:100%;vertical-align:middle}#preamble .abstract blockquote{background:#f0f0f0;border-left:5px solid #eaf0f3;color:#4a4a4a;font-size:1rem;padding:.75em 1em}.doc .quoteblock,.doc .verseblock{background:#fefefe;border-left:3px solid #5d5d5d;color:#5d5d5d}.doc .quoteblock{padding:.25rem 1.5rem 1.25rem}.doc .quoteblock .attribution{color:#8e8e8e;font-size:inherit;margin-top:.75rem}.doc .quoteblock blockquote{margin-top:1rem}.doc .quoteblock .paragraph{font-style:italic}.doc .quoteblock cite{padding-left:1em}.doc .verseblock{font-size:inherit;padding:1rem 2rem}.doc .verseblock pre{font-family:inherit;font-size:inherit}.doc ol,.doc ul{margin:0;padding:0 0 0 2rem}.doc ul{list-style-type:disc}.doc ol.none,.doc ol.unnumbered,.doc ol.unstyled,.doc ul.checklist,.doc ul.no-bullet,.doc ul.none,.doc ul.unstyled{list-style-type:none}.doc ol.unnumbered,.doc ul.no-bullet{padding-left:1.25rem}.doc ol.unstyled,.doc ul.unstyled{padding-left:0}.doc ul.circle{list-style-type:circle}.doc ul.disc{list-style-type:disc}.doc ul.square{list-style-type:square}.doc ul.circle ul:not([class]),.doc ul.disc ul:not([class]),.doc ul.square ul:not([class]){list-style:inherit}.doc ol.arabic{list-style-type:decimal}.doc ol.decimal{list-style-type:decimal-leading-zero}.doc ol.loweralpha{list-style-type:lower-alpha}.doc ol.upperalpha{list-style-type:upper-alpha}.doc ol.lowerroman{list-style-type:lower-roman}.doc ol.upperroman{list-style-type:upper-roman}.doc ol.lowergreek{list-style-type:lower-greek}.doc ul.checklist{padding-left:1.75rem}.doc ul.checklist p>i.fa-check-square-o:first-child,.doc ul.checklist p>i.fa-square-o:first-child{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:1.25rem;margin-left:-1.25rem}.doc ul.checklist i.fa-check-square-o::before{content:"\2713"}.doc ul.checklist i.fa-square-o::before{content:"\274f"}.doc .dlist .dlist,.doc .dlist .olist,.doc .dlist .ulist,.doc .olist .dlist,.doc .olist .olist,.doc .olist .ulist,.doc .olist li+li,.doc .ulist .dlist,.doc .ulist .olist,.doc .ulist .ulist,.doc .ulist li+li{margin-top:.5rem}.doc .admonitionblock .listingblock,.doc .olist .listingblock,.doc .ulist .listingblock{padding:0}.doc .admonitionblock .title,.doc .exampleblock .title,.doc .imageblock .title,.doc .listingblock .title,.doc .literalblock .title,.doc .openblock .title,.doc .tableblock caption,.doc .videoblock .title{color:#5d5d5d;font-size:inherit;font-style:italic;font-weight:600;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;letter-spacing:.01em;padding-bottom:.35rem}.doc .tableblock caption{text-align:left}.doc .olist .title,.doc .ulist .title{font-style:italic;font-weight:600;margin-bottom:.25rem}.doc .imageblock .title{margin-top:.5rem;padding-bottom:0}.doc details{margin-left:1rem}.doc details>summary{display:block;position:relative;line-height:1.15;margin-bottom:.5rem}.doc details>summary::-webkit-details-marker{display:none}.doc details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.275em;left:-1rem;-webkit-transform:translateX(15%);transform:translateX(15%)}.doc details[open]>summary::before{border-color:currentColor transparent transparent;border-width:.5rem .3rem 0;-webkit-transform:translateY(15%);transform:translateY(15%)}.doc details>summary::after{content:"";width:1rem;height:1em;position:absolute;top:.075em;left:-1rem}.doc details.result{margin-top:.25rem}.doc details.result>summary{color:#5d5d5d;font-style:italic;margin-bottom:0}.doc details.result>.content{margin-left:-1rem}.doc .exampleblock>.content,.doc details.result>.content{background:#fff;border:.125rem solid #5d5d5d;border-radius:0;padding:.75rem}.doc .exampleblock>.content::after,.doc details.result>.content::after{content:"";display:table;clear:both}.doc .exampleblock>.content>:first-child,.doc details>.content>:first-child{margin-top:0}.doc .sidebarblock{background:#eaf0f3;border-radius:.75rem;padding:.75rem 1.5rem}.doc .sidebarblock>.content>.title{font-size:1.40625rem;font-weight:600;line-height:1.3;margin-bottom:-.3em;text-align:center}.doc .sidebarblock>.content>:not(.title):first-child{margin-top:0}.doc .listingblock.wrap pre,.doc .tableblock pre{white-space:pre-wrap}.doc .listingblock pre:not(.highlight),.doc .literalblock pre,.doc pre.highlight code{background:none;border:1px solid #dcdcdc;display:block;overflow-x:auto;padding:.685em;font-size:inherit}.doc .listingblock>.content{position:relative}.doc .source-toolbox{display:-webkit-box;display:-ms-flexbox;display:flex;visibility:hidden;position:absolute;top:.25rem;right:.5rem;color:grey;font-family:Noto Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:.8125rem;line-height:1;white-space:nowrap;z-index:1}.doc .listingblock:hover .source-toolbox{visibility:visible}.doc .source-toolbox .source-lang{text-transform:uppercase;letter-spacing:.075em}.doc .source-toolbox>:not(:last-child)::after{content:"|";letter-spacing:0;padding:0 1ch}.doc .source-toolbox .copy-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:none;border:none;color:inherit;outline:none;padding:0;font-size:inherit;line-height:inherit;width:1em;height:1em}.doc .source-toolbox .copy-icon{-webkit-box-flex:0;-ms-flex:none;flex:none;width:inherit;height:inherit}.doc .source-toolbox img.copy-icon{-webkit-filter:invert(50.2%);filter:invert(50.2%)}.doc .source-toolbox svg.copy-icon{fill:currentColor}.doc .source-toolbox .copy-toast{-webkit-box-flex:0;-ms-flex:none;flex:none;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1em;background-color:#000;border-radius:.25em;padding:.5em;color:#fff;cursor:auto;opacity:0;-webkit-transition:opacity .5s ease .5s;transition:opacity .5s ease .5s}.doc .source-toolbox .copy-toast::after{content:"";position:absolute;top:0;width:1em;height:1em;border:.55em solid transparent;border-left-color:#000;-webkit-transform:rotate(-90deg) translateX(50%) translateY(50%);transform:rotate(-90deg) translateX(50%) translateY(50%);-webkit-transform-origin:left;transform-origin:left}.doc .source-toolbox .copy-button.clicked .copy-toast{opacity:1;-webkit-transition:none;transition:none}.doc .language-console .hljs-meta{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.doc .dlist dt{font-style:italic}.doc .dlist dd{margin:0 0 .25rem 1.5rem}.doc .dlist dd:last-of-type{margin-bottom:0}.doc td.hdlist1,.doc td.hdlist2{padding:.5rem 0 0;vertical-align:top}.doc tr:first-child>.hdlist1,.doc tr:first-child>.hdlist2{padding-top:0}.doc td.hdlist1{font-weight:600;padding-right:.25rem}.doc td.hdlist2{padding-left:.25rem}.doc .colist{font-size:1rem;margin:.25rem 0 -.25rem}.doc .colist>table>tbody>tr>:first-child,.doc .colist>table>tr>:first-child{padding:.25em .5rem 0;vertical-align:top}.doc .colist>table>tbody>tr>:last-child,.doc .colist>table>tr>:last-child{padding:.25rem 0}.doc .conum[data-value]{border:1px solid;border-radius:100%;display:inline-block;font-family:Noto Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:.84375rem;font-style:normal;line-height:1.2;text-align:center;width:1.25em;height:1.25em;letter-spacing:-.25ex;text-indent:-.25ex}.doc .conum[data-value]::after{content:attr(data-value)}.doc .conum[data-value]+b{display:none}.doc hr{border:solid #eaf0f3;border-width:2px 0 0;height:0}.doc b.button{white-space:nowrap}.doc b.button::before{content:"[";padding-right:.25em}.doc b.button::after{content:"]";padding-left:.25em}.doc kbd{display:inline-block;font-size:.75rem;background:#eaf0f3;border:1px solid #c1c1c1;border-radius:.25em;-webkit-box-shadow:0 1px 0 #c1c1c1,0 0 0 .1em #fff inset;box-shadow:0 1px 0 #c1c1c1,inset 0 0 0 .1em #fff;padding:.25em .5em;vertical-align:text-bottom;white-space:nowrap}.doc .keyseq,.doc kbd{line-height:1}.doc .keyseq{font-size:1rem}.doc .keyseq kbd{margin:0 .125em}.doc .keyseq kbd:first-child{margin-left:0}.doc .keyseq kbd:last-child{margin-right:0}.doc .menuseq,.doc .path{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.doc .menuseq i.caret::before{content:"\203a";font-size:1.1em;font-weight:600;line-height:.90909}.doc :not(pre).nowrap{white-space:nowrap}.doc .nobreak{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;word-wrap:normal}#footnotes{font-size:.85em;line-height:1.5;margin:2rem -.5rem 0}.doc td.tableblock>.content #footnotes{margin:2rem 0 0}#footnotes hr{border-top-width:1px;margin-top:0;width:20%}#footnotes .footnote{margin:.5em 0 0 1em}#footnotes .footnote+.footnote{margin-top:.25em}#footnotes .footnote>a:first-of-type{display:inline-block;margin-left:-2em;text-align:right;width:1.5em}nav.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;border-top:1px solid #eaf0f3;line-height:1;margin:2rem -1rem -1rem;padding:.75rem 1rem 0}.dark nav.pagination{border-top:1px solid var(#051a26)}nav.pagination span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:50%;-ms-flex:50%;flex:50%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}nav.pagination .prev{padding-right:.5rem}nav.pagination .next{margin-left:auto;padding-left:.5rem;text-align:right}nav.pagination span::before{color:#8e8e8e;font-size:.75em;padding-bottom:.1em}nav.pagination .prev::before{content:"Prev"}nav.pagination .next::before{content:"Next"}nav.pagination a{font-weight:600;line-height:1.3;position:relative}nav.pagination a::after,nav.pagination a::before{color:#8e8e8e;font-weight:400;font-size:1.5em;line-height:.75;position:absolute;top:0;width:1rem}nav.pagination .prev a::before{content:"\2039";-webkit-transform:translateX(-100%);transform:translateX(-100%)}nav.pagination .next a::after{content:"\203a"}.spirit-nav{text-align:right;padding-top:.5em}.spirit-nav a{color:#fff;padding-left:.5em;display:inline-block;vertical-align:middle}.spirit-nav img{border-width:0;vertical-align:middle}html.is-clipped--navbar{overflow-y:hidden}.navbar{background:#eaf0f3;color:#314a57;font-size:1rem;height:var(--navbar-height);position:fixed;top:0;width:100%;z-index:4;border-bottom:2px solid #d1d5db}.navbar a{text-decoration:none}.navbar-brand{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:auto;flex:auto;padding-left:1rem}.navbar-brand .navbar-item{color:#314a57}.navbar-brand .navbar-item:first-child{-ms-flex-item-align:center;align-self:center;padding:0;font-size:1.375rem;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1}.navbar-brand .navbar-item:first-child a{color:inherit;word-wrap:normal}.navbar-brand .navbar-item:first-child :not(:last-child){padding-right:.375rem}.navbar-brand .navbar-item.search{-webkit-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#search-input{color:#333;font-family:inherit;font-size:.95rem;width:150px;border:1px solid #dbdbdb;border-radius:.1em;line-height:1.5;padding:0 .25em}#search-input:disabled{background-color:#dbdbdb;cursor:not-allowed;pointer-events:all!important}#search-input:disabled::-webkit-input-placeholder{color:#4c4c4c}#search-input:disabled::-moz-placeholder{color:#4c4c4c}#search-input:disabled:-ms-input-placeholder{color:#4c4c4c}#search-input:disabled::-ms-input-placeholder{color:#4c4c4c}#search-input:disabled::placeholder{color:#4c4c4c}#search-input:focus{outline:none}.navbar-burger{background:none;border:none;outline:none;line-height:1;position:relative;width:3rem;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-left:auto;min-width:0}.navbar-burger span{background-color:#314a57;height:1.5px;width:1rem}.navbar-burger:not(.is-active) span{-webkit-transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out}.navbar-burger span+span{margin-top:.25rem}.navbar-burger.is-active span+span{margin-top:-1.5px}.navbar-burger.is-active span:first-child{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.navbar-item,.navbar-link{color:#314a57;display:block;line-height:1.15;padding:.5rem 1rem}.navbar-item.has-dropdown{padding:0}.navbar-item .icon{width:1.25rem;height:1.25rem;display:block}.navbar-item .icon img,.navbar-item .icon svg{fill:currentColor;width:inherit;height:inherit}.navbar-link{padding-right:2.5em}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-dropdown .navbar-item.has-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-dropdown .navbar-item small{color:#8e8e8e;font-size:.75rem}.navbar-divider{background-color:#eaf0f3;border:none;height:1px;margin:.25rem 0}.navbar .button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;border:1px solid #eaf0f3;border-radius:.15rem;height:1.75rem;color:#314a57;padding:0 .75em;white-space:nowrap}@media screen and (max-width:768.5px){.navbar-brand .navbar-item.search{padding-left:0;padding-right:0}}@media screen and (min-width:769px){#search-input{width:200px}}@media screen and (max-width:1023.5px){.navbar-brand{height:inherit}.navbar-brand .navbar-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-menu{background:#fff;-webkit-box-shadow:0 8px 16px rgba(10,10,10,.1);box-shadow:0 8px 16px rgba(10,10,10,.1);max-height:calc(100vh - var(--navbar-height));overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none;padding:.5rem 0}.navbar-menu:not(.is-active){display:none}.navbar-menu .navbar-link:hover,.navbar-menu a.navbar-item:hover{background:#eaf0f3}}@media screen and (min-width:1024px){.navbar-burger{display:none}.navbar,.navbar-end,.navbar-item,.navbar-link,.navbar-menu{display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-item,.navbar-link{position:relative;-webkit-box-flex:0;-ms-flex:none;flex:none}.navbar-item:not(.has-dropdown),.navbar-link{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-link::after{border-width:0 0 1px 1px;border-style:solid;content:"";display:block;height:.5em;pointer-events:none;position:absolute;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);width:.5em;margin-top:-.375em;right:1.125em;top:50%}.navbar-end .navbar-link,.navbar-end>.navbar-item{color:#314a57}.navbar-end .navbar-item.has-dropdown:hover .navbar-link,.navbar-end .navbar-link:hover,.navbar-end>a.navbar-item:hover{background:#eaf0f3;color:#314a57}.navbar-end .navbar-link::after{border-color:currentColor}.navbar-dropdown{background:#fff;border:1px solid #eaf0f3;border-top:none;border-radius:0 0 .25rem .25rem;display:none;top:100%;left:0;min-width:100%;position:absolute}.navbar-dropdown .navbar-item{padding:.5rem 3rem .5rem 1rem;white-space:nowrap}.navbar-dropdown .navbar-item small{position:relative;right:-2rem}.navbar-dropdown .navbar-item:last-child{border-radius:inherit}.navbar-dropdown.is-right{left:auto;right:0}.navbar-dropdown a.navbar-item:hover{background:#eaf0f3}}footer.footer{background-color:#eaf0f3;color:#5d5d5d;font-size:.9375rem;line-height:1.15;padding:.5rem 1.5rem}.footer p{margin:0}.footer a{color:#314a57}/*! Adapted from the GitHub style by Vasily Polovnyov */.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:500}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:500}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:500}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:500}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:500}@page{margin:.5in}@media print{.hide-for-print{display:none!important}html{font-size:.9375rem}a{color:inherit!important;text-decoration:underline}a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none}img,object,svg,tr{page-break-inside:avoid}thead{display:table-header-group}pre{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;white-space:pre-wrap}body{padding-top:2rem}.navbar{background:none;color:inherit;position:absolute}.navbar *{color:inherit!important}.nav-container,.navbar>:not(.navbar-brand),.toolbar,aside.toc,nav.pagination{display:none}.doc{color:inherit;margin:auto;max-width:none;padding-bottom:2rem}.doc .admonitionblock td.icon{-webkit-print-color-adjust:exact;color-adjust:exact}.doc .listingblock code[data-lang]::before{display:block}footer.footer{background:none;border-top:1px solid #eaf0f3;color:#8e8e8e;padding:.25rem .5rem 0}.footer *{color:inherit}}/*! tailwindcss v3.2.7 | MIT License | https://tailwindcss.com*/*,::after,::before{-webkit-box-sizing:border-box;box-sizing:border-box;border:0 solid #e5e7eb}::after,::before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;-webkit-font-feature-settings:normal;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{opacity:1;color:#9ca3af}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::-ms-input-placeholder,textarea::-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::after,::before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.relative{position:relative}.sticky{position:sticky}.block{display:block}.table{display:table}.contents{display:contents}.resize{resize:both}body,html{height:100%;min-height:100vh}html.is-clipped--nav{overflow-y:visible}@media screen and (min-width:769px){.body{display:-webkit-box;display:-ms-flexbox;display:flex;padding:1rem 1rem 0}}body.article{background-color:#e5e7eb}.max-width-reset{max-width:none}.dark .nav-link,.dark .nav-menu a,.dark .nav-text{color:#ccc}html.is-clipped--nav div#content{display:none;visibility:hidden}html:not(.is-clipped--nav) div#content{display:block;visibility:visible}@media screen and (max-width:768px){.content{width:100%}}@media screen and (min-width:1024px){.doc{margin:0}}aside.nav{position:static;background-color:#fff;-webkit-box-shadow:none;box-shadow:none;height:auto;overflow-y:auto}.dark aside.nav,.dark div.toolbar{background-color:transparent!important}html.is-clipped--nav .nav-close{display:block;visibility:visible}.nav .panels{height:auto}.nav-list{margin-left:0}.nav-list>.nav-list{margin-left:1rem}.nav-menu{padding:0}.nav-panel-menu{overflow-y:auto}.nav-toggle.is-active~.spirit-nav{display:none;visibility:hidden}.nav-toggle{background-position-x:0;background-position-y:50%}.nav-close{display:none;background:url(../img/back.svg) 0 40% no-repeat;background-size:41.5%;border:none;outline:none;line-height:inherit;padding:0;height:2rem;width:3rem;margin-right:-.25rem}.dark .nav-close{background:url(../img/dark-back.svg) 0 40% no-repeat;background-size:41.5%}.nav-container.is-active{position:static;padding:.5rem 1rem 2rem}.nav-link,.nav-menu a,.nav-text{color:#000}@media screen and (min-width:769px){.nav-toggle{display:none;visibility:hidden}.nav-toggle.is-active~.spirit-nav{display:block;visibility:visible}.nav-container{position:sticky;top:1rem;bottom:1rem;left:1rem;height:calc(100vh - 2rem);visibility:visible;min-width:16rem;overflow-y:auto;font-size:1rem!important}.nav-container.is-active{padding-left:1rem;padding-top:1rem}}.toolbar{background-color:#fff;-webkit-box-shadow:unset;box-shadow:unset;height:2rem;position:static;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.dark div.toolbar{background-color:#08283a}.toolbar .material-symbols-outlined{font-variation-settings:"FILL" 1,"wght" 700,"GRAD" 200,"opsz" 20!important;color:#000;font-size:18px}.dark .toolbar .material-symbols-outlined{color:#fff}@media screen and (min-width:769px){.toolbar{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}}@media screen and (min-width:1024px){.toolbar{-webkit-box-align:center;-ms-flex-align:center;align-items:center}}.breadcrumbs,.toolbar .breadcrumbs ul{padding-left:0}.breadcrumbs a{color:#424242;font-weight:500}.breadcrumbs li::after{padding:0 .25rem}@media screen and (min-width:769px){.breadcrumbs{display:block;visibility:visible}}.edit-this-page{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:2rem;padding:0}.spirit-nav{padding-top:0}.spirit-nav a{width:1.5rem}.toc.sidebar .toc-menu{top:0}.toc.sidebar{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.toc.sidebar .toc-menu h3{height:auto;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:#424242}.toc.embedded{padding-top:.5rem}nav.pagination{padding:1rem}nav.pagination a::after,nav.pagination a::before{width:.75rem}.topnavbar+div.body{margin-left:auto;margin-right:auto;max-width:80rem} \ No newline at end of file diff --git a/docs/_/css/vendor/tabs.css b/docs/_/css/vendor/tabs.css new file mode 100644 index 000000000..27438a4c2 --- /dev/null +++ b/docs/_/css/vendor/tabs.css @@ -0,0 +1 @@ +/*! Asciidoctor Tabs | Copyright (c) 2018-present Dan Allen | MIT License */.tabs{margin-bottom:1.25em}.tablist>ul{-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:0;padding:0}.tablist>ul,.tablist>ul li{display:-webkit-box;display:-ms-flexbox;display:flex}.tablist>ul li{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;cursor:pointer;font-weight:700;line-height:1.5;padding:.25em 1em;position:relative}.tablist>ul li:focus-visible{outline:none}.tablist.ulist,.tablist.ulist>ul li{margin:0}.tablist.ulist>ul li+li{margin-left:.25em}.tabs.is-loading .tablist li:not(:first-child),.tabs:not(.is-loading) .tablist li:not(.is-selected){background-color:#f5f5f5}.tabs.is-loading .tablist li:first-child::after,.tabs:not(.is-loading) .tablist li.is-selected::after{background-color:inherit;content:"";display:block;height:3px;position:absolute;bottom:-1.5px;left:0;right:0}.tablist>ul p{line-height:inherit;margin:0}.tabpanel{background-color:#fff;padding:1.25em}.tablist>ul li,.tabpanel{border:1px solid #dcdcdc}.tablist>ul li{border-bottom:0}.tabs.is-loading .tabpanel+.tabpanel,.tabs:not(.is-loading) .tabpanel.is-hidden{display:none}.tabpanel>:first-child{margin-top:0}#content .tabpanel>:last-child,#content .tabpanel>:last-child>:last-child,#content .tabpanel>:last-child>:last-child>li:last-child>:last-child{margin-bottom:0}.tablecontainer{overflow-x:auto}#content .tablecontainer{margin-bottom:1.25em}#content .tablecontainer>table.tableblock{margin-bottom:0} \ No newline at end of file diff --git a/docs/_/font/roboto-latin-400-italic.woff b/docs/_/font/roboto-latin-400-italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..ebee16b9edf8932e7fc93b6c74e5f2718017b9a3 GIT binary patch literal 22048 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 b*3;%k-~(xp1B=)<*oYHE9$N=hIRF3v*i$@r literal 0 HcmV?d00001 diff --git a/docs/_/font/roboto-latin-400-italic.woff2 b/docs/_/font/roboto-latin-400-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e1b7a79f91f29f10e58c3a255fe0f2804a9c19b9 GIT binary patch literal 17368 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 literal 0 HcmV?d00001 diff --git a/docs/_/font/roboto-latin-400-normal.woff2 b/docs/_/font/roboto-latin-400-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..020729ef8d353ff843438008300bedee1f519380 GIT binary patch literal 15744 zcmV-`J%7S?Pew8T0RR9106l;J5&!@I0FHD306iK20RR9100000000000000000000 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 y{^U~631l%Viyw0%mK9y;eEd$Rv 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 literal 0 HcmV?d00001 diff --git a/docs/_/font/roboto-latin-500-normal.woff b/docs/_/font/roboto-latin-500-normal.woff new file mode 100644 index 0000000000000000000000000000000000000000..d39bb52a5c76305ddd49da9c4358fd3284f393b9 GIT binary patch literal 20544 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 literal 0 HcmV?d00001 diff --git a/docs/_/font/roboto-latin-500-normal.woff2 b/docs/_/font/roboto-latin-500-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..29342a8de253983b7b1a8c94efc6bb5c4f72a5c0 GIT binary patch literal 15920 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 Z3yTGT2LLGOKxP4eW{|JIYVb(F{{dtF4Hf_Z literal 0 HcmV?d00001 diff --git a/docs/_/font/roboto-mono-latin-500-normal.woff2 b/docs/_/font/roboto-mono-latin-500-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b4f2bf8c22481b36ce7f9079d40155fa0e31ff42 GIT binary patch literal 12532 zcmVX0RR9100000000000000000000 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 KlRq<$!2bYm$}!mh literal 0 HcmV?d00001 diff --git a/docs/_/img/Boost_Brandmark_WhiteBoost_Transparent.svg b/docs/_/img/Boost_Brandmark_WhiteBoost_Transparent.svg new file mode 100644 index 000000000..fe77a17a7 --- /dev/null +++ b/docs/_/img/Boost_Brandmark_WhiteBoost_Transparent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/Boost_Symbol_Transparent.svg b/docs/_/img/Boost_Symbol_Transparent.svg new file mode 100755 index 000000000..6320b867b --- /dev/null +++ b/docs/_/img/Boost_Symbol_Transparent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/arrow-left.svg b/docs/_/img/arrow-left.svg new file mode 100644 index 000000000..320f6c77a --- /dev/null +++ b/docs/_/img/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/arrow-right.svg b/docs/_/img/arrow-right.svg new file mode 100644 index 000000000..8ae735ad1 --- /dev/null +++ b/docs/_/img/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/arrow-up.svg b/docs/_/img/arrow-up.svg new file mode 100644 index 000000000..8c48c7af6 --- /dev/null +++ b/docs/_/img/arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/back.svg b/docs/_/img/back.svg new file mode 100644 index 000000000..bf7d30e9a --- /dev/null +++ b/docs/_/img/back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/caret.svg b/docs/_/img/caret.svg new file mode 100644 index 000000000..1af41bc6e --- /dev/null +++ b/docs/_/img/caret.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/caution.svg b/docs/_/img/caution.svg new file mode 100644 index 000000000..dfcb836df --- /dev/null +++ b/docs/_/img/caution.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/chevron.svg b/docs/_/img/chevron.svg new file mode 100644 index 000000000..40e962aff --- /dev/null +++ b/docs/_/img/chevron.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/dark-back.svg b/docs/_/img/dark-back.svg new file mode 100644 index 000000000..b4bd3b167 --- /dev/null +++ b/docs/_/img/dark-back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/dark-menu.svg b/docs/_/img/dark-menu.svg new file mode 100644 index 000000000..2c2345b9a --- /dev/null +++ b/docs/_/img/dark-menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/home-o.svg b/docs/_/img/home-o.svg new file mode 100644 index 000000000..95d193b77 --- /dev/null +++ b/docs/_/img/home-o.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/home.png b/docs/_/img/home.png new file mode 100644 index 0000000000000000000000000000000000000000..5584aacb097a80e66a5320312b6e4eb017af1a06 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9nKDRM~@s%h>KBER+u?+=H<(mwr$-K=fo0^iDsNj}a zlv \ No newline at end of file diff --git a/docs/_/img/important.svg b/docs/_/img/important.svg new file mode 100644 index 000000000..f0c7878a6 --- /dev/null +++ b/docs/_/img/important.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/menu.svg b/docs/_/img/menu.svg new file mode 100644 index 000000000..8b43b2e00 --- /dev/null +++ b/docs/_/img/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/next.png b/docs/_/img/next.png new file mode 100644 index 0000000000000000000000000000000000000000..59800b4e87f60c0e3383ede2b384b9be0f5ffe8d GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9mdAS+qP~A^!HU$R#>ro>7z#vFJHct5EtX@VE6z3e?1}lM4)<}k|4ieAQuK0 zgzld^2NdTl@Q5sCVBi)4Va7{$>;3=*RZCnWN`mv#O3D+9QW<;`lZ*0mQ&Tb%72Gn5 zQp@v;vWpdbBNU7b3{2X~)|>}w5Cds&E=o--$;{7F2+7P%WiT|*H!#*WFgd=yhZCqG z!qdeuq+(9;4PKV1Hyx6gnJ3)X*T8%1&d~!CcvGht8EkNzY0cztDB;<=un7h&oMQJ5 zOnAh^!sYOgmxqZbU_wKJkwW(@g)2%k8?y8!<$B~f6iH61Ubv5eVdat_!+^S!9H1Qx Mp00i_>zopr0Jz|Gn*aa+ literal 0 HcmV?d00001 diff --git a/docs/_/img/note.svg b/docs/_/img/note.svg new file mode 100644 index 000000000..7bda42a79 --- /dev/null +++ b/docs/_/img/note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/octicons-16.svg b/docs/_/img/octicons-16.svg new file mode 100644 index 000000000..e3b4e2022 --- /dev/null +++ b/docs/_/img/octicons-16.svg @@ -0,0 +1 @@ +Octicons v11.2.0 by GitHub - https://primer.style/octicons/ - License: MIT \ No newline at end of file diff --git a/docs/_/img/prev.png b/docs/_/img/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..d88a40f923e3c554125f01cd366707c60cfcad04 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7$jYX~xFJ+qQ05v3zNuzpt9I!sW}Cx;s0Z9qba~V*daCKl2PvGf+KGNswPKkP8D0 zLif*|1B!DNctjR6FmMZjFyp1Wb$@_@swJ)wCBgY=CFO}lsSLh}$wm3OsVSL>3T~N2 zspa`a*~JRJ5eh~I1}5!gYt92Th=DXX7o{eaWaj57gkwm>gfq&(JZLf6ZeXy%aV8%R&r1O{j}20XTDX{IIykaj z4Nx#hVBm6cU}k1+>Qw1kB6gA`rFdeFa~bob(-ZFQzAc!;#K4>y+$E64`2%PJgQu&X J%Q~loCIAR&aHIeL literal 0 HcmV?d00001 diff --git a/docs/_/img/tip.svg b/docs/_/img/tip.svg new file mode 100644 index 000000000..dbdae3ece --- /dev/null +++ b/docs/_/img/tip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/img/up.png b/docs/_/img/up.png new file mode 100644 index 0000000000000000000000000000000000000000..17d9c3ec491ae1ba22188ce85985623c92ffa9be GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J&NLJ|V8+ zB7$jYY0eII+qQ05v3zNFXUFBsmjeBL)sz)x&YXGl$l-*zm`9Hu{{R1f8uJZXpf0|W zAirQB7XcVt58OEcl;JG!h%9Dc;1&X5#!GkW{s0A4OI#yLg7ec#$`gxH8GI9yi}G_* zQ!*13+%k(&%kzt}ixqq$6pRcEOxnxVoCj(U18HzBN=+=u%+FH@$;?eS^Z=hXV#3jn*#4_ x=vj5p^wF)?xpx*Du6ddKc=uuXxWffq{6A*KyDFWJxdXJF!PC{xWt~$(69DY=mmvTE literal 0 HcmV?d00001 diff --git a/docs/_/img/warning.svg b/docs/_/img/warning.svg new file mode 100644 index 000000000..e82b19178 --- /dev/null +++ b/docs/_/img/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_/js/search-ui.js b/docs/_/js/search-ui.js new file mode 100644 index 000000000..53a8dde4d --- /dev/null +++ b/docs/_/js/search-ui.js @@ -0,0 +1,448 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.antoraSearch = {})); +})(this, (function (exports) { 'use strict'; + + function buildHighlightedText (text, positions, snippetLength) { + const textLength = text.length; + const validPositions = positions + .filter((position) => position.length > 0 && position.start + position.length <= textLength); + + if (validPositions.length === 0) { + return [ + { + type: 'text', + text: text.slice(0, snippetLength >= textLength ? textLength : snippetLength) + (snippetLength < textLength ? '...' : ''), + }, + ] + } + + const orderedPositions = validPositions.sort((p1, p2) => p1.start - p2.start); + const range = { + start: 0, + end: textLength, + }; + const firstPosition = orderedPositions[0]; + if (snippetLength && text.length > snippetLength) { + const firstPositionStart = firstPosition.start; + const firstPositionLength = firstPosition.length; + const firstPositionEnd = firstPositionStart + firstPositionLength; + + range.start = firstPositionStart - snippetLength < 0 ? 0 : firstPositionStart - snippetLength; + range.end = firstPositionEnd + snippetLength > textLength ? textLength : firstPositionEnd + snippetLength; + } + const nodes = []; + if (firstPosition.start > 0) { + nodes.push({ + type: 'text', + text: (range.start > 0 ? '...' : '') + text.slice(range.start, firstPosition.start), + }); + } + let lastEndPosition = 0; + const positionsWithinRange = orderedPositions + .filter((position) => position.start >= range.start && position.start + position.length <= range.end); + + for (const position of positionsWithinRange) { + const start = position.start; + const length = position.length; + const end = start + length; + if (lastEndPosition > 0) { + // create text Node from the last end position to the start of the current position + nodes.push({ + type: 'text', + text: text.slice(lastEndPosition, start), + }); + } + nodes.push({ + type: 'mark', + text: text.slice(start, end), + }); + lastEndPosition = end; + } + if (lastEndPosition < range.end) { + nodes.push({ + type: 'text', + text: text.slice(lastEndPosition, range.end) + (range.end < textLength ? '...' : ''), + }); + } + + return nodes + } + + /** + * Taken and adapted from: https://github.com/olivernn/lunr.js/blob/aa5a878f62a6bba1e8e5b95714899e17e8150b38/lib/tokenizer.js#L24-L67 + * @param lunr + * @param text + * @param term + * @return {{start: number, length: number}} + */ + function findTermPosition (lunr, term, text) { + const str = text.toLowerCase(); + const len = str.length; + + for (let sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { + const char = str.charAt(sliceEnd); + const sliceLength = sliceEnd - sliceStart; + + if ((char.match(lunr.tokenizer.separator) || sliceEnd === len)) { + if (sliceLength > 0) { + const value = str.slice(sliceStart, sliceEnd); + // QUESTION: if we get an exact match without running the pipeline should we stop? + if (value.includes(term)) { + // returns the first match + return { + start: sliceStart, + length: value.length, + } + } + } + sliceStart = sliceEnd + 1; + } + } + + // not found! + return { + start: 0, + length: 0, + } + } + + /* global CustomEvent, globalThis */ + + const config = document.getElementById('search-ui-script').dataset; + const snippetLength = parseInt(config.snippetLength || 100, 10); + const siteRootPath = config.siteRootPath || ''; + appendStylesheet(config.stylesheet); + const searchInput = document.getElementById('search-input'); + const searchResultContainer = document.createElement('div'); + searchResultContainer.classList.add('search-result-dropdown-menu'); + searchInput.parentNode.appendChild(searchResultContainer); + const facetFilterInput = document.querySelector('#search-field input[type=checkbox][data-facet-filter]'); + + function appendStylesheet (href) { + if (!href) return + const link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = href; + document.head.appendChild(link); + } + + function highlightPageTitle (title, terms) { + const positions = getTermPosition(title, terms); + return buildHighlightedText(title, positions, snippetLength) + } + + function highlightSectionTitle (sectionTitle, terms) { + if (sectionTitle) { + const text = sectionTitle.text; + const positions = getTermPosition(text, terms); + return buildHighlightedText(text, positions, snippetLength) + } + return [] + } + + function highlightText (doc, terms) { + const text = doc.text; + const positions = getTermPosition(text, terms); + return buildHighlightedText(text, positions, snippetLength) + } + + function getTermPosition (text, terms) { + const positions = terms + .map((term) => findTermPosition(globalThis.lunr, term, text)) + .filter((position) => position.length > 0) + .sort((p1, p2) => p1.start - p2.start); + + if (positions.length === 0) { + return [] + } + return positions + } + + function highlightHit (searchMetadata, sectionTitle, doc) { + const terms = {}; + for (const term in searchMetadata) { + const fields = searchMetadata[term]; + for (const field in fields) { + terms[field] = [...(terms[field] || []), term]; + } + } + return { + pageTitleNodes: highlightPageTitle(doc.title, terms.title || []), + sectionTitleNodes: highlightSectionTitle(sectionTitle, terms.title || []), + pageContentNodes: highlightText(doc, terms.text || []), + } + } + + function createSearchResult (result, store, searchResultDataset) { + let currentComponent; + result.forEach(function (item) { + const ids = item.ref.split('-'); + const docId = ids[0]; + const doc = store.documents[docId]; + let sectionTitle; + if (ids.length > 1) { + const titleId = ids[1]; + sectionTitle = doc.titles.filter(function (item) { + return String(item.id) === titleId + })[0]; + } + const metadata = item.matchData.metadata; + const highlightingResult = highlightHit(metadata, sectionTitle, doc); + const componentVersion = store.componentVersions[`${doc.component}/${doc.version}`]; + if (componentVersion !== undefined && currentComponent !== componentVersion) { + const searchResultComponentHeader = document.createElement('div'); + searchResultComponentHeader.classList.add('search-result-component-header'); + const { title, displayVersion } = componentVersion; + const componentVersionText = `${title}${doc.version && displayVersion ? ` ${displayVersion}` : ''}`; + searchResultComponentHeader.appendChild(document.createTextNode(componentVersionText)); + searchResultDataset.appendChild(searchResultComponentHeader); + currentComponent = componentVersion; + } + searchResultDataset.appendChild(createSearchResultItem(doc, sectionTitle, item, highlightingResult)); + }); + } + + function createSearchResultItem (doc, sectionTitle, item, highlightingResult) { + const documentTitle = document.createElement('div'); + documentTitle.classList.add('search-result-document-title'); + highlightingResult.pageTitleNodes.forEach(function (node) { + let element; + if (node.type === 'text') { + element = document.createTextNode(node.text); + } else { + element = document.createElement('span'); + element.classList.add('search-result-highlight'); + element.innerText = node.text; + } + documentTitle.appendChild(element); + }); + const documentHit = document.createElement('div'); + documentHit.classList.add('search-result-document-hit'); + const documentHitLink = document.createElement('a'); + documentHitLink.href = siteRootPath + doc.url + (sectionTitle ? '#' + sectionTitle.hash : ''); + documentHit.appendChild(documentHitLink); + if (highlightingResult.sectionTitleNodes.length > 0) { + const documentSectionTitle = document.createElement('div'); + documentSectionTitle.classList.add('search-result-section-title'); + documentHitLink.appendChild(documentSectionTitle); + highlightingResult.sectionTitleNodes.forEach(function (node) { + let element; + if (node.type === 'text') { + element = document.createTextNode(node.text); + } else { + element = document.createElement('span'); + element.classList.add('search-result-highlight'); + element.innerText = node.text; + } + documentSectionTitle.appendChild(element); + }); + } + highlightingResult.pageContentNodes.forEach(function (node) { + let element; + if (node.type === 'text') { + element = document.createTextNode(node.text); + } else { + element = document.createElement('span'); + element.classList.add('search-result-highlight'); + element.innerText = node.text; + } + documentHitLink.appendChild(element); + }); + const searchResultItem = document.createElement('div'); + searchResultItem.classList.add('search-result-item'); + searchResultItem.appendChild(documentTitle); + searchResultItem.appendChild(documentHit); + searchResultItem.addEventListener('mousedown', function (e) { + e.preventDefault(); + }); + return searchResultItem + } + + function createNoResult (text) { + const searchResultItem = document.createElement('div'); + searchResultItem.classList.add('search-result-item'); + const documentHit = document.createElement('div'); + documentHit.classList.add('search-result-document-hit'); + const message = document.createElement('strong'); + message.innerText = 'No results found for query "' + text + '"'; + documentHit.appendChild(message); + searchResultItem.appendChild(documentHit); + return searchResultItem + } + + function clearSearchResults (reset) { + if (reset === true) searchInput.value = ''; + searchResultContainer.innerHTML = ''; + } + + function filter (result, documents) { + const facetFilter = facetFilterInput && facetFilterInput.checked && facetFilterInput.dataset.facetFilter; + if (facetFilter) { + const [field, value] = facetFilter.split(':'); + return result.filter((item) => { + const ids = item.ref.split('-'); + const docId = ids[0]; + const doc = documents[docId]; + return field in doc && doc[field] === value + }) + } + return result + } + + function search (index, documents, queryString) { + // execute an exact match search + let query; + let result = filter( + index.query(function (lunrQuery) { + const parser = new globalThis.lunr.QueryParser(queryString, lunrQuery); + parser.parse(); + query = lunrQuery; + }), + documents + ); + if (result.length > 0) { + return result + } + // no result, use a begins with search + result = filter( + index.query(function (lunrQuery) { + lunrQuery.clauses = query.clauses.map((clause) => { + if (clause.presence !== globalThis.lunr.Query.presence.PROHIBITED) { + clause.term = clause.term + '*'; + clause.wildcard = globalThis.lunr.Query.wildcard.TRAILING; + clause.usePipeline = false; + } + return clause + }); + }), + documents + ); + if (result.length > 0) { + return result + } + // no result, use a contains search + result = filter( + index.query(function (lunrQuery) { + lunrQuery.clauses = query.clauses.map((clause) => { + if (clause.presence !== globalThis.lunr.Query.presence.PROHIBITED) { + clause.term = '*' + clause.term + '*'; + clause.wildcard = globalThis.lunr.Query.wildcard.LEADING | globalThis.lunr.Query.wildcard.TRAILING; + clause.usePipeline = false; + } + return clause + }); + }), + documents + ); + return result + } + + function searchIndex (index, store, text) { + clearSearchResults(false); + if (text.trim() === '') { + return + } + const result = search(index, store.documents, text); + const searchResultDataset = document.createElement('div'); + searchResultDataset.classList.add('search-result-dataset'); + searchResultContainer.appendChild(searchResultDataset); + if (result.length > 0) { + createSearchResult(result, store, searchResultDataset); + } else { + searchResultDataset.appendChild(createNoResult(text)); + } + } + + function confineEvent (e) { + e.stopPropagation(); + } + + function debounce (func, wait, immediate) { + let timeout; + return function () { + const context = this; + const args = arguments; + const later = function () { + timeout = null; + if (!immediate) func.apply(context, args); + }; + const callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) func.apply(context, args); + } + } + + function enableSearchInput (enabled) { + if (facetFilterInput) { + facetFilterInput.disabled = !enabled; + } + searchInput.disabled = !enabled; + searchInput.title = enabled ? '' : 'Loading index...'; + } + + function isClosed () { + return searchResultContainer.childElementCount === 0 + } + + function executeSearch (index) { + const debug = 'URLSearchParams' in globalThis && new URLSearchParams(globalThis.location.search).has('lunr-debug'); + const query = searchInput.value; + try { + if (!query) return clearSearchResults() + searchIndex(index.index, index.store, query); + } catch (err) { + if (err instanceof globalThis.lunr.QueryParseError) { + if (debug) { + console.debug('Invalid search query: ' + query + ' (' + err.message + ')'); + } + } else { + console.error('Something went wrong while searching', err); + } + } + } + + function toggleFilter (e, index) { + searchInput.focus(); + if (!isClosed()) { + executeSearch(index); + } + } + + function initSearch (lunr, data) { + const start = performance.now(); + const index = { index: lunr.Index.load(data.index), store: data.store }; + enableSearchInput(true); + searchInput.dispatchEvent( + new CustomEvent('loadedindex', { + detail: { + took: performance.now() - start, + }, + }) + ); + searchInput.addEventListener( + 'keydown', + debounce(function (e) { + if (e.key === 'Escape' || e.key === 'Esc') return clearSearchResults(true) + executeSearch(index); + }, 100) + ); + searchInput.addEventListener('click', confineEvent); + searchResultContainer.addEventListener('click', confineEvent); + if (facetFilterInput) { + facetFilterInput.parentElement.addEventListener('click', confineEvent); + facetFilterInput.addEventListener('change', (e) => toggleFilter(e, index)); + } + document.documentElement.addEventListener('click', clearSearchResults); + } + + // disable the search input until the index is loaded + enableSearchInput(false); + + exports.initSearch = initSearch; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/docs/_/js/site.js b/docs/_/js/site.js new file mode 100644 index 000000000..e094f19b0 --- /dev/null +++ b/docs/_/js/site.js @@ -0,0 +1,6 @@ +!function(){"use strict";var s,o,r=/^sect(\d)$/,t=document.querySelector(".nav-container"),n=document.querySelector(".nav-toggle"),a=t.querySelector(".nav"),e=t.querySelector(".nav-close"),l=(n.addEventListener("click",function(e){if(n.classList.contains("is-active"))return u(e);v(e);e=document.documentElement;e.classList.add("is-clipped--nav"),n.classList.add("is-active"),t.classList.add("is-active"),e.addEventListener("click",u)}),t.addEventListener("click",v),e.addEventListener("click",u),t.querySelector("[data-panel=menu]"));function i(){var e,t,n=window.location.hash;if(n&&(n.indexOf("%")&&(n=decodeURIComponent(n)),!(e=l.querySelector('.nav-link[href="'+n+'"]')))){n=document.getElementById(n.slice(1));if(n)for(var i=n,c=document.querySelector("article.doc");(i=i.parentNode)&&i!==c;){var a=i.id;if((a=a||(a=r.test(i.className))&&(i.firstElementChild||{}).id)&&(e=l.querySelector('.nav-link[href="#'+a+'"]')))break}}if(e)t=e.parentNode;else{if(!o)return;e=(t=o).querySelector(".nav-link")}t!==s&&(p(l,".nav-item.is-active").forEach(function(e){e.classList.remove("is-active","is-current-path","is-current-page")}),t.classList.add("is-current-page"),d(s=t),m(l,e))}function d(e){for(var t,n=e.parentNode;!(t=n.classList).contains("nav-menu");)"LI"===n.tagName&&t.contains("nav-item")&&t.add("is-active","is-current-path"),n=n.parentNode;e.classList.add("is-active")}function c(){var e,t,n,i;this.classList.toggle("is-active")&&(e=parseFloat(window.getComputedStyle(this).marginTop),t=this.getBoundingClientRect(),n=l.getBoundingClientRect(),0<(i=(t.bottom-n.top-n.height+e).toFixed()))&&(l.scrollTop+=Math.min((t.top-n.top-e).toFixed(),i))}function u(e){v(e);e=document.documentElement;e.classList.remove("is-clipped--nav"),n.classList.remove("is-active"),t.classList.remove("is-active"),e.removeEventListener("click",u)}function v(e){e.stopPropagation()}function m(e,t){var n=e.getBoundingClientRect(),i=n.height,c=window.getComputedStyle(a);"sticky"===c.position&&(i-=n.top-parseFloat(c.top)),e.scrollTop=Math.max(0,.5*(t.getBoundingClientRect().height-i)+t.offsetTop)}function p(e,t){return[].slice.call(e.querySelectorAll(t))}l&&(e=t.querySelector("[data-panel=explore]"),s=l.querySelector(".is-current-page"),(o=s)?(d(s),m(l,s.querySelector(".nav-link"))):l.scrollTop=0,p(l,".nav-item-toggle").forEach(function(e){var t=e.parentElement,e=(e.addEventListener("click",c.bind(t)),function(e,t){e=e.nextElementSibling;return(!e||!t||e[e.matches?"matches":"msMatchesSelector"](t))&&e}(e,".nav-text"));e&&(e.style.cursor="pointer",e.addEventListener("click",c.bind(t)))}),e&&e.querySelector(".context").addEventListener("click",function(){p(a,"[data-panel]").forEach(function(e){e.classList.toggle("is-active")})}),l.addEventListener("mousedown",function(e){1":"")+".sect"+c);r.push("h"+(i+1)+"[id]")}else r.push("h1[id].sect0");n.push(r.join(">"))}m=n.join(","),f=d.parentNode;var a,s=[].slice.call((f||document).querySelectorAll(m));if(!s.length)return e.parentNode.removeChild(e);var l={},u=s.reduce(function(e,t){var o=document.createElement("a"),n=(o.textContent=t.textContent,l[o.href="#"+t.id]=o,document.createElement("li"));return n.dataset.level=parseInt(t.nodeName.slice(1),10)-1,n.appendChild(o),e.appendChild(n),e},document.createElement("ul")),f=e.querySelector(".toc-menu"),m=(f||((f=document.createElement("div")).className="toc-menu"),document.createElement("h3")),e=(m.textContent=e.dataset.title||"Contents",f.appendChild(m),f.appendChild(u),!document.getElementById("toc")&&d.querySelector("h1.page ~ :not(.is-before-toc)"));e&&((m=document.createElement("aside")).className="toc embedded",m.appendChild(f.cloneNode(!0)),e.parentNode.insertBefore(m,e)),window.addEventListener("load",function(){p(),window.addEventListener("scroll",p)})}}function p(){var n,i,t,e=window.pageYOffset,o=1.15*h(document.documentElement,"fontSize"),r=d.offsetTop;e&&window.innerHeight+e+2>=document.documentElement.scrollHeight?(a=Array.isArray(a)?a:Array(a||0),n=[],i=s.length-1,s.forEach(function(e,t){var o="#"+e.id;t===i||e.getBoundingClientRect().top+h(e,"paddingTop")>r?(n.push(o),a.indexOf(o)<0&&l[o].classList.add("is-active")):~a.indexOf(o)&&l[a.shift()].classList.remove("is-active")}),u.scrollTop=u.scrollHeight-u.offsetHeight,a=1r)return!0;t="#"+e.id}),t?t!==a&&(a&&l[a].classList.remove("is-active"),(e=l[t]).classList.add("is-active"),u.scrollHeight>u.offsetHeight&&(u.scrollTop=Math.max(0,e.offsetTop+e.offsetHeight-u.offsetHeight)),a=t):a&&(l[a].classList.remove("is-active"),a=void 0))}function h(e,t){return parseFloat(window.getComputedStyle(e)[t])}}(); +!function(){"use strict";var o=document.querySelector("article.doc"),t=document.querySelector(".toolbar");function i(e){return e&&(~e.indexOf("%")?decodeURIComponent(e):e).slice(1)}function r(e){if(e){if(e.altKey||e.ctrlKey)return;window.location.hash="#"+this.id,e.preventDefault()}window.scrollTo(0,function e(t,n){return o.contains(t)?e(t.offsetParent,t.offsetTop+n):n}(this,0)-t.getBoundingClientRect().bottom)}window.addEventListener("load",function e(t){var n;(n=i(window.location.hash))&&(n=document.getElementById(n))&&(r.bind(n)(),setTimeout(r.bind(n),0)),window.removeEventListener("load",e)}),Array.prototype.slice.call(document.querySelectorAll('a[href^="#"]')).forEach(function(e){var t;(t=i(e.hash))&&(t=document.getElementById(t))&&e.addEventListener("click",r.bind(t))})}(); +!function(){"use strict";var t,e=document.querySelector(".page-versions .version-menu-toggle");e&&(t=document.querySelector(".page-versions"),e.addEventListener("click",function(e){t.classList.toggle("is-active"),e.stopPropagation()}),document.documentElement.addEventListener("click",function(){t.classList.remove("is-active")}))}(); +!function(){"use strict";var t=document.querySelector(".navbar-burger");t&&t.addEventListener("click",function(t){t.stopPropagation(),document.documentElement.classList.toggle("is-clipped--navbar"),this.classList.toggle("is-active");t=document.getElementById(this.dataset.target);{var e;t.classList.toggle("is-active")&&(t.style.maxHeight="",e=window.innerHeight-Math.round(t.getBoundingClientRect().top),parseInt(window.getComputedStyle(t).maxHeight,10)!==e)&&(t.style.maxHeight=e+"px")}}.bind(t))}(); +!function(){"use strict";var o=/^\$ (\S[^\\\n]*(\\\n(?!\$ )[^\\\n]*)*)(?=\n|$)/gm,s=/( ) *\\\n *|\\\n( ?) */g,l=/ +$/gm,e=(document.getElementById("site-script")||{dataset:{}}).dataset,d=null==e.uiRootPath?".":e.uiRootPath,r=e.svgAs,p=window.navigator.clipboard;[].slice.call(document.querySelectorAll(".doc pre.highlight, .doc .literalblock pre")).forEach(function(e){var t,n,a,c;if(e.classList.contains("highlight"))(i=(t=e.querySelector("code")).dataset.lang)&&"console"!==i&&((a=document.createElement("span")).className="source-lang",a.appendChild(document.createTextNode(i)));else{if(!e.innerText.startsWith("$ "))return;var i=e.parentNode.parentNode;i.classList.remove("literalblock"),i.classList.add("listingblock"),e.classList.add("highlightjs","highlight"),(t=document.createElement("code")).className="language-console hljs",t.dataset.lang="console",t.appendChild(e.firstChild),e.appendChild(t)}(i=document.createElement("div")).className="source-toolbox",a&&i.appendChild(a),p&&((n=document.createElement("button")).className="copy-button",n.setAttribute("title","Copy to clipboard"),"svg"===r?((a=document.createElementNS("http://www.w3.org/2000/svg","svg")).setAttribute("class","copy-icon"),(c=document.createElementNS("http://www.w3.org/2000/svg","use")).setAttribute("href",d+"/img/octicons-16.svg#icon-clippy"),a.appendChild(c),n.appendChild(a)):((c=document.createElement("img")).src=d+"/img/octicons-16.svg#view-clippy",c.alt="copy icon",c.className="copy-icon",n.appendChild(c)),(a=document.createElement("span")).className="copy-toast",a.appendChild(document.createTextNode("Copied!")),n.appendChild(a),i.appendChild(n)),e.parentNode.appendChild(i),n&&n.addEventListener("click",function(e){var t=e.innerText.replace(l,"");"console"===e.dataset.lang&&t.startsWith("$ ")&&(t=function(e){var t,n=[];for(;t=o.exec(e);)n.push(t[1].replace(s,"$1$2"));return n.join(" && ")}(t));window.navigator.clipboard.writeText(t).then(function(){this.classList.add("clicked"),this.offsetHeight,this.classList.remove("clicked")}.bind(this),function(){})}.bind(n,t))})}(); \ No newline at end of file diff --git a/docs/_/js/vendor/highlight.js b/docs/_/js/vendor/highlight.js new file mode 100644 index 000000000..fb959813b --- /dev/null +++ b/docs/_/js/vendor/highlight.js @@ -0,0 +1 @@ +!function(){function e(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5}) .+?( \\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{className:"bullet",begin:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{className:"strong",begin:"\\B\\*(?![\\*\\s])",end:"(\\n{2}|\\*)",contains:[{begin:"\\\\*\\w",relevance:0}]},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0},{className:"emphasis",begin:"_(?![_\\s])",end:"(\\n{2}|_)",relevance:0},{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}}function n(e){var n={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]};return{aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},e.HASH_COMMENT_MODE,a,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},n]}}function a(e){var n={begin:g="["+(g="a-zA-Z_\\-!.?+*=<>&#'")+"]["+g+"0-9/;:]*",relevance:0},a={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},t=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),s={className:"literal",begin:/\b(true|false|nil)\b/},r={begin:"[\\[\\{]",end:"[\\]\\}]"},l={className:"comment",begin:"\\^"+g},o=e.COMMENT("\\^\\{","\\}"),c={className:"symbol",begin:"[:]{1,2}"+g},d={begin:"\\(",end:"\\)"},u={endsWithParent:!0,relevance:0},g={keywords:{"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},lexemes:g,className:"name",begin:g,starts:u},n=[d,t,l,o,i,c,r,a,s,n];return d.contains=[e.COMMENT("comment",""),g,u],u.contains=n,r.contains=n,o.contains=[r],{aliases:["clj"],illegal:/\S/,contains:[d,t,l,o,i,c,r,a,s]}}function t(e){function n(e){return"(?:"+e+")?"}var a="decltype\\(auto\\)",t="[a-zA-Z_]\\w*::",i={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},{begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/}]},r={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},o={className:"title",begin:n(t)+e.IDENT_RE,relevance:0},t=n(t)+e.IDENT_RE+"\\s*\\(",c={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_tshort reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},d=[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,s],u={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:c,contains:d.concat([{begin:/\(/,end:/\)/,keywords:c,contains:d.concat(["self"]),relevance:0}]),relevance:0},a={className:"function",begin:"((decltype\\(auto\\)|(?:[a-zA-Z_]\\w*::)?[a-zA-Z_]\\w*(?:<.*?>)?)[\\*&\\s]+)+"+t,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:c,illegal:/[^\w\s\*&:<>]/,contains:[{begin:a,keywords:c,relevance:0},{begin:t,returnBegin:!0,contains:[o],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:c,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,r,i,{begin:/\(/,end:/\)/,keywords:c,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,r,i]}]},i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l]};return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:c,illegal:"",keywords:c,contains:["self",i]},{begin:e.IDENT_RE+"::",keywords:c},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin://,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:l,strings:s,keywords:c}}}function i(e){return{aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"},contains:[{className:"variable",begin:"\\${",end:"}"},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}function s(e){var n={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},a={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},t={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},i=e.inherit(t,{illegal:/\n/}),s={className:"subst",begin:"{",end:"}",keywords:n},r=e.inherit(s,{illegal:/\n/}),l={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,r]},o={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},s]},c=e.inherit(o,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]}),s=(s.contains=[o,l,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],r.contains=[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})],{variants:[o,l,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}),r=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},s,a,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[e.TITLE_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+r+"\\s+)+"+e.IDENT_RE+"\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{begin:e.IDENT_RE+"\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[s,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}}function r(e){var n={className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(page|font-face)",lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]",illegal:/:/,returnBegin:!0,contains:[{className:"keyword",begin:/@\-?\w[\w]*(\-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:"and or not only",contains:[{begin:/[a-z-]+:/,className:"attribute"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,{begin:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[n]}]}]}}function l(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}function o(e){return{aliases:["docker"],case_insensitive:!0,keywords:"from maintainer expose env arg user onbuild stopsignal",contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"/}]}]}]},s={className:"string",begin:"~[A-Z](?="+s+")",contains:[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/\//,end:/\//},{begin:/\|/,end:/\|/},{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/},{begin:/\/}]},r={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"""/,end:/"""/},{begin:/'''/,end:/'''/},{begin:/~S"""/,end:/"""/,contains:[]},{begin:/~S"/,end:/"/,contains:[]},{begin:/~S'''/,end:/'''/,contains:[]},{begin:/~S'/,end:/'/,contains:[]},{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},l={className:"function",beginKeywords:"def defp defmacro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})]},o=e.inherit(l,{className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord",end:/\bdo\b|$|;/}),s=[r,s,i,e.HASH_COMMENT_MODE,o,l,{begin:"::"},{className:"symbol",begin:":(?![\\s:])",contains:[r,{begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{className:"symbol",begin:n+":(?!:)",relevance:0},{className:"number",begin:"(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)",relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{begin:"->"},{begin:"("+e.RE_STARTERS_RE+")\\s*",contains:[e.HASH_COMMENT_MODE,{className:"regexp",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}],relevance:0}];return{lexemes:n,keywords:a,contains:t.contains=s}}function d(e){var n={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],keywords:n,illegal:"|<-"}]}}function _(e){var n="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",a={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:n,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:n,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},a,{className:"meta",begin:"@[A-Za-z]+"}]}}function m(e){var n="<>",a="",t=/<[A-Za-z0-9\\._:-]+/,i=/\/[A-Za-z0-9\\._:-]+>|\/>/,s="[A-Za-z$_][0-9A-Za-z$_]*",r={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},l={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:r,contains:[]},c={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},d={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"css"}},u={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,o]},o=(o.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,u,l,e.REGEXP_MODE],o.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]));return{aliases:["js","jsx","mjs","cjs"],keywords:r,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,u,e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,l,{begin:/[{,\n]\s*/,relevance:0,contains:[{begin:s+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:s,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+s+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:s},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:r,contains:o}]}]},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:n,end:a},{begin:t,end:i}],subLanguage:"xml",contains:[{begin:t,end:i,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:s}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}function b(e){var n={literal:"true false null"},a=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],t=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],i={end:",",endsWithParent:!0,excludeEnd:!0,contains:t,keywords:n},s={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(i,{begin:/:/})].concat(a),illegal:"\\S"},e={begin:"\\[",end:"\\]",contains:[e.inherit(i)],illegal:"\\S"};return t.push(s,e),a.forEach(function(e){t.push(e)}),{contains:t,keywords:n,illegal:"\\S"}}function p(e){var n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},t={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},i={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},t]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,i,t]}]},t=(t.contains.push(i),{className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"}),s={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(i,{className:"meta-string"})]}]},r={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0},l=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),o={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},c=o;return c.variants[1].contains=[o],o.variants[1].contains=[c],{aliases:["kt"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,l,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},a,t,s,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[o,e.C_LINE_COMMENT_MODE,l],relevance:0},e.C_LINE_COMMENT_MODE,l,t,s,i,e.C_NUMBER_MODE]},l]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},t,s]},i,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},r]}}function f(e){var n="\\[=*\\[",a="\\]=*\\]",t={begin:n,end:a,contains:["self"]},i=[e.COMMENT("--(?!"+n+")","$"),e.COMMENT("--"+n,a,{contains:[t],relevance:10})];return{lexemes:e.UNDERSCORE_IDENT_RE,keywords:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:i.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:i}].concat(i)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:n,end:a,contains:[t],relevance:5}])}}function E(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^\\s*([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```\\w*\\s*$",end:"^```[ ]*$"},{begin:"`.+?`"},{begin:"^( {4}|\\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}function h(e){var n={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},a={className:"subst",begin:/\$\{/,end:/}/,keywords:n},e=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",contains:[a],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]},{begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/\S+/}]}];return{aliases:["nixos"],keywords:n,contains:a.contains=e}}function N(e){return{disableAutodetect:!0}}function y(e){var n=/[a-zA-Z@][a-zA-Z0-9_]*/,a="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],keywords:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},lexemes:n,illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+a.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:a,lexemes:n,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}function v(e){var n="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",a={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:n},t={begin:"->{",end:"}"},i={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},s=[e.BACKSLASH_ESCAPE,a,i],i=[i,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),t,{className:"string",contains:s,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return a.contains=i,{aliases:["pl","pm"],lexemes:/[\w\.]+/,keywords:n,contains:t.contains=i}}function w(e){var n={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},a={className:"meta",begin:/<\?(php)?|\?>/},t={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},i={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[a]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},a,{className:"keyword",begin:/\$this\b/},n,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",n,e.C_BLOCK_COMMENT_MODE,t,i]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},t,i]}}function O(e){var n="[ \\t\\f]*",a="("+n+"[:=]"+n+"|[ \\t\\f]+)",t="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",i="([^\\\\:= \\t\\f\\n]|\\\\.)+",s={end:a,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:t+a,returnBegin:!0,contains:[{className:"attr",begin:t,endsParent:!0,relevance:0}],starts:s},{begin:i+a,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:i,endsParent:!0,relevance:0}],starts:s},{className:"attr",relevance:0,begin:i+n+"$"}]}}function M(e){var n=e.COMMENT("#","$"),a="([A-Za-z_]|::)(\\w|::)*",t=e.inherit(e.TITLE_MODE,{begin:a}),a={className:"variable",begin:"\\$"+a},i={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]};return{aliases:["pp"],contains:[n,a,i,{beginKeywords:"class",end:"\\{|;",illegal:/=/,contains:[t,n]},{beginKeywords:"define",end:/\{/,contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},relevance:0,contains:[i,n,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>",contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},a]}],relevance:0}]}}function x(e){var n={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},a={className:"meta",begin:/^(>>>|\.\.\.) /},t={className:"subst",begin:/\{/,end:/\}/,keywords:n,illegal:/#/},i={begin:/\{\{/,relevance:0},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,i,t]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,t]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,i,t]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i,t]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},s={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},r={className:"params",begin:/\(/,end:/\)/,contains:["self",a,s,i,e.HASH_COMMENT_MODE]};return t.contains=[i,s,a],{aliases:["py","gyp","ipython"],keywords:n,illegal:/(<\/|->|\?)|=>/,contains:[a,s,{beginKeywords:"if",relevance:0},i,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,r,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}function C(e){var n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",a={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},t={className:"doctag",begin:"@[A-Za-z]+"},i={begin:"#<",end:">"},t=[e.COMMENT("#","$",{contains:[t]}),e.COMMENT("^\\=begin","^\\=end",{contains:[t],relevance:10}),e.COMMENT("^__END__","\\n$")],s={className:"subst",begin:"#\\{",end:"}",keywords:a},r={className:"string",contains:[e.BACKSLASH_ESCAPE,s],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},{begin:/\w+/,endSameAsBegin:!0,contains:[e.BACKSLASH_ESCAPE,s]}]}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:a},r=[r,i,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(t)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:n}),l].concat(t)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[r,{begin:n}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[i,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,s],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(t),relevance:0}].concat(t);return s.contains=r,{aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:t.concat([{begin:/^\s*=>/,starts:{end:"$",contains:l.contains=r}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:r}}]).concat(r)}}function k(e){var n="([ui](8|16|32|64|128|size)|f(32|64))?",a="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{aliases:["rs"],keywords:{keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:a},lexemes:e.IDENT_RE+"!?",illegal:""}]}}function S(e){var n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},n={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,n]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[n],relevance:10}]},a={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},t={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0};return{keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},a,{className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[t]},{className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[a]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[a]},t]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}function T(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}function A(e){var n=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:"`",end:"`"},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,n,e.HASH_COMMENT_MODE]}}function R(e){var n={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},a=e.COMMENT("/\\*","\\*/",{contains:["self"]}),t={className:"subst",begin:/\\\(/,end:"\\)",keywords:n,contains:[]},i={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},s={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return t.contains=[s],{keywords:n,contains:[i,e.C_LINE_COMMENT_MODE,a,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},s,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,contains:["self",s,i,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:n,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,a]}]}}function B(e){var n={className:"symbol",begin:"&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;"},a={begin:"\\s",contains:[{className:"meta-keyword",begin:"#?[a-z_][a-z1-9_-]+",illegal:"\\n"}]},t=e.inherit(a,{begin:"\\(",end:"\\)"}),i=e.inherit(e.APOS_STRING_MODE,{className:"meta-string"}),s=e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),r={endsWithParent:!0,illegal:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"",relevance:10,contains:[a,s,i,t,{begin:"\\[",end:"\\]",contains:[{className:"meta",begin:"",contains:[a,t,s,i]}]}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},n,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:")",end:">",keywords:{name:"style"},contains:[r],starts:{end:"",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:")",end:">",keywords:{name:"script"},contains:[r],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"tag",begin:"",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},r]}]}}function U(e){var n="true false yes no null",a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]};return{case_insensitive:!0,aliases:["yml","YAML","yaml"],contains:[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!"+e.UNDERSCORE_IDENT_RE},{className:"type",begin:"!!"+e.UNDERSCORE_IDENT_RE},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{className:"number",begin:e.C_NUMBER_RE+"\\b"},a]}}var D,L,I={};D=function(t){var a,u=[],s=Object.keys,w=Object.create(null),r=Object.create(null),O=!0,n=/^(no-?highlight|plain|text)$/i,l=/\blang(?:uage)?-([\w-]+)\b/i,i=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,M="",x="Could not find the language '{}', did you forget to load/include a language module?",C={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},o="of and for in not or if then".split(" ");function k(e){return e.replace(/&/g,"&").replace(//g,">")}function g(e){return e.nodeName.toLowerCase()}function c(e){return n.test(e)}function d(e){var n,a={},t=Array.prototype.slice.call(arguments,1);for(n in e)a[n]=e[n];return t.forEach(function(e){for(n in e)a[n]=e[n]}),a}function _(e){var i=[];return function e(n,a){for(var t=n.firstChild;t;t=t.nextSibling)3===t.nodeType?a+=t.nodeValue.length:1===t.nodeType&&(i.push({event:"start",offset:a,node:t}),a=e(t,a),g(t).match(/br|hr|img|input/)||i.push({event:"stop",offset:a,node:t}));return a}(e,0),i}function m(e,n,a){var t=0,i="",s=[];function r(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function o(e){i+=""}function c(e){("start"===e.event?l:o)(e.node)}for(;e.length||n.length;){var d=r();if(i+=k(a.substring(t,d[0].offset)),t=d[0].offset,d===e){for(s.reverse().forEach(o);c(d.splice(0,1)[0]),(d=r())===e&&d.length&&d[0].offset===t;);s.reverse().forEach(l)}else"start"===d[0].event?s.push(d[0].node):s.pop(),c(d.splice(0,1)[0])}return i+k(a.substr(t))}function b(n){return n.variants&&!n.cached_variants&&(n.cached_variants=n.variants.map(function(e){return d(n,{variants:null},e)})),n.cached_variants||(function e(n){return!!n&&(n.endsWithParent||e(n.starts))}(n)?[d(n,{starts:n.starts?d(n.starts):null})]:Object.isFrozen(n)?[d(n)]:[n])}function p(e){if(a&&!e.langApiRestored){for(var n in e.langApiRestored=!0,a)e[n]&&(e[a[n]]=e[n]);(e.contains||[]).concat(e.variants||[]).forEach(p)}}function f(n,t){var i={};return"string"==typeof n?a("keyword",n):s(n).forEach(function(e){a(e,n[e])}),i;function a(a,e){(e=t?e.toLowerCase():e).split(" ").forEach(function(e){var n,e=e.split("|");i[e[0]]=[a,(n=e[0],(e=e[1])?Number(e):function(e){return-1!=o.indexOf(e.toLowerCase())}(n)?0:1)]})}}function S(t){function d(e){return e&&e.source||e}function u(e,n){return new RegExp(d(e),"m"+(t.case_insensitive?"i":"")+(n?"g":""))}function i(i){var s={},r=[],l={},a=1;function e(e,n){s[a]=e,r.push([e,n]),a+=new RegExp(n.toString()+"|").exec("").length-1+1}for(var n=0;n')+n+(a?"":M)):n:""}function r(){var e,n,a,t,i;if(!m.keywords)return k(E);for(a="",m.lexemesRe.lastIndex=e=0,n=m.lexemesRe.exec(E);n;)a+=k(E.substring(e,n.index)),t=m,i=n,i=_.case_insensitive?i[0].toLowerCase():i[0],(t=t.keywords.hasOwnProperty(i)&&t.keywords[i])?(h+=t[1],a+=s(t[0],k(n[0]))):a+=k(n[0]),e=m.lexemesRe.lastIndex,n=m.lexemesRe.exec(E);return a+k(E.substr(e))}function l(){var e,n;p+=null!=m.subLanguage?(n="string"==typeof m.subLanguage)&&!w[m.subLanguage]?k(E):(e=n?T(m.subLanguage,E,!0,b[m.subLanguage]):A(E,m.subLanguage.length?m.subLanguage:void 0),0")+'"');if("end"===n.type){e=d(n);if(null!=e)return e}return E+=a,a.length}var _=R(n);if(!_)throw console.error(x.replace("{}",n)),new Error('Unknown language: "'+n+'"');S(_);for(var m=a||_,b={},p="",f=m;f!==_;f=f.parent)f.className&&(p=s(f.className,"",!0)+p);var E="",h=0;try{for(var N,y,v=0;;){if(m.terminators.lastIndex=v,!(N=m.terminators.exec(i)))break;y=g(i.substring(v,N.index),N),v=N.index+y}for(g(i.substr(v)),f=m;f.parent;f=f.parent)f.className&&(p+=M);return{relevance:h,value:p,illegal:!1,language:n,top:m}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{illegal:!0,relevance:0,value:k(i)};if(O)return{relevance:0,value:k(i),language:n,top:m,errorRaised:e};throw e}}function A(a,e){e=e||C.languages||s(w);var t={relevance:0,value:k(a)},i=t;return e.filter(R).filter(v).forEach(function(e){var n=T(e,a,!1);n.language=e,n.relevance>i.relevance&&(i=n),n.relevance>t.relevance&&(i=t,t=n)}),i.language&&(t.second_best=i),t}function E(e){return C.tabReplace||C.useBR?e.replace(i,function(e,n){return C.useBR&&"\n"===e?"
":C.tabReplace?n.replace(/\t/g,C.tabReplace):""}):e}function h(e){var n,a,t,i,s=function(e){var n,a,t,i,s,r=e.className+" ";if(r+=e.parentNode?e.parentNode.className:"",a=l.exec(r))return(s=R(a[1]))||(console.warn(x.replace("{}",a[1])),console.warn("Falling back to no-highlight mode for this block.",e)),s?a[1]:"no-highlight";for(n=0,t=(r=r.split(/\s+/)).length;n/g,"\n"):a=e,i=a.textContent,n=s?T(s,i,!0):A(i),(a=_(a)).length&&((t=document.createElement("div")).innerHTML=n.value,n.value=m(a,_(t),i)),n.value=E(n.value),e.innerHTML=n.value,e.className=(a=e.className,t=s,i=n.language,t=t?r[t]:i,i=[a.trim()],a.match(/\bhljs\b/)||i.push("hljs"),-1===a.indexOf(t)&&i.push(t),i.join(" ").trim()),e.result={language:n.language,re:n.relevance},n.second_best&&(e.second_best={language:n.second_best.language,re:n.second_best.relevance}))}function N(){var e;N.called||(N.called=!0,e=document.querySelectorAll("pre code"),u.forEach.call(e,h))}var y={disableAutodetect:!0};function R(e){return e=(e||"").toLowerCase(),w[e]||w[r[e]]}function v(e){e=R(e);return e&&!e.disableAutodetect}return t.highlight=T,t.highlightAuto=A,t.fixMarkup=E,t.highlightBlock=h,t.configure=function(e){C=d(C,e)},t.initHighlighting=N,t.initHighlightingOnLoad=function(){window.addEventListener("DOMContentLoaded",N,!1),window.addEventListener("load",N,!1)},t.registerLanguage=function(n,e){var a;try{a=e(t)}catch(e){if(console.error("Language definition for '{}' could not be registered.".replace("{}",n)),!O)throw e;console.error(e),a=y}p(w[n]=a),a.rawDefinition=e.bind(null,t),a.aliases&&a.aliases.forEach(function(e){r[e]=n})},t.listLanguages=function(){return s(w)},t.getLanguage=R,t.requireLanguage=function(e){var n=R(e);if(n)return n;throw new Error("The '{}' language is required, but not loaded.".replace("{}",e))},t.autoDetection=v,t.inherit=d,t.debugMode=function(){O=!1},t.IDENT_RE="[a-zA-Z]\\w*",t.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",t.NUMBER_RE="\\b\\d+(\\.\\d+)?",t.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",t.BINARY_NUMBER_RE="\\b(0b[01]+)",t.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",t.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},t.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},t.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},t.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},t.COMMENT=function(e,n,a){e=t.inherit({className:"comment",begin:e,end:n,contains:[]},a||{});return e.contains.push(t.PHRASAL_WORDS_MODE),e.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),e},t.C_LINE_COMMENT_MODE=t.COMMENT("//","$"),t.C_BLOCK_COMMENT_MODE=t.COMMENT("/\\*","\\*/"),t.HASH_COMMENT_MODE=t.COMMENT("#","$"),t.NUMBER_MODE={className:"number",begin:t.NUMBER_RE,relevance:0},t.C_NUMBER_MODE={className:"number",begin:t.C_NUMBER_RE,relevance:0},t.BINARY_NUMBER_MODE={className:"number",begin:t.BINARY_NUMBER_RE,relevance:0},t.CSS_NUMBER_MODE={className:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},t.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[t.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[t.BACKSLASH_ESCAPE]}]},t.TITLE_MODE={className:"title",begin:t.IDENT_RE,relevance:0},t.UNDERSCORE_TITLE_MODE={className:"title",begin:t.UNDERSCORE_IDENT_RE,relevance:0},t.METHOD_GUARD={begin:"\\.\\s*"+t.UNDERSCORE_IDENT_RE,relevance:0},[t.BACKSLASH_ESCAPE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.PHRASAL_WORDS_MODE,t.COMMENT,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.HASH_COMMENT_MODE,t.NUMBER_MODE,t.C_NUMBER_MODE,t.BINARY_NUMBER_MODE,t.CSS_NUMBER_MODE,t.REGEXP_MODE,t.TITLE_MODE,t.UNDERSCORE_TITLE_MODE,t.METHOD_GUARD].forEach(function(e){!function n(a){Object.freeze(a);var t="function"==typeof a;Object.getOwnPropertyNames(a).forEach(function(e){!a.hasOwnProperty(e)||null===a[e]||"object"!=typeof a[e]&&"function"!=typeof a[e]||t&&("caller"===e||"callee"===e||"arguments"===e)||Object.isFrozen(a[e])||n(a[e])});return a}(e)}),t},L="object"==typeof window&&window||"object"==typeof self&&self,void 0===I||I.nodeType?L&&(L.hljs=D({}),"function"==typeof define)&&define.amd&&define([],function(){return L.hljs}):D(I);!function(){"use strict";I.registerLanguage("asciidoc",e),I.registerLanguage("bash",n),I.registerLanguage("clojure",a),I.registerLanguage("cpp",t),I.registerLanguage("cmake",i),I.registerLanguage("cs",s),I.registerLanguage("css",r),I.registerLanguage("diff",l),I.registerLanguage("dockerfile",o),I.registerLanguage("elixir",c),I.registerLanguage("go",d),I.registerLanguage("groovy",u),I.registerLanguage("haskell",g),I.registerLanguage("java",_),I.registerLanguage("javascript",m),I.registerLanguage("json",b),I.registerLanguage("kotlin",p),I.registerLanguage("lua",f),I.registerLanguage("markdown",E),I.registerLanguage("nix",h),I.registerLanguage("none",N),I.registerLanguage("objectivec",y),I.registerLanguage("perl",v),I.registerLanguage("php",w),I.registerLanguage("properties",O),I.registerLanguage("puppet",M),I.registerLanguage("python",x),I.registerLanguage("ruby",C),I.registerLanguage("rust",k),I.registerLanguage("scala",S),I.registerLanguage("shell",T),I.registerLanguage("sql",A),I.registerLanguage("swift",R),I.registerLanguage("xml",B),I.registerLanguage("yaml",U),[].slice.call(document.querySelectorAll("pre code.hljs[data-lang]")).forEach(function(e){I.highlightBlock(e)})}()}(); \ No newline at end of file diff --git a/docs/_/js/vendor/lunr.js b/docs/_/js/vendor/lunr.js new file mode 100644 index 000000000..cdc94cd39 --- /dev/null +++ b/docs/_/js/vendor/lunr.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/_/js/vendor/tabs.js b/docs/_/js/vendor/tabs.js new file mode 100644 index 000000000..aa1855ce7 --- /dev/null +++ b/docs/_/js/vendor/tabs.js @@ -0,0 +1,2 @@ +!function(){/*! Asciidoctor Tabs | Copyright (c) 2018-present Dan Allen | MIT License */ +"use strict";var t,r=(document.currentScript||{}).dataset||{},d=Array.prototype.forEach;function u(t){var e,a=this.tab,n=this.tabs||(this.tabs=a.closest(".tabs")),i=this.panel||(this.panel=document.getElementById(a.getAttribute("aria-controls")));d.call(n.querySelectorAll(".tablist .tab"),function(t){p(t,t===a)}),d.call(n.querySelectorAll(".tabpanel"),function(t){y(t,t!==i)}),!this.isSync&&"syncStorageKey"in r&&"syncGroupId"in n.dataset&&(n=r.syncStorageKey+"-"+n.dataset.syncGroupId,window[(r.syncStorageScope||"local")+"Storage"].setItem(n,a.dataset.syncId)),t&&(~(e=(n=window.location).hash?n.href.indexOf("#"):-1)&&window.history.replaceState(null,"",n.href.slice(0,e)),t.preventDefault())}function b(t){u.call(this,t);var a=this.tabs,n=this.tab,t=a.getBoundingClientRect().y,t=(d.call(document.querySelectorAll(".tabs"),function(e){e!==a&&e.dataset.syncGroupId===a.dataset.syncGroupId&&d.call(e.querySelectorAll(".tablist .tab"),function(t){t.dataset.syncId===n.dataset.syncId&&u.call({tabs:e,tab:t,isSync:!0})})}),a.getBoundingClientRect().y-t);(t=t&&Math.round(t))&&window.scrollBy({top:t,behavior:"instant"})}function e(t,e,a){d.call(t,function(t){t.classList[a](e)})}function y(t,e){t.classList[(t.hidden=e)?"add":"remove"]("is-hidden")}function p(t,e){t.setAttribute("aria-selected",""+e),t.classList[e?"add":"remove"]("is-selected"),t.tabIndex=e?0:-1}function a(){var t=window.location.hash.slice(1);t&&(t=document.getElementById(~t.indexOf("%")?decodeURIComponent(t):t))&&t.classList.contains("tab")&&("syncId"in t.dataset?b:u).call({tab:t})}(t=document.querySelectorAll(".tabs")).length&&(d.call(t,function(s){var l,o=s.classList.contains("is-sync")?{}:void 0,t=s.querySelector(".tablist ul");if(t.setAttribute("role","tablist"),d.call(t.querySelectorAll("li"),function(t,e){var a,n;if(t.setAttribute("role",t.className="tab"),!(a=t.id)){if(!(i=t.querySelector("a[id]")))return;t.id=a=i.parentNode.removeChild(i).id}var i=s.querySelector('.tabpanel[aria-labelledby~="'+a+'"]');i&&(t.tabIndex=-1,o&&((n=t.textContent.trim())in o?n=void 0:o[t.dataset.syncId=n]=t),e||(l={tab:t,panel:i},o)?y(i,!0):p(t,!0),t.setAttribute("aria-controls",i.id),i.setAttribute("role","tabpanel"),d.call(i.querySelectorAll("table.tableblock"),function(t){var e=Object.assign(document.createElement("div"),{className:"tablecontainer"});t.parentNode.insertBefore(e,t).appendChild(t)}),t.addEventListener("click",(void 0===n?u:b).bind({tabs:s,tab:t,panel:i})))}),o&&l){for(var e,a,n=0,i=s.classList,c=i.length;n!==c;n++)if((a=i.item(n)).startsWith("data-sync-group-id=")){s.dataset.syncGroupId=e=i.remove(a)||a.slice(19).replace(/\u00a0/g," ");break}void 0===e&&(s.dataset.syncGroupId=e=Object.keys(o).sort().join("|"));t="syncStorageKey"in r&&window[(r.syncStorageScope||"local")+"Storage"].getItem(r.syncStorageKey+"-"+e),t=t&&o[t];t&&Object.assign(l,{tab:t,panel:document.getElementById(t.getAttribute("aria-controls"))}),p(l.tab,!0),y(l.panel,!1)}}),a(),e(t,"is-loading","remove"),window.setTimeout(e.bind(null,t,"is-loaded","add"),0),window.addEventListener("hashchange",a))}(); \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 000000000..49bb7a103 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,9 @@ + + + + + + +Redirect Notice +

Redirect Notice

+

The page you requested has been relocated to https://www.mrdocs.com/mrdocs/develop/index.html.

diff --git a/docs/mrdocs/develop/_attachments/mrdocs.schema.json b/docs/mrdocs/develop/_attachments/mrdocs.schema.json new file mode 100644 index 000000000..e18489464 --- /dev/null +++ b/docs/mrdocs/develop/_attachments/mrdocs.schema.json @@ -0,0 +1,263 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "properties": { + "addons": { + "default": "/share/mrdocs/addons", + "description": "Path to the Addons directory. The Addons directory contains the template files used by generators to create the documentation. When a custom Addons directory is not specified, the default templates are used. The default templates are located at the `share/mrdocs/addons` directory of the MrDocs installation. Users can create custom templates by copying the default templates to a custom directory and specifying the custom directory using this option.", + "title": "Path to the Addons directory", + "type": "string" + }, + "anonymous-namespaces": { + "default": "always", + "description": "Determine whether symbols in anonymous namespaces should be extracted. When set to `always`, symbols in anonymous namespaces are always extracted. When set to `dependency`, symbols in anonymous namespaces are extracted only if they are referenced by the source code. When set to `never`, symbols in anonymous namespaces are never extracted.", + "enum": [ + "always", + "dependency", + "never" + ], + "title": "Extraction policy for anonymous namespaces" + }, + "base-url": { + "default": "", + "description": "Base URL for links to source code. The base URL is used to create links to the source code in the documentation. The base URL is combined with the path to the source file to create the link.", + "title": "Base URL for links to source code", + "type": "string" + }, + "cmake": { + "default": "", + "description": "When the compilation-database option is a CMakeLists.txt file, these arguments are passed to the cmake command to generate the compilation_database.json.", + "title": "CMake arguments when generating the compilation database from CMakeLists.txt", + "type": "string" + }, + "compilation-database": { + "default": "", + "description": "Path to the compilation database or a build script to generate it. The compilation database is a JSON file that contains the compiler commands used to build the source code. The compilation database is used to extract the compiler flags and the source files used to build the source code and extract symbols. This option also accepts the path to a build script such as CMakeLists.txt to be used to generate the compilation database. In this case, MrDocs will look for CMake in `PATH` or in `CMAKE_ROOT` and run the script to generate the compilation database file.", + "title": "Path to the compilation database", + "type": "string" + }, + "defines": { + "default": [], + "description": "Additional defines passed to the compiler when building the source code. These defines are added to the compilation database regardless of the strategy to generate it.", + "items": { + "type": "string" + }, + "title": "Additional defines passed to the compiler", + "type": "array" + }, + "detect-sfinae": { + "default": true, + "description": "When set to true, MrDocs detects SFINAE expressions in the source code and extracts them as part of the documentation. Expressions such as `std::enable_if<...>` are detected, removed, and documented as a requirement.", + "title": "Detect SFINAE expressions", + "type": "boolean" + }, + "embedded": { + "default": false, + "title": "Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. This option is useful for producing documents that can be inserted into an external template.", + "type": "boolean" + }, + "filters": { + "properties": { + "symbols": { + "description": "Symbol filters. Symbols that match these filters are extracted. The filters are applied to the fully qualified name of the symbol.", + "properties": { + "exclude": { + "default": [], + "description": "Specifies symbol exclusion patterns. Symbols that match these patterns are not extracted. The patterns are applied to the fully qualified name of the symbol.", + "items": { + "type": "string" + }, + "title": "Specifies symbol exclusion patterns", + "type": "array" + }, + "include": { + "default": [], + "description": "Specifies symbol inclusion patterns. Symbols that match these patterns are extracted. The patterns are applied to the fully qualified name of the symbol.", + "items": { + "type": "string" + }, + "title": "Specifies symbol inclusion patterns", + "type": "array" + } + }, + "required": [], + "title": "Symbol filters", + "type": "object" + } + }, + "required": [], + "title": "Filters", + "type": "object" + }, + "generate": { + "default": "adoc", + "enum": [ + "adoc", + "html", + "xml" + ], + "title": "Generator used to create the documentation" + }, + "ignore-failures": { + "default": false, + "description": "When set to true, MrDocs continues to generate the documentation even if there are AST visitation failures. AST visitation failures occur when the source code contains constructs that are not supported by MrDocs.", + "title": "Whether AST visitation failures should not stop the program", + "type": "boolean" + }, + "ignore-map-errors": { + "default": false, + "description": "When set to true, MrDocs continues to generate the documentation even if some files are not mapped correctly. Files are not mapped correctly when the source file is not found or the compilation database does not contain the compiler flags for the source file.", + "title": "Continue if files are not mapped correctly", + "type": "boolean" + }, + "implementation-defined": { + "default": [], + "description": "Namespaces for symbols rendered as \"implementation-defined\". Symbols in these namespaces are not extracted and are rendered as \"implementation-defined\" in the documentation. This option is used to exclude symbols from the documentation that are considered part of the private API of the project.", + "items": { + "type": "string" + }, + "title": "Namespaces for symbols rendered as \"implementation-defined\"", + "type": "array" + }, + "inaccessible-bases": { + "default": "always", + "description": "Determine whether inaccessible base classes should be extracted. When set to `always`, inaccessible base classes are always extracted. When set to `dependency`, inaccessible base classes are extracted only if they are referenced by the source code. When set to `never`, inaccessible base classes are never extracted.", + "enum": [ + "always", + "dependency", + "never" + ], + "title": "Extraction policy for inaccessible base classes" + }, + "inaccessible-members": { + "default": "always", + "description": "Determine whether inaccessible members should be extracted. When set to `always`, inaccessible members are always extracted. When set to `dependency`, inaccessible members are extracted only if they are referenced by the source code. When set to `never`, inaccessible members are never extracted.", + "enum": [ + "always", + "dependency", + "never" + ], + "title": "Extraction policy for inaccessible members" + }, + "includes": { + "default": [], + "description": "Include paths. These paths are used to add directories to the include search path. The include search path is used to search for headers. The headers are used to provide declarations and definitions of symbols. The headers are part of the project and are checked for warnings and errors.", + "items": { + "type": "string" + }, + "title": "Include paths", + "type": "array" + }, + "input": { + "description": "Include files to extract. Only the files listed in this option are extracted. The paths are relative to the mrdocs configuration file.", + "properties": { + "file-patterns": { + "default": [], + "description": "File patterns to include. Only the files that match these patterns are extracted. The patterns are relative to the input directories.", + "items": { + "type": "string" + }, + "title": "File patterns to include", + "type": "array" + }, + "include": { + "default": [], + "description": "Input directories to include. Only the files in these directories are extracted. The paths are relative to the mrdocs configuration file.", + "items": { + "type": "string" + }, + "title": "Input directories to include", + "type": "array" + } + }, + "required": [], + "title": "Include files to extract", + "type": "object" + }, + "legible-names": { + "default": true, + "description": "Use legible names for ids in the documentation. When set to true, MrDocs uses legible names for symbols in the documentation. These are symbols that are legible but still safe for URLs. When the option is set to false, MrDocs uses a hash of the symbol ID.", + "title": "Use legible names", + "type": "boolean" + }, + "multipage": { + "default": true, + "description": "Generates a multipage documentation. The output directory must be a directory. This option acts as a hint to the generator to create a multipage documentation. Whether the hint is followed or not depends on the generator.", + "title": "Generate a multipage documentation", + "type": "boolean" + }, + "output": { + "default": "/reference-output", + "description": "Multipage generators expect a directory. Single page generators expect a file or a directory where the file will be created. If the directory does not exist, it will be created.", + "title": "Directory or file for generating output", + "type": "string" + }, + "referenced-declarations": { + "default": "dependency", + "description": "Determine whether external declarations should be extracted when they are referenced in the source code. When set to `always`, external declarations are always extracted. When set to `dependency`, external declarations are extracted only if they are referenced by the source code. When set to `never`, external declarations are never extracted.", + "enum": [ + "always", + "dependency", + "never" + ], + "title": "Extraction policy for references to external declarations" + }, + "report": { + "default": 1, + "description": "The reporting level determines the amount of information displayed during the generation of the documentation. The levels are: 0 - no output, 1 - errors only, 2 - errors and warnings, 3 - errors, warnings, and information, 4 - errors, warnings, information, and debug information.", + "maximum": 4, + "minimum": 0, + "title": "The minimum reporting level: 0 to 4", + "type": "integer" + }, + "see-below": { + "default": [], + "description": "Namespaces for symbols rendered as \"see-below\". Symbols in these namespaces are not extracted and are rendered as \"see-below\" in the documentation. This option is used to exclude symbols from the documentation that are considered part of the private API of the project.", + "items": { + "type": "string" + }, + "title": "Namespaces for symbols rendered as \"see-below\"", + "type": "array" + }, + "source-root": { + "default": "", + "title": "Path to the root directory of the source code", + "type": "string" + }, + "stdlib-includes": { + "default": [ + "/share/mrdocs/libcxx", + "/share/mrdocs/clang" + ], + "description": "Standard Library include paths. These paths are used to replace the standard library paths provided by the compiler.", + "items": { + "type": "string" + }, + "title": "Standard Library include paths", + "type": "array" + }, + "system-includes": { + "default": [], + "description": "System include paths. These paths are used to add directories to the system include search path. The system include search path is used to search for system headers. The system headers are headers that are provided by the system and are not part of the project. The system headers are used to provide the standard library headers and other system headers. The system headers are not part of the project and are not checked for warnings and errors.", + "items": { + "type": "string" + }, + "title": "System include paths", + "type": "array" + }, + "use-system-stdlib": { + "default": false, + "description": "True if the compiler has to use just the system standard library. When set to true, the compiler uses the system standard library instead of the standard library provided by the compiler.", + "title": "Use the system standard library", + "type": "boolean" + }, + "verbose": { + "default": false, + "description": "Verbose output. When set to true, MrDocs outputs additional information during the generation of the documentation.", + "title": "Verbose output", + "type": "boolean" + } + }, + "required": [], + "title": "MrDocs Configuration", + "type": "object" +} \ No newline at end of file diff --git a/docs/mrdocs/develop/_images/MrDocsBanner.jpg b/docs/mrdocs/develop/_images/MrDocsBanner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9a23de516ad75b2f546eea8ca3565a34e95043a GIT binary patch literal 163542 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%0A90m$c;oFPx<3X!j6m{Wl6+< zCC8^Sjqf$3{{TA`9f_~Osqe)oG_|@E zlcY!09kl>SDHrwTEOy)caS<;cX-;F_A;ZNfMQ!L+!fkF}AJxy-2$BG~QZNE-WaOne zqQKl(ru%h1d*Pho_Xnscnr+)2l<_I=StN^{Dm#bXqN9j!SJ_uZ}!_8O?NQ&=w3_1Y%-!F0_i~XKo;kJ)z1(^ z=MT5utr2qvet?yT0CFFqck9oUvDR@Np7iTm9LXw3x!7~Lw$>kb<%jWb_5@%0efria z5(xB?X@lY(E)3UGll59HQuC?27d#19v*CU}iX{otQw%X%+`4PD5bAq_v zDG7v@v#r4z@~Q`X*y;;pd^OzL2tR;OwL;zd^(j@88`-T_0J@X*cuwOHQ}lQ1Os#wO z@5M+uduQ2`*JTU*3AW#6Bisg|D9aE+6!8hGu(CS3pm*FI3+d0x2WJ!5jQ(j*CpRRA zwi}IC@oaZTL)POD&o#c(cz6!O_@)yZ0zALN4d2cw_`QYrr0S{wY0iG&-}>Zj&)4w8 z#vRU&+N!wM%}9imRFL5|>Y>)%e@hq24r4n#%P_9z`%`g4bMZeBy|?n`ixgfjx89c)nrX9iORY7{3`ieZd*1Xt)ESbPIe_ak%xx_K0O@J%75(F*EYc7t-!emykqq z0NkYSakwCJ^BaCRJwd#0`bs+vHmDx6P~xzKDZ+Q;KHm}B*Xwo0S+!ug7m?=tSE9BF z|&3j61G@ZWUy`Ql^Gast&%!~A!788B0l=JFJO~>bq z-ltbM^xbXL8_i)o4GE*01*5O0f!_}MSv!7sN|@Y>b+_D~&3;Mt>QPrT52ioWwYh8* zuslC!;frM%y}K1kuv$ie&{ImCyn=tEe-#WpmzaC>6v{9JuhW8&nK)T3gp1vjgQ)V^ z0^{$*Je>+*oZyNQ0Pcyl5Jh&MSE$iteCwCtiiG(R z9dV%-O;St*RA&bmOi5bexDzI0G2TPVZT&G2QAHye%J9v4e3&rXwpO)oD$g9ovWryI~WWY#7Aht(<=SKc!>75QAzqrOyrJ8y-gg z084#Uq|cQ~K4Prqn%~Xna7w4S4dwTgsR&Aaq9mYGDCltk(1(;XEfC!)d%XguNsJizK;3VBrP`?c5qa?;SfWkx3_bC{rXgM z-r8v;Zz;)}yXkR2J}Gv>ol>YhCN6Bs(b@J0bjgp39J>8!id1;=W-T3%rt39VU!zyIA zaxF@->cV6E%^?m+%g)Df4pR!kB4lce7?EJDx?5>OJ<^u*N?Ig3>q}Av_LB?4={Y&8 zgCa5XX1;6oo;+0(6@7hBd~`9oZd0$;zl@zQbJuKcDN|FIV$*n=R(0tW35tQ1>XjB} z)Y9y!^$9FhD-6L*y3HU+tb4N_b#YS$G-xj|35byCiqDE*bneR1%%{IKu6Fic)%2t3 zHftA{ht##r7Ur~p{a0!!<<81Iu&Z>X#+SpTrOMSP(`t1r=T6G?`m&`s&VM=i+SX<5| z=NhvaWaI`&3F!Jx^?UXwrv_~^36+B-x09DRb`*LZS*qq-iI>w$tL2F7)~FeljZpTA zT-mJ7i17KxFIQx}J(m|9#!?+=Pc5}YOf#Y9V7lgkv-o9pF;4eF!#5}D_wm2-R9s^i zqQh$hAO@fLDHYhx1y3c)b1uuJQYg}?((4rIlsZjq`sFs2U3Ky$(W0l?3SqwGL6;_K zZBC*(l$dFf&#}vi8)ficO)VZK>UxHj%NRME0N+3$zw14#1@Ox+ErmY18*e$S-Twgb zKX>|8_@B*LYNwTC(WgyQbqX$8gyiW=A&2BsVAbkxB84sbYML=5!)kpEF1FkIhntQb zd5Fu=E7o<*Wkw%Q6~){ceeQ1OjrFe#(J|DxoS2XXH_0o8Zxrul%jEc~2C z=W4n$R%(SUx{UhDCD!CfLq?G_svHVjT4f@I9mEPXEtt>}&$1`FOQBCP>eSP&u!!xH zqMH}3ekoMa;^UNNZM181HNR_lEw;GDE(3+L3Zs-qmAlzSZS2<6Tfo<|by zQPLe!O!=+FtH&rqQJHdBONuKm#}2lKp~`7?g0m%PLu~0omjy{u(o%(`)I-!fwdL2= z>eER~*{E7v%);5Xy(Xty6;#ZR-NAX8RM8MeeVLD_zcHClyz|b<`L*OO5=XQ9JI<*< z>1{FHODT+GnR-dNMg|jiyPA56s?=d+wG1w9R^K*m#1rFZ7@FZeOPMkwN^grfsXtF@1V)y(pF~Pd-EBOW79TwX zH3#AKk-f3Ct!uS=OB>?l%bP{3crMug0QU|xPl;7Sn+d|@W2SN4ZJ6NlG%a?c+M(BG z{>#~aAf?VF@qLK&yqA=vs;{1^qC}eNovO*4+!}o~f|nHKN^_N3l|8WHLyR>hLgYz% zx<`7vS7q=v;O>6X;}C~by6$V6K?BG!9Z@Lq*0hmvYfQgUphy_2%571!4pN^OZ$rZVi93ULsoSDJ-2 zB0Sm2dD$t3@=J^FBf6C~!YbXN!9Ej%RF=-?=d%u8g6|vX_spd{997WlZaC^JYK?)l z!NBKkesh{{n|tw5x3DK`EZLvGj2t}TwqTQ(EA%+j`i5Lhb^;~8A|p|%k?V|Arn1Uh zp5cKu8PzbY#G$#UQnf9Grm3)-VO>%xa4n#a)R`LAWqVt_&K%}}=2t%pJ`X7Hw$N=x z%+vf6R~NcI8E(?u*OTQtnun6I2wQ*)<(&`c^^IAzth+Aos z8RVrx=}1l!#A$^dBU4W1<#aD2FST47Rx0VCov$uzjc&fhn=Q16%J7eLg;;}s zyO=n4OT_m3lNTGCp#^y(y>|ZqrmGLqwymx9emJnh!`bdB7P-exrHMy~7T^}X=pYO8 zxxYSq@SSdLEx{-xEwIhbMv6{eL#-z03jHEi<^laJt#OK^<;BMQS9xu3f5j@hlNlp+ z54&oexm#=s~C&RudiB(8I`b?ojVH!0k+l(UjG0aoM?0a zxC@;ws8xpKo{*S`1UYY8kGA&aeK9-Ydwt0&UU}?K8ZS2PE_568`pNS3IEJqV&g&}k zh4{UL-kuI$y9Ax|gU@g+{y3x7<>fW&R`@JqZoESJntznH%inDLZlTOuo+6~RhPtKH zyWvOk%z8LS-r7zg>JEpoGpObdSpExPIWZccGD-TU;54qlf4hj69pa;0?A?KRoZJ3H zu3q;~A#u;{`>=R<;c>i2YS!l$(x9h$f1K=k5ZZUO&z>!`M^^NUxAsk{d8faM6f~({ z+EzTYkHvql7g|GLtF=dg^M47oQ3JSGx7G1l`(FIb@n@oS^53U2saAaCorCZ~Ny+|J zq5lA+{52c?SbZ?GVD+RaK6OYw6MvsGYh1Y;@7B&Jf$_P;7#=e3mv)=h@AxgJ2qTfxOCNGe&yABBM@ywYfln+G4m-^u zN=gl!IuTbTr|B87vF}rVvq!I){4my_+}o$We`@bbJ3Y!#P}tQOvt?UJH@G{U zX8iFHDGhP+e(BsDJ^GeR#_lK zupG$i`C>W5kEz7AKmG|SN=cL(Msm@@q3VK^`ZGJbP_#S_59Kvp0eze|Ta=%Rq31=HvO@G#P%Y;npPqYisy51Pb=xQ#lGw+lg{q6 zvlCzs-LTbj?`?#gn=rSr5!SirFHV|qy1}>B7q`R=71^)6m`W|1&W%}69`&*|@t|Mg zq0_HS5&E=+2UFAEsYNhr-6M5u;y^94z}w@BH)g-0JD-xWF5iTUVdriw~;t{ zPXW}HgaGacdcfu_(|h^p{{Rt$AE9z~lWN!QT)E~FdGj|NKYm!2!@1*2`Mrvs5mp#3oWka`%`g4a(UdU{)Ybm z1;0EiP%g&~n-w32yXBZYCjH2BSxF9aK4AP*ug8DK8FthI$Ve@!^hUuva?uS&zok(~ zA4s3*gZhR40DnArqiM8~L+AY~+Pe;K1ZUBA=0)mKK7~Cjl%1`9M|<0Tc+D!je$}{8 z3&#=kQ%g4|=oYQFLz{coI&I7C!gRy}4?|RiKpc~;)S{MZv5-emWS{RY{{X8N>K-j> zs@4tg?zGUST~ZG%j<5J{hm!LTeu9`X#pkH08Iyq0fz!HgZ~c+PL--EWD$a04C;tGN z_=^vX{{Utif7I{Pm2kKrB(MN{fwj*2?ac4_;7Mx-bS4!R063$*LO)9yfjmZRX>(va53k{Hn;(UM z`|)zZxy)JCGpmUl4sW?cdcrL+Y5-ql6r0;(cK-l(7dm1CLZ!|H&Yk<{rI%y=#Qa|E zlbULDP8%;T(dk)!ENAQar!_rPjYX%(n<3`uw8l*)nKDG$yqM6c&al&L_a!u!yXToJ zWh#!xHja}5itl5cD}!B>ThVUzyT7SfwqIkbc9yBJvCM`Y?9YAd(Ukci-7Q^0_Dt-z zo%=6#X3hK<%~g6HZ_F8bv6%A(26Q+|OeX17=y2;0Au~y>NO2BKZo5v*PP$a%4Y?XZ zloZO=wXe?GU5iDFVsEKsIggYse~Z1F+r@f!V{k8tXlXF>IFl*LGTzS9&fOFM?77)a zy~WDrWO*u+PNhcqzL5JhNYl*9q(+0VW{2OUszhWq`>eR)m{b4V+4*H*XH@Yirb@qC9eq4LaN7pOH}n#qP)}cp+JgbG_;4p z9z{AEG2$|(9FZwW?ptlO846HJ?1Zx@%4yvZmG0!je5WdG`$*GK$wf^1fxFBD^*O6w zU7|ioT$@yhRE5=Wp?~xlO zBT-25=2T`4J}!UlR;(tfj=Pf;7;KFW=VlD_yz5q3pXB40!`KW$%e+s@bonr9EYxF6 zr`0B=xe3PFNT+ud8k%RlOAy*&v>5SHjXID!(x%et5q{TB`7I+KHdExg_-}Hw8f~1y zrDGip2?fEvAW@G!_BP`+DNB;7oeMV1t<);DIdzFum+O_vyy?x!Tg#s@P1)z(6CO&| zv@xtHNhz|h>;1A+k?OIRtimhlQ;hADeYY zF5aD#rRD}C%U*4w$ZY%6=vhfLb-GMfR_hV#aN#^c*7Ed}_j=M9TF~M<;~Ny(%szZN zz0PEz&hkNj>a$jxvAau4Q-jl&K={MUnloFR*E^#AisEmy)<&O{II&%!!cA5wT>7hP z`V!Bzt+(4HX^-4T4loP04rsQLlqovUyX(6#S|p=js2llP>2xQU%sjag#k-p_*ZynG z6RFvb6H{bADTJyk^)#W>1-z2-OosF<6qgH4k!6w!z2w^())j>^qK0WBXbvFT>R6UP zw5_JascEKtn#%`$r!~uN+#c<7*w2A{Hiuf9!3Q|8#Rl6%>SGdUlm@c2cP6aU--A(+ zRFsF6I7IK>4aSK*q=`v&G8;P5v0&i7^Uyq3G%uk6}d8XO)v zsK50j7Vg9|KU+6}E%Lm|PVkH6F5(V(t3OHLPhs4JQZ2!G(uKPQQt1y%Q!-hN?J%j3 zUha@$)E(6sEbDU7i*G2$bfk7J8c9f(7Gq_*cUheE=5_7SyU=+0DFGfQxU8wNZwEVow1|4C%!vUh2geIg@qDzqK zzujDRjxsKToITs579*r@EGylq5l^ z)8jI;5?Pn+@@fgL zEecemu~1}7Zd`Q2M2YHpOHe0NP@ONq-AzW#)W=DVNNORG`=?ipS(nH2tk=Sx8vUZ9 zlM~sgxf!Uy&NqXc=ARcQqI%S#;{HpGzzop~H3eokH0e~D#7vsZ3bXIgo`GBTmQx~u zQ;R?5wFFLuPlYYmkG#kcV@-zKL@AZy&~I)Lg_?b-p^>rE%pA@ZH}Y-dyCb@Kmz?P< zF^#6DtJyl%7gbaFcgoz^vh%lwkLpTUdp@*y*PQa~x%@^>Xr;9p6Emv0Ziz{SmZJx# z@YtV4qcZI0Y5YMI2C7miuf0%-CZjS8n#-)Zlv3kFZ-DK+Ml+4nLrV*$g6B4H9NvE( zcRQMmwYv+4Y|hKlj6!&+=8^XeXy43O{{Tg)hnYA-opaY{jLF3wDon}MDm5Bvj}3TN zOp{Y~larjACM?XwQT7SF`!KT<&zR^nDU%1ZOQ^rRhgw8fnx~ntyF-p`8*xlhb{sx3 z93ykwdUepL@;?tPR8lTCSA8?-jq)}x@q@OW~E zh|g29=KHgGK7Uzx{-#>|Y3`OeUsU;y^PilxuJT)>kKCS;b38>##v;?n#*up zREOV%-Z|g4>oOb=UQI-$ZRl8fIwb`l7SNZJ#!Ny9Gd4FDJH_&Tl3J5zs-d*iOcr*& zH{~sAM`a6gLLE|FQrusA870Qw5sOJN3!Ue)wj@64yO7?M0*xtJke=zrmk&{SU8fan zr(>gp0cN(rE*O#>l?kQPB2#HG30+Os8dHXp#92mQt3zQ4yysbu6TB#GmG|vOb)xes zU()s|WPz_G`Es{5Z&&=HRW_D!6)bGMM9ynQ?~LbJ2IOQaK69z@GqtX4hfb#D{F??x z4>(hnrNV_Gu@^BjPmL;xHf2TS$W+IfnVD*pX>R*lr4!~!ZKbWa*H(Kj7d|tHI~J}S zq)?o&-tIe^^Lj6vcbnyCw3=*kJ)fbb*=!^qhgS>C_HMTC-Lba!i}fKlY)tW(^4DPe zu|~*e*3aDO7i6HvKeHr$=Bs8*V~oC2Ft;C{k7t^iKCU&iof*j*_$BmC`yvmBqt0 zX5UV2){Ehz1B#N6Vo)?kD;_NNZl0HOhpM1%W6RO_0rHJk^2Ir!MxspOEEzDVut#+b zoVUcr;Z@_)W3bR|4aAK^&P$G3KnQIOt)zGW)mFyoh7-2zX!#bo`?)=4_IRsFz-wgM zZw3$L-|&Y=8=Jqq;(1%&dYHU!j@aWCbe_X)wI47{rRIp~Y>Ni-MFN*!Q=24db#GK$ zTb%xp!{T2xW!?~}g*Mk>Z4C`;op9FrMarkMQkUR#qd9PlW!Ke18QUk zTVev1)(QK~&Bsm9X1#9p&R@>2pOuw-SRi(Qjs$-QjX7FRTCXnKz8CcM_mpk++w;Jw zwpUw*zT{GGZ!(klX_T#o$xl@iakwC-pWTX-+P_Yui=BN31o(0zeb%4{z*tlr;lG<-XN>{Lpok(m!JJH*=m092%o zR<(xspYc7u|F7TaF_fA0bJY;h4?_@8>cVRktk=I{5XqS6C=wOm}>T=EIO zE?eSWn#ioh2%YKZ?r&sfmc7Bv8o}ukZw=m+q9`WV-^u(0EGIX+QOV2%u zL2#S@0NxB(fD7>l+1`#{elsnjKl*o{TlQK81TQ2&=(cl^k$QW4jmRL|pMf~Q@vSE! z`~|-iv*9D;8|Nz@DRV+!jCB*8Y?9^I8JjS93Joye=V(AY7*nbsRe>kG1N=ffpwx1KI z{B-luJuuFriR?dsNuG0ks#)dcbwz5)z0vwRb5)NokKc%yi6r$WF`H%UD)mu?0mu&) z=X1ytet)6{8-sCi(xs^h4sEy;g2I-UJg%!>aCY05m+Zk`z;>y)OOFtrG{>w3?tDcz z-0~xzp7@KIw*>SldUs{9B-_7!e$? zi&BnKrH~Q@$0O;4FRi^Ld!&#!an|3dAUKc>wzxL+>0$U_?XVgtR$AI|@Ao7*>9cFt z6J=X((fXr*h8;o9Z)!qDfY~g9ImHLNbIVVM?>qh2v(Ov36-mZfV&Vi4PiO2)Bw)lf6+}x>6X8Yqk3YBd3?S}t zM3JNr6PlVXw4Wny_pkY!cf|JllR0^ZvB=+*2humSylrzl_uBqkut_*Ox89*9=Xdid zW0DbW=V5T@)#OKnU*m{MuN5*aId9gaMJ)%oPluwqdYk?jjej_!{{YnQ)P@{EXqfK* z0MdC|p(Q^J@T4bR{V7ENGpk?9PlJ(Axd3uV+wVAgo!T2{mW!je_Cv;-JKKJD+S~j- z0}06M6Q>mR#@5TPT1cuQ?K@$61mDZgYXgaFJ>b2%b$$x3jf=-6y1nQ{R!@yXdj+U( z%x*{BYvVzn<}2=D#!1vg`J^AzIbl>+ za6O4y7`l_S{{X}R`tf0*=d;!ysa3HtXj}(<-9A;ZiFAV*Q(0c~&{X`=EH|bWW>AQ*E-yQz| zMMLq&nKqy2rS-kb+j|V)*dupaUHOrYk^p5V%?TF$5&^xAGdiyywQiVk`6%t=rhacl zqqqm?xPCWJo&7MCIkE5NQWYOEeN*mHKQyEl&!z4C_R*0+BCby=;xN4ux|Acql9JGGO4=H9tH#fMw-7`9a4h$`#5F4oPN=h4VUYDCd2+Jjy$t=wH5cH!ly}En04BN zD|I3vVq}v2S+2cF} zdR7PR3=qLBK0f;9xN0QKcfQ{C@||2i;D2m>EmZPOR^mSh^AuWkY|L~Te2ncPmRW9} zMXxTN(j+Y)r4-q!OWoQ~^XKUjh9tJusQ%MUt!@j3NuGwIAa?gB-$!@!l#8*sXQ8O& z3mZFHZ_UhX-fHe^uM>eUGIPuCY)|kDsoWhDs@ZNvPwuHunJZ6PBaai zfy}09JZwJ&X2fQ+f-ny5WvKkmliZ!eDpV=*oQo2zQm4U_Dm+9wrW<-#Y3I=ya#~C7 zrL`$x9qUO}n<>VJjXPEqiZ+u6oW|VFj5*)Z-r;%sXts6Ln@3FP-)2l(`Ol=feC&(z zBJiV%+&0Sj-kYE5l~Fe`icMw4a>QBi*=kh^D|vo3ITLdN+LZj9%`ugPI@;YyrX?j2 z8+|e(Wca?-;#E_;GFL;J$#!0!qxO1L^9`h=z+@526KbLj&AiswX5Hz{&C0ho*$1$v z2)iOv9L=)d22k?Dv)L6+7&%KEMkby&vj(8NpUVAo+Q+qs8ZizWkNhxl9r-NTgYk0 znbsS2*Z%LQ#-9{Tk@VrN8s_n{Hz?g}dV5q|CdX6YZZo!?7e+>`sqViMUcj)1VstN>x~aEm%YI8ajhu+BmR$YB=!9LkMx-8TTE$ zb8cHNM>PZZ>&0HtJ)Cnieg{{0fuD0`N8#3HMIS8jN|QuyEy$~;t(IstNrEj=Ql6Ue z_8L_M4>bL9Y;O97ol)9LO+;!79BwNFPQv5GB>1v7=3w9U?&okE=X5zv?Ch8gQ-&_= zA{eonwq-A1V9jSWpt-qy5%n#Y_9)|T3^OiSmzDCD6JO!n#qj@wV;zx<&AQyVi01C*w~U{hDw)OH_nIe| zTw{e*%i&9MNXvO!EvBTZa-DKAsYrOSB|Z6Z`2iAKp6cPuNYyejoO(Q|`WbeHwxmWj zsz^g^x*Y!iE76r#c7}^$usk#w_7)14+ebZ&7I$9sK9+A{A?3;rWTs|nwIej<+})U| z?K>8Y4ix%?lT4EaBcMoq+C(X6rN~o~8A(>3plwXO-ISx*eVWTpgkthn5m}2(R?ken z*2?E_FLJ8X<5(ORLtTa76!b1|bDxonzHQ!+z*ND?`8qWsmb#;`&>8RL`zoGk3QV`u zx75@*DvtOuoLf=cSnd+xCPG#k)Z3_MLZ!o_rKSXLI^H*bKLv$i`$JPcAR!LQ9C^97 ze=2d&>B%^GM-Nq=(B+?Mq;y6ZE_@L+|x0L z!@7QYqNYc9< zKGqoui^XbBWdoNf*@K7lyrR=Nf=tHSrMjB^dUIKloa`uRhQDJ}Y^5HBH7+>gz2mu% zz2H}5&duoc zA+G~!*)xM&QHx%uSDbE&iS5YtN^=Q<8)4aT*BCq+aZS0Yw=M!wfZ1T_0^w%B$fj$o6}O48}C&UU-OkM}DdDK=1lE_UDH4sL?m6$Z2I4<^fQ zqQfYJ$*5(V&YAYTVzQz)TY(1hLp0EAjt-L?2tTtGHDgMZ44;GVR@ zuz1}B=YEW3cWzgsKOZDE?-uLvn@TN3rR2&3g(^z#CW(?V{XSrEecE-pnUUlnM%$^i zV-xU}?E70-FRKH8F-YvK{w0Ki&Lsxw2l+bhw!ojfbGJT26^dUOO23HgL2CKCirz*gK+^Nf}A>cg9c@xn_+`4arRd9D_?2GSGn<=?=Tin}M)&s4t zd*Z1-Jh!NSKZ0uGYacoyxTSX+fqQ~|Y)Wr29%f@^oZstQ_5T1?FaH1* z97f>hY0!>&gI<*lxRCXh?ax^UZoVUZ@6T*naIPn{L)NzW^-zyB$N~2SxrJYG%Ii0` zP0Dej;cm>vyU*`bde#u~-h{wQp-zh%fJOYl-*fkmzZ0!>!6%4GQ?||lJ}748Bg}K( zp0U5&aTi=}(ngk7Oe=`&AA)@>T>{qkEPZZv#SXXUUD`hdaHltozHxPCoBnWsIb9>} zRlk3ZBIM%k&vIQ$t`!@+&-K-(>}fW?+J78IRNE=?tZbW9G-S{%hU9^&3tdi?edT9; zu@vqnwMI$Mva^D331ZyOpY%_L{{Uy>g2wB+R916>*1s51ZuaMtq0{sdFX^~AxMBSs z&%q&7F2H?d2rD3oPFS0B1MMQ%yHJg6RdS=8-o(+KNNvsjsTMtVJon#hTPQ#z4_Q@f zes)h{7fo3bRCoSz#@>4OIFO%6%STdYN%N{h@R0uiFK2sM=wx*lFCX9S#$&WX@XOfm zxvN6J^_D+J`K7XL$FEBbT~>cDdh4 z{djGMIG403nR%y9`X~>?mI74%!~EfCwYuFzY)7UvY$TtPJvR5Mt|rg{9Bx!lsJEs^ z-fn&%+n(I-@KqO!9@J3DAa~5B=Kbq-`@p})4JYaLq|Z6N)iH9rW7!%ez-hIB z+_?GES_W&etwu|o!x3$nD9J1l+05^I&HUz{B3jP z(*U@UW5rCsO@+#I(^ONWUu)d$ZA!SfKV`7SPK7Z~#C8wBr+apByI32isMz?3Jx``0 zrEP|s6_$o_!rLa@RwxA6TISatTU5IdgQY$d6X(CZ>-b?LQZIXp**IV{Lec_NVn;O# z^SJaU0{(Q$Yun6?Sy4Yq(Bw6?cJW+=bNq0OuF#HvpydSd;?*rOIu&MaO@o5`_T3i! z{V@?!ue10~Wav^ll--z3)UHO>gCID2To`9VcKyA&W85>2yV)G?|%@ry>0km7xRjKc(=FQQe9m?MB%ab zP@T5-h!;)#h9xlaM2+)*3a^Zhl9x?vgOy~G;_f*qf3Eu`*8pQh!;a|Jp=DL=B0@)6 zY%KsOR=-hii9E0H#i~AIdlWPDE?9vl#j(FD_2fM;bes4N)U63WNRjdTtOfr3Sup-{ zdw+FU#IhWGlZ`z|l`TqhT*E@>SB zWSE`#XWOmcQXx2-#shokCx0#d-?08Tb3e^Lv)-cUO{Z_HhZUsV%Mr{Z-2VVr?_36wNMnLa5UgF&?^?B`Xzm7b~wBR;rIJr{9?wNRb)8;-2QRQZw!~!I4`BRM9afIFLY9=D^Av6VsTK#- z09$`tM}O4%UgcM;8?W9as*zD(>jX#OZGMvjI>w>qii&BuJ2ahj37&|dcG1*vt5eUr34tE|r)0*7hw6t#n`)yUR z+hIXc=e4vmJQxZ{Kjz@Mslp1Ofh257McguAydn#&SsgIMDx*rvLyKX8eaSSSh5~MA6!#OAJ zkm0_7u}P0BQxa-(q=sVJsR@m87KZ0I$!|(p zYCKtzU3x?%$x>oyD_cd0L0H(tvchvWGj84A%l`n1gu-IvsU>W#8^iild?4&c!>-0u zry_8hBUZDXUYjzJnCfhC8K!e6sMcu_YA|5eGUY;!m_ET>X_qq-ZN06&`W;za@^mdM z%d=Nw(pS#fx#sy+jG0F3MUC>?t2gxMm7s!}q8TY;afPlWmt(TKUUx;mr98O13$tGq zE4f!WadWeEcE4E4)LCOK*4oT`OUZI0!IvtjP2S{+M2ne zV;fA^<7QCZ$8-k>_oFFw{fm4rI zMINf;<`F)zKz-VkLn~KkHDzMtf!^G92m;Ca+5cK zdrtQ?ZFZk2F+OpQ<5AGVF;LqH9th5~T0>|d)i|9>3wKDl=B;Cq#O!juIE-S}wpBx# z0XU7%ZQSD5EoFAYsHR0GsTH*ZA=SZlQrLNwn_7p6$aG*nCEpDtkqy9g|iu6yR7>+Ge3^buOvZ zcdOFtWx|4#mA!o_3rcaaP~q=}lAPo=b4TSxsjP}wrONTkw=&m`c8~LdVn24&q_W5s z2~bKwT9Vs@gMSKz!M*Q`E)HY@R!Da*>Z+DK1a&Qjs2`Svt>*s#YUn5AhvV-VvTX(z z@m=qo=xo;}uA@$pUvSl5fdZD{hNpytr8N*?Q$vjf_kuD+v@Sb{Le-G%y{Rk9;bv0N zy5Cs3>T3$4rmw>t6uYv`-fO&N(&TQ}ygkghdFYw)1U!YAW0Xf%&O&`L)l@!n zipfj)Vy{_*>vCJBNRZK5WU+A}3o{x$%ym~_#mtN?kOrT>`jlI?YOXqm8aju`9sFV) z?ocO-HNMZvX;T}{v{&iONvucqOtDg;LVfi@e@ii9RUf3pax5^@&o>zjIW2(NLe@}R zEnx_&WHUXjCBprx;Y`eK7@G-&t!qPdb9~;vxodvE#QqdgUUnR5bSfZ6vO0$9IlZcy zU2>Zx>V-MaVG>_%qPVJkyr`J?1X>B;}LEE5U0T=D51qd~5i@MdMWU za?(v3q;6+0hLM-a-RbZ65tZ7bg7loX8kZZ1^hxV{(dm_9njD(5G}XO6H7=b`p-HUe z%7d9#+2**|ikPkl%*kh5W?G*ya$|Zk0NY$LDtPId@C&_Ry_LRJU&VQIYP=oeH5C%o z@^72f9)CqeuHQYNICQ?wl*%^`vkp<>mSN5nEWple$@F^4b8T7-x`UyA$4vQK$<@zm zs83>?-3f>ZoR~rESfvi&NEarOG5Ggq_vzh5dwlcifRq7QoWeP-8y(R>z!zrV9rhLxJy`j@}Z6hUi zddj(PGSKQz%%78Iw^C%}%GEAIP-vAZ!&6vHdSxQ9^L&O-{{YVmhCQA@X|<|GxbExL z7q4t?$k4+zJwd3FmD!oA9va?vm2Pj+Sf1W(o*_{~RZ7YTYZ~S~xeFbehgN^mw+F-8 zbb8cyvM0MyojIuA$=|3;j@;QxP*-&78D=9*JhIDA1?gp*nMf)@b!c8aaf4y8$4wN5 zQB-_a-!|@EZk~1X<83j#MxLssI3YBwaLnde!MDxOJYCd8sTLB)vZ1*FxlX1-OkK#O zFi_(TAuChA&KH#(DrwD?rOP&=os{mmz%aBNxqJ8j01B(9E-gYQwl?H+wx^QJH(q(NohV_&M_Wn@ODe;&8(ao$(A|A+ zGOSiH)w07)4c!}^zv`f_ZsNT=BFM^hO5znRtDf^j45tzk0yDE4gtSkuX4=eHPe&6|k`?R;KD{}p7>W7262=JYl!s+QdIj{!NMQp~cl|4{<0-Q)J3=T~3t$00^iN`_~&m zC1ox$>xeo+3(D~7xL)&(Q?|OFWa=CbDAMf3zLzKe043%vo~eElS+`V~o5;vZ+6eXh z;Wx9beXP-+v(92=O|6RNbj^pS+88wj*gsEfy9RPF^l8!ugO}FzoBU z^rrs+()X`?Pg0BJzXU~zKyZlz`pMqFawh&E_I=oKI0d!~wo0@!xB7 zJo;j#QrxdP@gJ!*e-Y~-rnaS>I_cVYYrMt_pjknvDA|y7w`fj3R=t?=gH-^5ZHQRg`mu1sj;$8dWk}SEvfU&0PXS#hS=#ou{H!*`u7$vsi)wQ!m2b{T)uI*7K}4lq#?BM9 z`3DI(J&vJXMY&2rf}>0 z!K3{yT`WMi+s__-#>f(od-Imhg#5_!pY2LH*biiTqO_;fiq@ zAay00v~i?!Ad)OOayQ#grW)LyChAg`h#e#N{gV;c=e#>|BzwMOTl2w7fa0d&)Nx9X zn$u&svWG)sZ!mnXhH@WEMLkXl4JA4vt6%`R+@zIl*Ut9e3}vxtwxLVFK(&W{Dw)h{ zMfvrx-;g}98zX=mI#s_4o1-^EVNZ=^l#oX1BL1ZExWa95CBSf3N_Q6l=CWzj5&{%0 zZvx1-TVd=Z=FfxeK!9999eMk1A)w{Sg0Yc7U){)q5H$) zKjS#s>$rP;>&Q51(SxZHq5rWR3hvhCdqBIn`!HB{6h!6mbbM% zYj2yR6^$vq?{l!Y>tHo{VR+9plpZ;t1&GUMStrHye7D1dkpPPn=!VeJo1|PMT>Xi@ z3jS$Cw{NBlh}z*z1dhtP**5 zuWb{8DF!Q?mq z6p*DL_Xq@9;NJE-l@noXMmUX1P;WO;q8)JslkCob3Gv(TBW=Au3>qRsx45G%eCK2k z`n)7qsPrIvqhdOK+&s;@nK*fP5o_) zOeXPyprtMj)1_ksi|jZ1aN^ACJ^hIb*dC;-4FN7ARr-QHt;jpy6Zm$Hj2UFSvI{XX;sYH0!qf06(P}C?IK1U6J<`6N}X!4{z?Wj7*a& z^7Xk9)<2T$KBwxp?8CW!Y5j#n(7WZ^ewR1&q0ML>@Sc`Q{{VQ5W;;>;0JoR0er4z# zgZcPf)0y9tuPDe-aXL~jYxL+vfY@6eW!i@kG^41G!FzLIUIjcvohd6mr=(^qT+mbETa8&w7=_|;3pV^KQ2NfMs zNFv?zM{J1EE=3?6%D=O+_P0&(A3KHIdejwLvbyC_2&Noiel+p zBx6Hzv0Lgm~!RFS@wOcKP z;BK3g#ITmc*R<}tBN>wUvbCpD-fOch-0<&&6e+Rm)kZQMA0fz;>kh@K(nJ}VpEtU; zoDaP&V~@!+Xl%)e4c#GVF0D+Lk9gWKmO%p^$sZuf8XIDCzvWkI%tBfkrbNl}MQ!gH z0XT`4^1LaK=+f%6>KXaU3Tkx8Y|LrIFx=*(t+~)@F0Bu=5QjUK0#~I;TG8}EM|{PP zhBg*F?_JxyJ}S3ht*U$_)by^CS7moMHiODdS@L^4<$8Tl?8TdM{dwrihb<6fA=6HN zGBCnl-o!yA>iWP(u_${R8T`3WObb8^nEVEk0ln+)=KDOjnKAF z8*yuQv>$J-9#fjEQn*7VG@8XZ`B7hbgGZH54tQz_OKGfBW6hIMSeWx2&=VB3D$4GA zz_*gxw!h(EMGSkl?foHKuq~1_p_LenuakGicdOLws4v+MvL_gOcxQESJBku3v`!0C zs}tO*R$nop)N_qmGpT)aoU`7){IS+&C6vmnui6mXu;giRbC8n_%^n?QHS;qwox`)r zT-vRu!?0MPr^DuN!kpK)DBg2;ZvJJ}?+>z0SmC}+Yb|9uT{eS4q*7y3DKwf>L7IF@ zWC*BbxY5vFUWlk=E$G*!#UpYX!j^=I&PR@?+wKs{ttC=axFMMhDJ{FGr%KbMU@6rhT8i-*h63zW zfDFxP%(UD(A@B}Rjoha%YS2e&zR!@j$&=>CiiTlV=?R$jUYr*DMTe(3AH9zu$0UTh ziDDZm@$A`U3-Bpe^z0N-)nQbI2=hshU+k=!OirSU8>@8B%LZp<`%YZl*W*^G)d_Tp zyhm7i9EC-b5ot=CY1Y)VDYrravaFjBs~^(CCc(%&!tu$;)!%hXO;~D%cuy$ZOspTx)PM}0^dnl?(eTa@CI^uh6Mw8u3c5r>C6D6l(u;W&BCAReqD@E~@?d=Pk z{#>)g8vP|`z}-(YZlyBik=l=<+xwSXIUguw&OUJBnM}^qsMV;@>CCexRHocTP9vsU znw)A|(_9pIYH7%E*^XN!NmQ2F)VF)rvSJHK848koveC_Wq|6$je;htbdIo2S9;L$> zHRyAkW>J?K4BFH-W>cL*4m8ZFRerSM>Tpn_Ax#*{Yq<{(+l4wphuu)`c+uUt7V$9Y7}@CD9M`ibgh?Qp_gFFQ>>}T^Pw{) zJIJx|J0(5FpR;AQWR>O7##_bBcRR(^s<(>#FhMb;aB*&J1DfsBb;$X8Z9WB0E>+~O zFl9QVCg`p=P+~m5{0gi|H08?nl(@|3^U)z~l?`k-mB+edhmzXd_0Gl7$x}oiEfYfA zybkdE9rjm_Hu|tdT52g{Fx0dXSnb``{y-R8rdV%hMu8dPF!( z!it9}6KhCk+NzVIdmE0sE}#)5)+Hs)a#qB*)3|KplHtsK6U(_G>#@gO+@M9 z`kEYJuC0PLws_l;Mh!L1n*Jzv8*Zapl?UoJTh0exXo#S;3oZmhUv=Clwr$=71$eGf z3u8ixbgL6JZZ0P-pcbs-3a9ubB${P@_MCiV<)y$6w&O@_wEEGa>?2y1ls4n3X%UM+ z28l~3Qi2Y&IHadzd?gJ%j_~M6;<$jPU=Ds)U&-`+REM5JZYnGYZfaa~Ozs_fxlxqr zpKH8HapT>(1L%U{19u7TQa#1!DoGQ}k+F@;*AaBK8&K%re9svk?rWB?J7LnZEjKst z6*QSny;92avn%tUw>6U@k0w=TC&F8@AjU}wYNTP(+e({Kn^}UL4B0DjUV8rkP_JwU z1*d_=?hLzqEa#h>se0G_F+P^641Ri!V~fChw?W)yi%CBy)JG}(toW3~mK$P1A@K1k z33aj@L!2wf?w8lyI6{=`Z?e5Y;N00<@#nm1FehwheoU;pet^+?FTw3Y=fEL+(r&fV zeL`oozokZA8@uflXpvL`TUUCr;CV<>N^PY$+S09GMSThdds!+!Y%^jJ%?n;Kmmlt0 z9Fv|&(Vf<~TK|Qynu997*#pvOFV^t$! z%a^InyMD`*C#NY1*`QF8QijuWs5BCkAQdQ*NJJ-uLFU^y|puK*LLb2Kp+EKn3T{hiqyO3lcnC zIqWU@;>HObE0GM>u|*uVrFc#Lt@rXPA9lwP^~UVCQn6w8%FFYSAd*=Z>XJ53m393p5C{?*9z`bH{;;+28z8$<>RNE2Ur!##e(^)$^hy2x%tO`a z*AF+mBq}+Fu=|$9vK76CKbQ*X(7Kb)%Mfxo+Vtw8oxNJLcuO}s8}jA3^BW5c z2#))_>#PssF973}ubvSnMBDmI*|G`+sn(Hy!^Kqw9x=dZ|7AiuyaY~%7oP`dqV#J=@bUuY9I_r z&GSz6PvTQbPo6&CdOh%+R;V;?E?OO*!MY5HGvIAe#Aouu$m(+$@i zg#x&abuLBs`e#7>6S>BdgdNz&O}}+i#We&DgLM=tLh^nqUA+JRkN0tSgx$V%P?q=A z5pqEKb_hCtm9PQx1vlUA!+H8oU+$7OxVH|KH}XqiQDckV&8pV8J6`+s#4P8YQQ6K3 z*;I^syIR}a4?87Wi=DSPX8w;UOH=97sQwcX*xyQT`bYG+^5i{8`|yD;=xvn5M&J;# z*cwW{wLvv!ol2h3i*f33kLS6 ze^F}5S+?3%cHG$C52>zmbzMnF0cgv|zZ4hE%-yGKcOu`3zvYV_9zY-xs~D?yO~$rb z+o1c&_#^%`V{oqF?f0)8VZJIQMZVsETdyST_>4jHj>GO&$gb9on*`u#M5p3O`>a1+ zI-f)1_A3&7;p&tB0FMj9#CD&-75WfXBYycEcRax46ZiiBh8(2RvJl$-fc!0MlZ52x zL1jqV*SWe)ljXSkuf7C*DF<;qs|mB?>)|&y@;`12=H~4PnYXg11XXHEbnWGTE${Id zMZCRJ(Nf{ppjM00b!~NN3DiQ*XIMg}lj1hH@mp2; z={*vEd*L~LbbAxw%^jsC)zS108*FSpM%#i%P7Rfp6=AvP~4v~e*=qTJi*#kc3ye!(pE6N#k|MvaJxCdCU0-T z>1GkTi9TlE4T!(viv?~L1Gv4tPCU)E zL*-xEKMSvH>>wWnfb``*nHuRWA7&c?WFyyYHn#p)$}3L$hgtj<`Gt>?k6#ofMssUS zWsYFB^{st@N#}&=PWPNCY1#y2fyG1o+?z-y{&qX=H7n1{^}ZE?3}e*Sb%eIG_V zt$w{MM_e>raLs=@vk5nSJ6%OW*GcPrkK2Mi*5Rp9)hxBIpi&DUGJDw9wSiIk-ANp_ z7yL01P~y@@Qm@unTzN`c(&7UFvCMZUxV694r_R`n4*5bAcCEK4*k8%##Tw5Gdrk1;=Gbl2Y5Yd1!r?w+ zrY#Jqa;aJ3t4D;?$nu`Dpgj_?7KbfMXr*p5Om;CPx86gPPY76S75EK9pU;f7&Em9g z1z5!RPSZeQew9rzI1ePfzn4YXgpMz@MokkdLxDE0m@9@QI+0AJ23>wj>OoSL+FX{| zj{-9~mi(7Hv^3IG>x3Z#Uz01Rdzv7O>h6!hdqCjy^2qAirjAQ{?JQiy*#|9gjybJy zO%Z11S1GE6F}$Cfc$1Ogsg))`L`n6mt6Zl)SyO%M#ZqNLLewN74I#A0(}xYg>Rd#( z%_M_IYt88BOc}M3;iSO~u54|0A2t5~;-Oa;eoCjSk?Kg{Rz=|~3Y^x*&Go(_@rRCC zz4#s2U`Tk~OB}gTD^gNQk1*?3zIibJR&FoY3o)M@ivbw0rGvW?$ z(YxQ&JXKc&K195)8mu!9X*}dOs&6#-3BGRA^J;Pn_#%ZbBOF z#1_;Pm98$dqeSHn&&u4F0nT?hFvh$va`Aj04T;p^{O2{CKC-tzl{j5P;oerFS9Q&i12Ei8`A-=)XN>GrRx(jqqF^q7i{sUF7a9!j5Dirns2rQEAhfbP=U zYBnbQey$@Xm9D%aRVfQ5E@f2B=AVDwkTU}drqLR+V>q@%c1 zib~qW|?oc{nn=2}(xPqIf2 zxPQc4y;r5v8-XV>WyH>yxUtmICA|ivA`F?XUGftp)hrE?kV17GBkfrM{;UtN8t# zC??#BuAS{{+iL0RO)G@^&9isDmWxKh%_~bx5&Wyhhv@3NU+kwX6&frmtBOojO^k%g zd5040nC&wrD2N_QV?>66--;3x>xm0|7rWJHMltDP-*Z6H>BVH3T;k%VT)G&iMq4TG zlKVlX%WO1=&dEa86_D6NAqY$AQDeLbN^}O$ge`3#VWZ)6MbBv0zkhOL9ITYI5QjOx zGtEUZdKTggCn2HdT6FEmi?GZ3!q+5u*r-iA-)THwsdp4~g?f zCS6)Whdfu!4b7y~pu>GpP+~B|nDU)tyM4F_4mQ9*VQ5RP&t=87R5gS$qoKygWeU<4 zzG&Jw-@kw1P4W$h=MCnqL~-JuSA$=fP|Gu7xMEBzG`1X%^K91S#FqFa!4YdE)?ZWX zwuf3_gxxkrc%2#^7lr&FHN2kq7fdQ^;d4zqrz2c+@0l}cbokw+GWg5VEAC`|DN(4h zSmE}2b{uI{8cjwNsP%TT-EnYam)**9ixp;HX(mIB2~13elsgyM_Z1NuASU3gDhai3A%T@G0e~DN;&Q=Cn98Xi}{jk*-Er9^03UD}e_G(<@2Fy(Vi{>qzl1+)ez_g|GkEc+ub z<~}o5GtF*1l;!>jaLTX5&LBd8H$?o)8z52ZoLGsMsZyu7mQh-ksjz8jOpPozJ_^}! zVGV0vojff%J)p-LBpaAqZFXK9$2jyaT6h_Wm=?;?Q#fUtXeV?`K2CPT%buAmWqQ)qDG#)X&i-65w~VOpthD0J#vUuanG-D(ei zCtK@rO7nd~=EQMH8o`=ZJMxUbrF&}(ro;AE0)`ogF;llUI{aK;<7M)coZ#2VyV@7{ z*Ksv%KG@BoY zRMo`kK#h&DyRO|jdJ_uo3EMeKhDz#pnX37WV_MfcK38Sk&FJ|nZd_jC*#7|ScFHt7 znF6;+;r{>-9-!rnh}~*CG3y5)@R}4#zGPi;BGlrdRcri0%sD=;(pYuYnuV8B6~|e1 zZ$?$O!cIDH&6$RRH)VBD$jb(u*s}gNSa!r>9MVcaB_LTAN=VoQjUhf()sHCUEOm==>wozznxq%FlH8@czgFs6ma*I|H|cNh z5JxlX_+m6`h*6^@d|*S)^acx|>LNa70P zMaT(OAD^U?jN2bUu>ymEcjHbNM_&d4?p@Oe%wP>a6S4`GmEusPa-+|iJwHP z?*v}{pSKV)^!EPhE!N#VMJ;B-cuG9M{H&{fSmZ{|TxSE?wadm8Ts%GR44+S^o7(>X z*2TXIecTU4+p12WZdllpJ-nDcZ%{nmTzsvx5S*^G<$vFHKh69q>nr)bcyV$ z`-kG&;vDDkx95!0Xg+FRYSFfQUP#Ah;5x!&ZRQy)$Bm>f--9aS0cia*$_h0kH+7sXJRQWm)8ziSo>~*`%i+!U10NEd} z2+#9QNV|vE_!T*_5)`P>>_zmSh02s|xau(lRBT*~h;=x>L^*w1TwdFhn~qp$90|T# zxk=L=9Yqf$ME{vl*~sc8tSs!jzV|8o$POaB7U*4!$+Mj({(XQ z>w#|lD;dG1W0>i0>wn?HNe$ZD9HCih^#J8r3^{SndmdI!{LS{m83l;zQjt2xv13kP zIGgDQW3|sdWA)*qxRq$br^*QL-@d4GSB_E^0JzYwe8tp2-=4zQbpz~NFVd{x#nFzE zg4wN$wCc2t)6Z*w6}K;3PSHBg4(d>tlWx~_*=r($u}Sl{=Woj!_kJb3#tSCXj3 zaW*H7l6Ie@_#7x5Af>e9?#Yp;N zgV~Tdn_tVR^u$ZXR}hZe*-gEOZJ(ETs~daj2cEZz~<{e6Z~}W~33p3fkFZa@>Q|Z`1C=PvSch@Co1&Wng^+m;Ds&@!Hn&x95pG zJDk^a_x+W77aNlK&{nm&)_N$Ceg{?0_i>})gymqimJ27u+H;d@>Y9oKn|W#{`^WYS zTcJCEUsYU@yY4+4Rgv!~{47EEAJv7LbqAp)?Mb-em0=I0PTcL{<#0Yen4F+-FJZq* ztl~p*Lu+V=bYFSDKz#XL{Rck|FW7smS$>t7V=V=a)1?_`Ug~euAYA#_pUW4jCj!Bj zipsGjo>BH4B@q;~`#B?fp#Hzthcg_}xD5rAMH@h!mg#a})>C&?=dkqWjMr(;$jh#_ zxAlI@eArM#(RJqiD!Ll=nNxTuzo6LKNmz)c_|HaHyo{d^#0AShRIir2bp8Sw|<^L z>K&d|C%*+EK#i0JW~X>BYn3U^>1@Ac6==-|On25$;))Vb zdzJ`oKTg6sqNdbIRr!N!salWLRicV0^EKtUi&a+?vqOto8tYjQR;HSclpzhYP^Gx0 z!cyUNT8c`DU4jABuL21-(vqz@u{;D~GUo=dt?`3${{T{~<(g*$pAQ*BP-=O z4oP^>@?!zXaVJzFNL``SCp!9;`y~imWI=5OA;ql%GYX=ql4##h^4VrL%I_3+`;_L{ zRAJO2TsI0Wc%^5`N$2eTRG{MH^lBY7VR~eHJM6OLMqX|!G7_@NnQm&`4zwUejHTV@2oeyKx}>2x=(1|~+QMyr)9zbN3M4Hd!!T&~g|95FRe_nRxsq!Q zLX8pw&oo}{TSE+?XsEo0BcUoTO<7E31O$7*O{fhzvFmRG7!_78OCfVkSj27~H-2is zJU3&JU~ho52R-HY2k3utiXSPbV%2e2@U&ZS8c{;R^Lp9 z9?6t%m4DjBa+Gi$a_UqYiE7svPnq#pVO%`rmT-gw*Q6w#9OUbCf zc6C|{D*!g*W>Q^KPDe|tPn#>Mqs7DMs^Ael+q!x?-A(d-_3K(TGYY7LM*dnS4;#`B z1Fdw&@?UnrgT(BmmZ^0DkDVby?&@Z#P-)ju+}2rqOnpx+olayY9S79zaLR6sG9b@aN~ zcBZCWQj*$Kbeej?g7m3KX;;ZQ7MMn0;rn>rvZvCDh^LXVuw`l8IVz~Mr zlLgIXbK5Prl*(Iri;l0_okB|VrI#FSwJ$<=uU-71;F*bMQFFLgOk*78NcqlbR| zsxeHR^P}+7G3fIfL+WhEb?K7=7;Un$%ZqjL3q{AAQ$U4iDpC*<0(5R0El9&7Wyo`6 z%a@_s%PZPB}->87TAR5xoCDA zRttbB(A?y$O7Q8%?X#E^43(8FW>H_w>&bqdR-3g zR(};TOxla|e$aUupAH^k$n!*=HN~YOOnSy|$_&ndP-?qcl^nLzx|Ie6Hl_5hMS5I{ zMNz=~p6Z0s9MY<=?7sopY7xlQ(46xyZt{RRrtbUvrH6kuYUb<4S!C6Ao6{Sp|uUc#{T4_TbB-ZWM(Xei*?L%ULq58St zv@yMICz`c&oAYtXJZa4NGPsBpOt)OjoI=Q%y{!v*iu?$2Db%dX8mlD=bW4Hs73IhZ zD*#oO-s(!w7v}s{wmQA3tdd5TK~X0p=J}nOySjNLdjkQXk`0iIcfuWj*Tv4nG_V%C~>1oM0%4?za8gfKQZ9*42daem4@y@ zL)sD(rB3#L!HokknK3gyT3FwlG0X>ak6YZGZLfv8=j`lwbEzHhshHNe;!}2<{!UNS zrhjQZ7*sfunmBd9yt$aC<%(p?l8WCI+N8MjAD%Mu5dwyqJ#ngBh^U(hN`q2#rPl*V z`OyzL($f)=)thK&;%v?28rpgoPG^uCn6a6(`dORyRdZtT7SrLzzOt0!HMIe}n0wCS z-L7$&r-!PwN5O= zkl9pr+>K9D(i(uwh4{z9KGU~pF}E@|d>)RMHb5PAx0}u8@v`;i!|bWRFn(5~^3`>L zuY26x?r!f(xwlP{@37wy4w1x=2L;x`ZWBJgDJp4V;al5ow+GMR_~WgUg^vVt8MV|# z;zg9D^FAlYznO6QZ;LJ#{%>P@{wal902~w%&P^X^aDZ>2N*#aNbMrR?8a5dA*Z^&+ zsMWI0cBpKGE4~-D_B}v4Z|BbzMo2ZV)i!`QxY+5~h?#i{8gI)@?_hqg*m-lreO!jc zper>Hummv>)nL%ydk$mL{XQ6_)|1Mc>EHQQT5e#|D#wL?Xdj{!f&JB6^^8Wiw#TZ; z%bS<5sa3+)Ec+KHb(8D-(gnWUL{>X>-C%!&o7xVTD==gGo3;=41z zC$&dDGSgrzQs!rx3`Kl=$B_o#Y4yP)ecxfCC}BKwTJ_@E^`-DXLPCBQLP^|w58aDy z688P=_aaWqvD$Py@~A;vZAMds6JmqYuC2G}%NN=?EJeIvt2MEcl#Y;?Ra74B&8@Y+ zE?#?L*F`94ZTb~bt|NDo!3n2@drH!6aOvyM#C-bVQb_}uWXhG9WEbj39v3L4Ya5FP zqpH{6XGz>!$m2QM8*)!*H_^*U+34>h0OH$zWwNdxNKk}zU*9Kds;YIRHSXm91#;GwxJ<`$(*u)2odzSytTJlW(Mu88ywAr+^z6v9of$n)EgJ8#SO z;yJP#>!N*5-9hL~2@(F4e1K6^w%l)He_Na=Wntnw{Yp|W4pGpvSd13mE8Caq_~De2 zkZca}n55@ubV)O#Xf_rFBpYwHKk>s{_ir9Qg0xc*SQ2|z3b5(a`T^#A@RPu{y$VH+ z7YCszsj}iU=^U@|+isnIRv10!G2o_Xo^yGMWLBc-OScyAtyZ_ketT_&U^gYlty|%i z?6D{vnxkE(w!enlzovQ)XA|^NY6ntfUIA%2maJ$YR|ee&z0_*!_G8dh{9E6kuNUFI zDkVb~)9^s}d%w38^L*{Hx5dNQ6P<(tl1=^XxBmbGzMK;GBIP__>CUK-(If8j-}YP& z!w(oiXtzQRx!?l8WwWSwZ_@m~et1_qy3$!q^7N;K1o%=pT_bDneYZE|{unAn-0xxc ztjQ=LB<*W`yN`hDd=A8!96?EmN!QlbUiKPql9H6 zGmk=g+u7C^Se0T6E4S!@w_6^9`(i^5dqbMrs2o+6Ywi!+g4K|9s^6rqcwCEvzT=nb z#*c?Q1~8M&AKJ3aPBWeQ8(;gAO-MH?xK;Pt%v#@m__Re(+Y6C(T9z``XbQ2U+SVl8 zd_b}N{@glbk(19Kf<(uqtZnT|&_#+iRlzpe+gN>;uo#=7m^8-h+N$0q0dRQANKg7W z14p}Xn}B^!D{beC&K*$QH-)`ronrLQ%KgKgsw-23 z-=G^GQ?!Y*gBKX!){i!j^JA!Z`z3gl1m2MEYO8mNl9TE~Ks z{62R|;~Rhuv2P)DZF~Cl^Ta({tQC5prQ8PfEX=m3GgnDxce3Y#mNezvM6B>^oXDZcmVP@2B0%2+;X z-1D(oiPekkEkFzc<5fwifx<_$#_zJM(`*!v=w74K*HznW=R-4mhBslq0x|`Bvj(;=iSm_A+Dv`8VOv&*5(?!v@YZ_3#gA0ONj|7MEZjbcR-G@x4VxdL^(GRerd2??W}8@=v{3x1t9XX>V4Ea@{)q|kl;uuZ7M77)|4f(ooZ4X zDo8ijBx%!$dRZ=7(oL0f6JRWP94vk6LeS-V8%dJ$t+qf?on=J@(zNQj2zKipCYjTq zUdjqiqikI0=F1iCv&!gXl0wkj#l=RR(S4#R`2#N0AE(r5(rPGa*x`jfC9>F1mg3rx z6qutz%L)!8$wAVs7fzsY1CL`Z5eS&=_a7Jk04FP!$!vS8YNL`^-;<9IIN`drUD*Bx zRqdPFPd;ZpA=PO$EU&=XnRcNEDmyi~lu4EB-%`vAqspwAOL22(5mS@rJ{V9*lO{9; z$&)fPWwPu>2}aqaeNAC8W!}xfzBf(2*STuDeOErqZ2cY`gg{$WhyvH{J3dg+sLO5R zb+_&+abk^^s_zPYUJz6~y!@t8B({~78&ydy6cFM;NO83r^-@)D5_~c^#v>T2kKm7N zo0)Vs%H@%4_60L(TzO;lrDn?poX9=W9sGqo$f`)Rr4!Q!bMUQI@D{*B!Rj z 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%0DVN-3rCGOvN*-+w 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 literal 0 HcmV?d00001 diff --git a/docs/mrdocs/develop/_images/generator_front.svg b/docs/mrdocs/develop/_images/generator_front.svg new file mode 100644 index 000000000..ae92befb2 --- /dev/null +++ b/docs/mrdocs/develop/_images/generator_front.svg @@ -0,0 +1,1066 @@ + + + + + + + + 2024-11-26T15:12:28.577883 + image/svg+xml + + + Matplotlib v3.9.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mrdocs/develop/commands.html b/docs/mrdocs/develop/commands.html new file mode 100644 index 000000000..16875b108 --- /dev/null +++ b/docs/mrdocs/develop/commands.html @@ -0,0 +1,187 @@ + + + + + + Commands :: MrDocs + + + + + + + + +
+ +
+
+ +

Commands

+
+
+
+

The code should be documented with the Doc Comment format, also informally known as "javadoc" format or Doxygen-style comments.

+
+
+

In its most basic form, these are usually comment blocks between /** and */ placed above a class, function, or field declaration:

+
+
+
+
/** The main information about a person
+
+    This class represents a person with
+    a name and an age. This is the
+    information about a person that
+    we need to store in our system.
+ */
+struct person
+{
+    std::string name;
+    int age;
+}
+
+/** A function to greet a person
+
+    This function takes a person and
+    prints a greeting message.
+
+    @param p The person to greet
+ */
+void greet(person const& p);
+
+
+
+

A common alternative is to use ///, especially for single-line comments:

+
+
+
+
/// A constant representing the number of hours in a day
+static constexpr int hours_in_day = 24;
+
+
+
+

Both the class and the function above have doc comments with a brief sentence and a detailed description. +Most doc comments will contain these two sections, which could also be explicitly marked with @brief and @details commands.

+
+
+

Doc comments can also contain a number of special commands such as @param that are used to document the parameters of a function.

+
+
+
+
+

Style

+
+
+

The following commands can be used to format the text in the doc comments:

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +

Command

Description

@a

Formats the text in italics

@e

Formats the text in italics

@em

Formats the text in italics

@b

Formats the text in bold

@strong

Formats the text in bold

+
+
+ +
+
+ +
+ + diff --git a/docs/mrdocs/develop/config-file.html b/docs/mrdocs/develop/config-file.html new file mode 100644 index 000000000..5688bb72c --- /dev/null +++ b/docs/mrdocs/develop/config-file.html @@ -0,0 +1,1330 @@ + + + + + + The Configuration File :: MrDocs + + + + + + + + +
+ +
+
+ +

The Configuration File

+
+
+
+

MrDocs uses a configuration file to control how the documentation is generated. +The file is used to specify options such as the generator to use, additional compilation options, and filters.

+
+
+

Here’s an example of a configuration file:

+
+
+
+
source-root: ../include
+multipage: false
+generate: adoc
+
+
+
+

The Usage page provides a detailed explanation of what to combine options from the configuration file and the command line.

+
+
+

The Reference section provides a detailed explanation of the options available.

+
+
+

More information about the generators can be found in the Generators page.

+
+
+
+
+

YAML Schema

+
+
+

To get linting and autocompletion in the config file, a schema for the config can be specified. +In JetBrains IDEs, # $schema: <url> can be used to bind a schema to a file. +In editors with plugins based on the YAML language server, # yaml-language-server: $schema=<url> can be used. +The schema for mrdocs.yml is provided here. +The following shows an example of a file specifying an inline-schema that’s compatible with JetBrains IDEs and editors using the YAML language server.

+
+
+
+
# $schema: https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json
+# yaml-language-server: $schema=https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json
+
+source-root: ../include
+multipage: false
+generate: adoc
+
+
+
+
+
+

Build Options

+
+
+

A number of options can be used to specify with which compile options MrDocs should be run.

+
+
+
+
source-root: ..
+compilation-database: ../CMakeLists.txt
+cmake: '-D MRDOCS_BUILD=ON'
+defines: 'MRDOCS_BUILD'
+
+
+
+

The compile options primarily come from the compilation-database file. +When this file is generated from a CMakeLists.txt script, the cmake option can be used to specify additional options to pass to CMake.

+
+
+

Additionally, the defines option can be used to specify preprocessor definitions that should be used when generating the documentation. +These definitions are included in all targets of the compilation database.

+
+
+
+
+

Filters

+
+
+

Symbol Filters

+
+

Not all symbols in a project may be relevant to the documentation. +MrDocs provides a way to filter out symbols based on their names.

+
+
+
+
filters:
+  symbols: (1)
+    exclude: (2)
+    include: (3)
+
+
+
+ + + + + + + + + + + + + +
1Optional symbols key
2Optional exclude key
3Optional include key
+
+
+

Symbol filter patterns are specified using (optionally) qualified names, and may contain wildcards:

+
+
+
+
filters:
+  symbols:
+    exclude:
+      - 'A::B'
+      - 'A::f*'
+
+
+
+

If a symbol matches a pattern in the exclude list, that symbol and its members will not be extracted:

+
+
+
+
filters:
+  symbols:
+    exclude:
+      - 'A'
+
+
+
+
+
// ok, does not match any excluded pattern
+void f0();
+
+namespace A // matches the pattern 'A', will not be extracted
+{
+    // enclosing namespace matches an excluded pattern:
+    // the symbol will not be extracted
+    void f1();
+}
+
+
+
+

The filters.symbols.include key can be used to override the exclude list for specific symbols. +A symbol which matches an included pattern and an excluded pattern will be extracted.

+
+
+

This permits fine-grained control of extraction for individual members of a class or namespace:

+
+
+
+
filters:
+  symbols:
+    exclude:
+      - 'A'
+    include:
+      - 'A::g*'
+
+
+
+
+
namespace A
+{
+    // enclosing namespace matches an excluded pattern, will not be extracted
+    void f0();
+
+    // ok, matches the pattern 'A::g*' which overrides the exclude list
+    void g0();
+}
+
+
+
+

In order for a filter pattern to match a symbol, it must consist of simple identifiers that match the name as written in its declaration: namespace aliases, typedef-names, and decltype specifiers naming the symbol cannot be used.

+
+
+ + + + + +
+ + +Specifying include patterns is only useful when the pattern would match a subset of symbols matched by an exclude pattern. +An include pattern without a subsuming exclude pattern will be ignored. +
+
+
+
+

File Filters

+
+

Symbols can also be filtered based on the files they are declared in. +This can be useful for excluding files that exclusively contain implementation details or test code.

+
+
+
+
input:
+  include:
+      - ../include  (1)
+  file-patterns:
+      - *.hpp       (2)
+
+
+
+ + + + + + + + + +
1A list of directories to include. +Only symbols defined in these files will be extracted.
2A list of file patterns to include. +Only symbols defined in files matching these patterns will be extracted.
+
+
+
+

Private Symbols

+
+

The implementation-detail and see-below options can be used to designate namespaces as implementation detail namespaces.

+
+
+
+
implementation-detail: 'impl'
+see-below: 'see_below'
+
+
+
+

If a namespace is designated as an implementation detail namespace, all symbols within that namespace will be marked as implementation details in the documentation.

+
+
+
+
namespace impl
+{
+    class A {};
+}
+
+/// @brief A foo function
+A foo();
+
+
+
+

The impl namespace is designated as an implementation detail namespace, so all symbols within it will be marked as implementation details in the documentation. +This means the symbol A would not be documented and the function foo could be documented as follows:

+
+
+
+
/* implementation detail */ foo();
+
+
+
+

On the other hand, if a namespace is designated as a see_below namespace, all symbols within that namespace will be marked as "see below" in the documentation.

+
+
+
+
namespace see_below
+{
+    class B {};
+}
+
+
+
+

In the documentation, the symbol B would be marked as "see-below" and could be documented as:

+
+
+
+
class B { /* see below */ };
+
+
+
+
+
+
+

Reference

+
+
+

The following options can be defined both in the configuration file and on the command line, where the command line options always take precedence.

+
+
+

+ +Command Line Options +

+

Options that can only be provided via the command line

+

The following options can be used to control the general behavior of MrDocs and can only be provided via the command line. These include options to specify inputs and the configuration file, which cannot be set on the configuration file itself.

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionDefault
+inputs +
+(list of paths) +

+(Command line only) +
Configuration or compilation database files[]
+config +
+(file path) +

+(Required, Command line only) +
MrDocs configuration file"<cwd>/mrdocs.yml"
+

inputs

+

Configuration or compilation database files

+

The inputs are configuration files or compilation database files that used to generate the documentation. When the input ends with mrdocs.yml, it is interpreted as a configuration file, the file is read and the options are used to generate the documentation as if it was provided to the config option. When the input ends with compilation_database.json or CMakeLists.txt, it is interpreted as a compilation database file, the file is read and the compiler flags are used to generate the documentation as if it was provided to the compilation-database option.

+

+

+
    +
  • Type: list of paths
  • +
  • Command line only
  • +
  • Default value: []
  • +
  • This command is a command line sink. Any command line argument that is not recognized by the parser will be passed to this command.
  • +
+
+

+

config

+

MrDocs configuration file

+

The configuration file is a YAML file that contains the options used to generate the documentation. The configuration file is read and the options are used to generate the documentation. The configuration file can be used to specify the source code, the output directory, the compilation database, the generator, and the filters.

+

+

+
    +
  • Type: file path
  • +
  • Required
  • +
  • Command line only
  • +
  • Default value: "<cwd>/mrdocs.yml"
  • +
  • Relative paths are relative to: "&lt;cwd&gt;"
  • +
+
+

+
+
+

+ +Paths +

+

Paths to the source code and output directories

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionDefault
+source-root +
+(directory path) +
Path to the root directory of the source code"<config-dir>"
+output +
+(path) +
Directory or file for generating output"<config-dir>/reference-output"
+compilation-database +
+(file path) +
Path to the compilation database
+

source-root

+

Path to the root directory of the source code

+

+

+
    +
  • Type: directory path
  • +
  • Default value: "<config-dir>"
  • +
  • Relative paths are relative to: "&lt;config-dir&gt;"
  • +
+
+

+

output

+

Directory or file for generating output

+

Multipage generators expect a directory. Single page generators expect a file or a directory where the file will be created. If the directory does not exist, it will be created.

+

+

+
    +
  • Type: path
  • +
  • Default value: "<config-dir>/reference-output"
  • +
  • Relative paths are relative to: "&lt;config-dir&gt;"
  • +
+
+

+

compilation-database

+

Path to the compilation database

+

Path to the compilation database or a build script to generate it. The compilation database is a JSON file that contains the compiler commands used to build the source code. The compilation database is used to extract the compiler flags and the source files used to build the source code and extract symbols. This option also accepts the path to a build script such as CMakeLists.txt to be used to generate the compilation database. In this case, MrDocs will look for CMake in PATH or in CMAKE_ROOT and run the script to generate the compilation database file.

+

+

+
    +
  • Type: file path
  • +
  • Default value:
  • +
  • Relative paths are relative to: "&lt;config-dir&gt;"
  • +
+
+

+
+
+

+ +Build options +

+

Options for building the source code

+

When MrDocs is responsible to running the build scripts and generating the compilation database, these options are used to build the source code.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionDefault
+cmake +
+(string) +
CMake arguments when generating the compilation database from CMakeLists.txt
+defines +
+(list of strings) +
Additional defines passed to the compiler[]
+use-system-stdlib +
+(boolean) +
Use the system standard libraryfalse
+stdlib-includes +
+(list of paths) +
Standard Library include paths["<mrdocs-root>/share/mrdocs/libcxx", "<mrdocs-root>/share/mrdocs/clang"]
+system-includes +
+(list of paths) +
System include paths[]
+includes +
+(list of paths) +
Include paths[]
+

cmake

+

CMake arguments when generating the compilation database from CMakeLists.txt

+

When the compilation-database option is a CMakeLists.txt file, these arguments are passed to the cmake command to generate the compilation_database.json.

+

+

+
    +
  • Type: string
  • +
  • Default value:
  • +
+
+

+

defines

+

Additional defines passed to the compiler

+

Additional defines passed to the compiler when building the source code. These defines are added to the compilation database regardless of the strategy to generate it.

+

+

+
    +
  • Type: list of strings
  • +
  • Default value: []
  • +
+
+

+

use-system-stdlib

+

Use the system standard library

+

True if the compiler has to use just the system standard library. When set to true, the compiler uses the system standard library instead of the standard library provided by the compiler.

+

+

+
    +
  • Type: boolean
  • +
  • Default value: false
  • +
+
+

+

stdlib-includes

+

Standard Library include paths

+

Standard Library include paths. These paths are used to replace the standard library paths provided by the compiler.

+

+

+
    +
  • Type: list of paths
  • +
  • Default value: ["<mrdocs-root>/share/mrdocs/libcxx", "<mrdocs-root>/share/mrdocs/clang"]
  • +
  • Relative paths are relative to: "&lt;config-dir&gt;"
  • +
+
+

+

system-includes

+

System include paths

+

System include paths. These paths are used to add directories to the system include search path. The system include search path is used to search for system headers. The system headers are headers that are provided by the system and are not part of the project. The system headers are used to provide the standard library headers and other system headers. The system headers are not part of the project and are not checked for warnings and errors.

+

+

+
    +
  • Type: list of paths
  • +
  • Default value: []
  • +
+
+

+

includes

+

Include paths

+

Include paths. These paths are used to add directories to the include search path. The include search path is used to search for headers. The headers are used to provide declarations and definitions of symbols. The headers are part of the project and are checked for warnings and errors.

+

+

+
    +
  • Type: list of paths
  • +
  • Default value: []
  • +
+
+

+
+
+

+ +Generators +

+

Generators to create the documentation and their options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionDefault
+generate +
+(enum) +
Generator used to create the documentation"adoc"
+multipage +
+(boolean) +
Generate a multipage documentationtrue
+base-url +
+(string) +
Base URL for links to source code
+addons +
+(path) +
Path to the Addons directory"<mrdocs-root>/share/mrdocs/addons"
+legible-names +
+(boolean) +
Use legible namestrue
+embedded +
+(boolean) +
Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. This option is useful for producing documents that can be inserted into an external template.false
+

generate

+

Generator used to create the documentation

+

+

+
    +
  • Type: enum
  • +
  • Default value: "adoc"
  • +
  • Allowed values: ["adoc", "html", "xml"]
  • +
+
+

+

multipage

+

Generate a multipage documentation

+

Generates a multipage documentation. The output directory must be a directory. This option acts as a hint to the generator to create a multipage documentation. Whether the hint is followed or not depends on the generator.

+

+

+
    +
  • Type: boolean
  • +
  • Default value: true
  • +
+
+

+

base-url

+

Base URL for links to source code

+

Base URL for links to source code. The base URL is used to create links to the source code in the documentation. The base URL is combined with the path to the source file to create the link.

+

+

+
    +
  • Type: string
  • +
  • Default value:
  • +
+
+

+

addons

+

Path to the Addons directory

+

Path to the Addons directory. The Addons directory contains the template files used by generators to create the documentation. When a custom Addons directory is not specified, the default templates are used. The default templates are located at the share/mrdocs/addons directory of the MrDocs installation. Users can create custom templates by copying the default templates to a custom directory and specifying the custom directory using this option.

+

+

+
    +
  • Type: path
  • +
  • Default value: "<mrdocs-root>/share/mrdocs/addons"
  • +
  • Relative paths are relative to: "&lt;config-dir&gt;"
  • +
+
+

+

legible-names

+

Use legible names

+

Use legible names for ids in the documentation. When set to true, MrDocs uses legible names for symbols in the documentation. These are symbols that are legible but still safe for URLs. When the option is set to false, MrDocs uses a hash of the symbol ID.

+

+

+
    +
  • Type: boolean
  • +
  • Default value: true
  • +
+
+

+

embedded

+

Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. This option is useful for producing documents that can be inserted into an external template.

+

+

+
    +
  • Type: boolean
  • +
  • Default value: false
  • +
+
+

+
+
+

+ +Filters +

+

Filters to include or exclude files and symbols from the documentation

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionDefault
+referenced-declarations +
+(enum) +
Extraction policy for references to external declarations"dependency"
+anonymous-namespaces +
+(enum) +
Extraction policy for anonymous namespaces"always"
+inaccessible-members +
+(enum) +
Extraction policy for inaccessible members"always"
+inaccessible-bases +
+(enum) +
Extraction policy for inaccessible base classes"always"
+see-below +
+(list of strings) +
Namespaces for symbols rendered as "see-below"[]
+implementation-defined +
+(list of strings) +
Namespaces for symbols rendered as "implementation-defined"[]
+input +
+(object) +
Include files to extract
+filters +
+(object) +
Filters
+

referenced-declarations

+

Extraction policy for references to external declarations

+

Determine whether external declarations should be extracted when they are referenced in the source code. When set to always, external declarations are always extracted. When set to dependency, external declarations are extracted only if they are referenced by the source code. When set to never, external declarations are never extracted.

+

+

+
    +
  • Type: enum
  • +
  • Default value: "dependency"
  • +
  • Allowed values: ["always", "dependency", "never"]
  • +
+
+

+

anonymous-namespaces

+

Extraction policy for anonymous namespaces

+

Determine whether symbols in anonymous namespaces should be extracted. When set to always, symbols in anonymous namespaces are always extracted. When set to dependency, symbols in anonymous namespaces are extracted only if they are referenced by the source code. When set to never, symbols in anonymous namespaces are never extracted.

+

+

+
    +
  • Type: enum
  • +
  • Default value: "always"
  • +
  • Allowed values: ["always", "dependency", "never"]
  • +
+
+

+

inaccessible-members

+

Extraction policy for inaccessible members

+

Determine whether inaccessible members should be extracted. When set to always, inaccessible members are always extracted. When set to dependency, inaccessible members are extracted only if they are referenced by the source code. When set to never, inaccessible members are never extracted.

+

+

+
    +
  • Type: enum
  • +
  • Default value: "always"
  • +
  • Allowed values: ["always", "dependency", "never"]
  • +
+
+

+

inaccessible-bases

+

Extraction policy for inaccessible base classes

+

Determine whether inaccessible base classes should be extracted. When set to always, inaccessible base classes are always extracted. When set to dependency, inaccessible base classes are extracted only if they are referenced by the source code. When set to never, inaccessible base classes are never extracted.

+

+

+
    +
  • Type: enum
  • +
  • Default value: "always"
  • +
  • Allowed values: ["always", "dependency", "never"]
  • +
+
+

+

see-below

+

Namespaces for symbols rendered as "see-below"

+

Namespaces for symbols rendered as "see-below". Symbols in these namespaces are not extracted and are rendered as "see-below" in the documentation. This option is used to exclude symbols from the documentation that are considered part of the private API of the project.

+

+

+
    +
  • Type: list of strings
  • +
  • Default value: []
  • +
+
+

+

implementation-defined

+

Namespaces for symbols rendered as "implementation-defined"

+

Namespaces for symbols rendered as "implementation-defined". Symbols in these namespaces are not extracted and are rendered as "implementation-defined" in the documentation. This option is used to exclude symbols from the documentation that are considered part of the private API of the project.

+

+

+
    +
  • Type: list of strings
  • +
  • Default value: []
  • +
+
+

+

input

+

Include files to extract

+

Include files to extract. Only the files listed in this option are extracted. The paths are relative to the mrdocs configuration file.

+

+

+
    +
  • Type: object (See below)
  • +
+
+

+

filters

+

Filters

+

+

+
    +
  • Type: object (See below)
  • +
+
+

+

input suboptions

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionDefault
+input.include +
+(list of paths) +
Input directories to include[]
+input.file-patterns +
+(list of strings) +
File patterns to include[]
+

input.include

+

Input directories to include

+

Input directories to include. Only the files in these directories are extracted. The paths are relative to the mrdocs configuration file.

+

+

+
    +
  • Type: list of paths
  • +
  • Default value: []
  • +
+
+

+

input.file-patterns

+

File patterns to include

+

File patterns to include. Only the files that match these patterns are extracted. The patterns are relative to the input directories.

+

+

+
    +
  • Type: list of strings
  • +
  • Default value: []
  • +
+
+

+

filters suboptions

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionDefault
+filters.symbols +
+(object) +
Symbol filters
+

filters.symbols

+

Symbol filters

+

Symbol filters. Symbols that match these filters are extracted. The filters are applied to the fully qualified name of the symbol.

+

+

+
    +
  • Type: object (See below)
  • +
+
+

+

symbols suboptions

+ +++++ + + + + + + + + + + + + + + + + + + + +
NameDescriptionDefault
+filters.symbols.include +
+(list of strings) +
Specifies symbol inclusion patterns[]
+filters.symbols.exclude +
+(list of strings) +
Specifies symbol exclusion patterns[]
+

filters.symbols.include

+

Specifies symbol inclusion patterns

+

Specifies symbol inclusion patterns. Symbols that match these patterns are extracted. The patterns are applied to the fully qualified name of the symbol.

+

+

+
    +
  • Type: list of strings
  • +
  • Default value: []
  • +
+
+

+

filters.symbols.exclude

+

Specifies symbol exclusion patterns

+

Specifies symbol exclusion patterns. Symbols that match these patterns are not extracted. The patterns are applied to the fully qualified name of the symbol.

+

+

+
    +
  • Type: list of strings
  • +
  • Default value: []
  • +
+
+

+
+
+

+ +Metadata +

+

Metadata and C++ constructs to extract

+ +++++ + + + + + + + + + + + + + + +
NameDescriptionDefault
+detect-sfinae +
+(boolean) +
Detect SFINAE expressionstrue
+

detect-sfinae

+

Detect SFINAE expressions

+

When set to true, MrDocs detects SFINAE expressions in the source code and extracts them as part of the documentation. Expressions such as std::enable_if<...> are detected, removed, and documented as a requirement.

+

+

+
    +
  • Type: boolean
  • +
  • Default value: true
  • +
+
+

+
+
+

+ +Miscellaneous +

+

Miscellaneous options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionDefault
+concurrency +
+(unsigned integer) +

+(Command line only) +
Number of threads to use0
+verbose +
+(boolean) +
Verbose outputfalse
+report +
+(unsigned integer) +
The minimum reporting level: 0 to 41
+ignore-map-errors +
+(boolean) +
Continue if files are not mapped correctlyfalse
+ignore-failures +
+(boolean) +
Whether AST visitation failures should not stop the programfalse
+

concurrency

+

Number of threads to use

+

The desired level of concurrency: 0 for hardware-suggested.

+

+

+
    +
  • Type: unsigned integer
  • +
  • Command line only
  • +
  • Default value: 0
  • +
  • Minimum value: 0
  • +
+
+

+

verbose

+

Verbose output

+

Verbose output. When set to true, MrDocs outputs additional information during the generation of the documentation.

+

+

+
    +
  • Type: boolean
  • +
  • Default value: false
  • +
+
+

+

report

+

The minimum reporting level: 0 to 4

+

The reporting level determines the amount of information displayed during the generation of the documentation. The levels are: 0 - no output, 1 - errors only, 2 - errors and warnings, 3 - errors, warnings, and information, 4 - errors, warnings, information, and debug information.

+

+

+
    +
  • Type: unsigned integer
  • +
  • Default value: 1
  • +
  • Minimum value: 0
  • +
  • Maximum value: 4
  • +
+
+

+

ignore-map-errors

+

Continue if files are not mapped correctly

+

When set to true, MrDocs continues to generate the documentation even if some files are not mapped correctly. Files are not mapped correctly when the source file is not found or the compilation database does not contain the compiler flags for the source file.

+

+

+
    +
  • Type: boolean
  • +
  • Default value: false
  • +
+
+

+

ignore-failures

+

Whether AST visitation failures should not stop the program

+

When set to true, MrDocs continues to generate the documentation even if there are AST visitation failures. AST visitation failures occur when the source code contains constructs that are not supported by MrDocs.

+

+

+
    +
  • Type: boolean
  • +
  • Default value: false
  • +
+
+

+
+
+
+ +
+
+ +
+ + diff --git a/docs/mrdocs/develop/contribute.html b/docs/mrdocs/develop/contribute.html new file mode 100644 index 000000000..2a15de3c3 --- /dev/null +++ b/docs/mrdocs/develop/contribute.html @@ -0,0 +1,667 @@ + + + + + + Contributor’s Guide :: MrDocs + + + + + + + + +
+ +
+
+ +

Contributor’s Guide

+
+
+
+

This page contains information for contributors to the MrDocs project. +It is intended to provide an overview of the codebase and the process of adding new features.

+
+
+
+
+

Codebase Overview

+
+
+

The MrDocs codebase is divided into several modules:

+
+
graph TD + %% Define styles for visual clarity + classDef input fill:#D1E8FF,stroke:#005CFF,stroke-width:2; + classDef artifact fill:#FFF5D1,stroke:#FFA500,stroke-width:2; + classDef output fill:#D1FFD1,stroke:#008000,stroke-width:2; + + %% Define Inputs + subgraph Inputs + CF[Configuration File] + CL[Command Line Arguments] + end + class CL,CF input + + %% Define Artifacts + subgraph Processes + P[Configuration Options] + CD[Compilation Database] + C[Corpus] + G[Generator] + end + class P artifact + class CD,C,G artifact + + %% Define Outputs + subgraph Outputs + D[Documentation] + end + class D output + + %% Relationships + CF -->|Define| P + CL -->|Define| P + P -->|Defines| CD + CD -->|Extract Symbols| C + C -->|Feeds| G + G -->|Produces| D + + %% Highlight dependencies for clarity + P -->|Influences| G
+
+

This section provides an overview of each module and how they interact with each other in the MrDocs codebase.

+
+
+

Parsing options

+
+

MrDocs options affect the behavior of the compilation database, how symbols are extracted, and how the documentation is generated. +They are parsed from the command line and configuration file.

+
+
+

The main entry point of MrDocs is the DoGenerateAction function in src/tool/GenerateAction.cpp. +It loads the options, creates the compilation database, and runs the extraction and generation steps. +The options formed from a combination of command line arguments and configuration file settings.

+
+
+

Command Line Options

+
+

Command line and common options are defined in src/tool/ToolArgs.hpp. +The ToolArgs class uses the llvm::cl library to define and parse the command line arguments.

+
+
+
+

Configuration File

+
+

Common options are defined in mrdocs/Config.hpp. +The Config class represents all public options that could be defined in a configuration file. +It also provides a representation plugins can use to access public options from the command line or configuration file.

+
+
+

The function clang::mrdocs::loadConfig is also provided to parse all public options from a YAML configuration file.

+
+
+

Internally, MrDocs uses the derived clang::mrdocs::ConfigImpl class (src/lib/Lib/ConfigImpl.hpp) to also store the private representation of parsed options, such as filters.

+
+
+
+

Finalizing Options

+
+

Common options are stored in the Config class, while the ToolArgs class stores common options and the command line options. +For instance, the config option can only be set from the command line, as it would be illogical to expect the location of the configuration file to be defined in the configuration file itself. +On the other hand, the output option can be set from both the command line and the configuration file so that the user can define a default output location in the configuration file.

+
+
+

Thus, after the command line and configuration file options are parsed, they are finalized in the DoGenerateAction function by calling ToolArgs::apply, which overrides the configuration file options in Config with the command line options, when applicable.

+
+
+

As a last step, DoGenerateAction converts the public Config settings into a ConfigImpl object, which is used by the rest of the program with the parsed options.

+
+
+
+
+

Extracting Symbols

+
+

At this stage, the clang frontend is used to parse the source code and generate an AST. +The AST information is extracted and stored in a Corpus object (mrdocs/Corpus.hpp).

+
+
+

Compilation Database

+
+

The second step in DoGenerateAction is to create a CompilationDatabase object, so we can extract symbols from its source files. +There are multiple possible sources for this file according to the configuration options: the file might be read directly from the path specified in the options, or it might be generated by MrDocs from build scripts.

+
+
+

Whatever the source, a derived MrDocsCompilationDatabase object (lib/Lib/MrDocsCompilationDatabase.hpp) is created to represent the compilation database. +The difference between the original CompilationDatabase and the MrDocsCompilationDatabase is that the latter includes a number of pre-processing steps to filter and transform compilation commands.

+
+
+

For each compilation command:

+
+
+
    +
  • +

    Command line arguments are adjusted

    +
    +
      +
    • +

      Warnings are supressed

      +
    • +
    • +

      Additional defines are added

      +
    • +
    • +

      Implicit include directories are added

      +
    • +
    • +

      Unrecognized arguments are removed

      +
    • +
    +
    +
  • +
  • +

    Paths are normalized

    +
  • +
  • +

    Non C++ files are filtered

    +
  • +
+
+
+
+

Info Nodes

+
+

MrDocs represents each C++ symbol or construct as an Info node (mrdocs/Metadata/Info.hpp). +MrDocs currently defines the following Info nodes:

+
+
+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionDeclaration

NamespaceInfo

The symbol is a namespace

mrdocs/Metadata/Namespace.hpp

RecordInfo

The symbol is a record (class or struct)

mrdocs/Metadata/Record.hpp

FunctionInfo

The symbol is a function

mrdocs/Metadata/Function.hpp

EnumInfo

The symbol is an enum

mrdocs/Metadata/Enum.hpp

TypedefInfo

The symbol is a typedef

mrdocs/Metadata/Typedef.hpp

VariableInfo

The symbol is a variable

mrdocs/Metadata/Variable.hpp

FieldInfo

The symbol is a field

mrdocs/Metadata/Field.hpp

SpecializationInfo

The symbol is a template specialization

mrdocs/Metadata/Specialization.hpp

FriendInfo

The symbol is a friend declaration

mrdocs/Metadata/Friend.hpp

EnumeratorInfo

The symbol is an enumerator

mrdocs/Metadata/Enumerator.hpp

GuideInfo

The symbol is a deduction guide

mrdocs/Metadata/Guide.hpp

AliasInfo

The symbol is a namespace alias

mrdocs/Metadata/Alias.hpp

UsingInfo

The symbol is a using declaration

mrdocs/Metadata/Using.hpp

ConceptInfo

The symbol is a concept

mrdocs/Metadata/Concept.hpp

+
+
+
+

Info can not only represent direct AST symbols but also C++ constructs that need to be inferred from these symbols. +Nodes in the first category will typically be created in the initial extraction step, and nodes in the second category will be created in the finalization step.

+
+
+

When defining a new Info type, it is important to consider how this type will be supported in all other modules of the codebase, including the AST visitor, generators, tests, and the documentation. +The script .github/check_info_nodes_support.sh will attempt to infer whether most of these features have been implemented for each node type.

+
+
+
+

Clang LibTooling

+
+

MrDocs uses Clang to extract Info objects from the C++ AST. +Clang offers two interfaces to access the C++ AST: the LibClang and LibTooling libraries. +MrDocs uses the latter, as it provides full control over the AST traversal process at the cost of an unstable API.

+
+
+

In LibTooling, once we have a Compilation Database, we can create a ClangTool object to run the Clang frontend on a set of source files.

+
+
+
+
clang::tooling::ClangTool Tool(compilationDatabase, sourceFiles);
+newFrontendActionFactory<clang::SyntaxOnlyAction> actionFactory();
+return Tool.run(actionFactory.get());
+
+
+
+

The clang::tooling::ClangTool::run method takes a clang::tooling::ToolAction object that defines how to process the AST. +The action object that usually comes from a clang::tooling::FrontendActionFactory. +In the example above, the SyntaxOnlyAction is used to parse the source code and generate the AST without any further processing.

+
+
+

In MrDocs, this process happens in clang::mrdocs::CorpusImpl::build (src/lib/Lib/CorpusImpl.cpp), where we call Tool.run for each object in the database with our custom ASTAction action and ASTActionFactory factory (src/lib/AST/ASTVisitor.cpp).

+
+
+
+

AST Traversal

+
+

While ASTAction is the entry point for processing the AST, the real work is done by the ASTVisitor class. +As the AST is generated, it is traversed by the ASTVisitor class.

+
+
+

The entry point of this class is ASTVisitor::build, which recursively calls ASTVisitor::traverseDecl for the root clang::TranslationUnitDecl node of the translation unit. +During the AST traversal stage, the complete AST generated by the clang frontend is walked beginning with this root TranslationUnitDecl node.

+
+
+

Each clang node is converted into a mrdocs::Info node, which is then stored with any relevant information in a mrdocs::Corpus object.

+
+
+
+

USR Generation

+
+

It is during this stage that USRs (universal symbol references) are generated and hashed with SHA1 to form the 160 bit SymbolID for an entity. +Except for built-in types, all entities referenced in the corpus will be traversed and be assigned a SymbolID; including those from the standard library. +This is necessary to generate the full interface for user-defined types.

+
+
+
+

Finalizing the Corpus

+
+

After running the AST traversal on all translation units, CorpusImpl::build contains finalization steps for the Corpus object. +At this point, we process C++ constructs that are not directly represented in the AST.

+
+
+

The first finalization step happens in CorpusImpl::build (src/lib/Lib/CorpusImpl.cpp), where the Info objects from a single translation unit +are merged into a map containing the merged results from all other TUs. +The merging step is necessary as there may be multiple identical definitions of the same entity. +For instance, this represents the case where a function is declared at different points in the code base and might have different attributes or comments. +At this step, the doc comments are also finalized. +Each Info object has a pointer to its Javadoc object (mrdocs/Metadata/Javadoc.hpp), which is a representation of the documentation comments.

+
+
+

After AST traversal and Info merging, the result is stored as a map of Info objects indexed by their respective SymbolID. +A second finalization step is then performed in clang::mrdocs::finalize (src/lib/Metadata/Finalize.cpp), where any references to SymbolID objects that don’t exist are removed. +This is necessary because the AST traversal will generate references to entities that should be filtered and are not present in the corpus.

+
+
+

At this point, the Corpus object contains representations of all entities in the code base and further semantic C++ constructs that are not directly represented in the AST can be inferred.

+
+
+
+
+

Generators

+
+

Documentation generators may traverse this structure by calling Corpus::traverse with a Corpus::Visitor derived visitor and the SymbolID of the entity to visit (e.g. the global namespace).

+
+
+

Documentation generators are responsible for traversing the corpus and generating documentation in the desired format.

+
+
+

The API for documentation generators is defined in mrdocs/Generator.hpp.

+
+
+
+

Directory Layout

+
+

The MrDocs codebase is organized as follows:

+
+
+

include/—The main include directory

+
+

This directory contains the public headers for the MrDocs library.

+
+
+
    +
  • +

    include/mrdocs/—The core library headers

    +
    +
      +
    • +

      include/mrdocs/ADT—Data Structures

      +
    • +
    • +

      include/mrdocs/Dom—The Document Object Model for Abstract Trees

      +
    • +
    • +

      include/mrdocs/MetadataInfo nodes and metadata classes

      +
    • +
    • +

      include/mrdocs/Support—Various utility classes

      +
    • +
    +
    +
  • +
+
+
+
+

src/—The main source directory

+
+

This directory contains the source code for the MrDocs library and private headers.

+
+
+
    +
  • +

    src/lib/—The core library

    +
    +
      +
    • +

      src/lib/AST/—The AST traversal code

      +
    • +
    • +

      src/lib/Dom/—The Document Object Model for Abstract Trees

      +
    • +
    • +

      src/lib/Gen/—Generators

      +
    • +
    • +

      src/lib/Lib/—The core library classes

      +
    • +
    • +

      src/lib/Metadata/Info nodes and metadata classes

      +
    • +
    • +

      src/lib/Support/—Various utility classes

      +
    • +
    +
    +
  • +
  • +

    src/test/—The test directory

    +
  • +
  • +

    src/test_suite/—The library used for testing

    +
  • +
  • +

    src/tool/—The main program

    +
  • +
+
+
+
+

share/—Shared resources

+
+

This directory contains shared resources for the documentation generators and utilities for developers. +Its subdirectories are installed in the share directory of the installation.

+
+
+
    +
  • +

    share/—Shared resources for the documentation generators

    +
  • +
  • +

    share/cmake/—CMake modules to generate the documentation

    +
  • +
  • +

    share/gdb/—GDB pretty printers

    +
  • +
  • +

    share/mrdocs/—Shared resources for the documentation generators

    +
  • +
+
+
+
+

docs—Documentation

+
+

This directory contains the documentation for the MrDocs project. +The documentation is written in AsciiDoc and can be built using the Antora tool.

+
+
+
    +
  • +

    docs/—Documentation configuration files and scripts

    +
    +
      +
    • +

      docs/modules/—The documentation asciidoc files

      +
    • +
    • +

      docs/extensions—Antora extensions for the documentation

      +
    • +
    +
    +
  • +
+
+
+
+

third-party/—Helpers for third-party libraries

+
+

This directory contains build scripts and configuration files for third-party libraries.

+
+
+
    +
  • +

    third-party/—Third-party libraries

    +
    +
      +
    • +

      third-party/llvm/—CMake Presets for LLVM

      +
    • +
    • +

      third-party/duktape/—CMake scripts for Duktape

      +
    • +
    • +

      third-party/lua/—A bundled Lua interpreter

      +
    • +
    +
    +
  • +
+
+
+
+
+
+
+

Coding Standards

+
+
+

Paths

+
+

The AST visitor and metadata all use forward slashes to represent file pathnames, even on Windows. +This is so the generated reference documentation does not vary based on the platform.

+
+
+
+

Exceptions

+
+

Errors thrown by the program should always have type Exception. +Objects of this type are capable of transporting an Error object. +This is important for the scripting to work; exceptions are used to propagate errors from library code to scripts and back to the invoking code. +For exceptional cases, these thrown exceptions should be uncaught. +The tool installs an uncaught exception handler that prints a stack trace and exits the process immediately.

+
+
+
+

Testing

+
+

All new features should be accompanied by tests. +The mrdocs-test target is used to run the test suites. +This target has its entry point in src/test/TestMain.cpp, which can take two paths:

+
+
+
    +
  • +

    Golden testing: When input paths are provided to the test executable via the command line, the test suite will run the DoTestAction() that iterates all files in test-files comparing the input source files with the expected XML output files.

    +
  • +
  • +

    Unit testing: When no input paths are provided, all unit tests will be run via unit_test_main(), defined by the our test-suite library in src/test_suite/test_suite.cpp.

    +
  • +
+
+
+

The fixtures for golden testing are defined in test-files/golden-tests, where files in each directory have the following format:

+
+
+
    +
  • +

    mrdocs.yml: Basic configuration options for all files in this directory.

    +
  • +
  • +

    <filename>.cpp: The input source file to extract symbols from.

    +
  • +
  • +

    <filename>.xml: The expected XML output file generated with the XML generator.

    +
  • +
  • +

    <filename>.bad.xml: The test output file generated when the test fails.

    +
  • +
  • +

    <filename>.yml: Extra configuration options for this specific file.

    +
  • +
+
+
+
+
+
+

Contributing

+
+
+

If you find a bug or have a feature request, please open an issue on the MrDocs GitHub repository: https://github.com/cppalliance/mrdocs/issues

+
+
+

If you would like to contribute a feature or bug fix, please open a pull request on the MrDocs GitHub repository: https://github.com/cppalliance/mrdocs/pulls

+
+
+

If you would like to discuss a feature or bug fix before opening a pull request, discussing happen in the #mrdocs channel on the Cpplang Slack: https://cpplang.slack.com/

+
+
+
+ +
+
+ +
+ + diff --git a/docs/mrdocs/develop/demos.html b/docs/mrdocs/develop/demos.html new file mode 100644 index 000000000..e8dc701e9 --- /dev/null +++ b/docs/mrdocs/develop/demos.html @@ -0,0 +1,251 @@ + + + + + + Demos :: MrDocs + + + + + + + + +
+ +
+
+ +

Demos

+
+

A few examples of reference documentation generated with MrDocs are available in https://mrdocs.com/demos/:

+
+
+

develop

+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Multi Page

Single Page

Library

Asciidoc

HTML

Asciidoc

HTML

XML

Boost.Scope

Boost.Scope reference in Asciidoc format

Boost.Scope reference in Asciidoc format

Boost.URL

Boost.URL reference in Asciidoc format

Boost.URL reference in HTML format

Boost.URL reference in Asciidoc format

Boost.URL reference in HTML format

Boost.URL reference in XML format

+
+

master

+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + +

Multi Page

Single Page

Library

Asciidoc

HTML

Asciidoc

HTML

XML

Boost.URL

Boost.URL reference in Asciidoc format

Boost.URL reference in HTML format

Boost.URL reference in Asciidoc format

Boost.URL reference in HTML format

Boost.URL reference in XML format

+
+

v0.0.1

+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + +

Multi Page

Single Page

Library

Asciidoc

HTML

Asciidoc

HTML

XML

Boost.URL

Boost.URL reference in Asciidoc format

Boost.URL reference in HTML format

Boost.URL reference in Asciidoc format

Boost.URL reference in HTML format

Boost.URL reference in XML format

+
+

v0.0.2

+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + +

Multi Page

Single Page

Library

Asciidoc

HTML

Asciidoc

HTML

XML

Boost.URL

Boost.URL reference in Asciidoc format

Boost.URL reference in HTML format

Boost.URL reference in Asciidoc format

Boost.URL reference in HTML format

Boost.URL reference in XML format

+ +
+
+ +
+ + diff --git a/docs/mrdocs/develop/design-notes.html b/docs/mrdocs/develop/design-notes.html new file mode 100644 index 000000000..60c2ed169 --- /dev/null +++ b/docs/mrdocs/develop/design-notes.html @@ -0,0 +1,307 @@ + + + + + + Design Notes :: MrDocs + + + + + + + + +
+ +
+
+ +

Design Notes

+
+

Why automate documentation?

+
+
+

C++ API design is challenging. +When you write a function signature, or declare a class, it is at that moment when you are likely to have as much information as you will ever have about what it is supposed to do. +The more time passes before you write the documentation, the less likely you are to remember all the details of what motivated the API in the first place.

+
+
+

In other words, because best and worst engineers are naturally lazy, the temporal adjacency of the C++ declaration to the documentation improves outcomes. +For this reason, having the documentation be as close as possible to the declaration is ideal. +That is, the spatial adjacency of the C++ declaration to the documentation improves outcomes because it facilitates temporal adjacency.

+
+
+

In summary, the automated extraction of reference documentation from C++ declarations containing attached documentation comments is ideal because:

+
+
+
    +
  • +

    Temporally adjacent documentation is more comprehensive

    +
  • +
  • +

    Spatially adjacent documentation requires less effort to maintain

    +
  • +
  • +

    And causally connected documentation is more accurate

    +
  • +
+
+
+

From the perspective of engineers, however, the biggest advantage of automated documentation is that it implies a single source of truth for the API at a low cost. +However, C++ codebases are notoriously difficult to document automatically because of constructs where the code needs to diverge from the intended API that represents the contract with the user.

+
+
+

Tools like Doxygen typically require workarounds and manual intervention via preprocessor macros to get the documentation right. +These workarounds are problematic because they effectively mean that there are two versions of the code: the well-formed and the ill-formed versions. +This subverts the single sources of truth for the code.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mr. DocsAutomaticManualNo Reference

No workarounds

Nice for users

Single Source of Truth

Less Work for Developers

Always up-to-date

+
+
    +
  • +

    By providing no reference to users, they are forced to read header files to understand the API. +This is a problem because header files are not always the best source of truth for the API. +Developers familiar with cppreference.com will know that the documentation there is often more informative than the header files.

    +
  • +
  • +

    A common alternative is to provide a manual reference to the API. +Developers duplicate the signatures, which requires extra work. +This strategy tends to work well for small libraries and allows the developer to directly express the contract with the user. +However, as the single source of truth is lost, it becomes unmanageable as the codebase grows. +When the declaration changes, they forget to edit the docs, and the reference becomes out of date.

    +
  • +
  • +

    In this case, it looks like the best solution is to automate the documentation. +The causal connection between the declaration and the generated documentation improves outcomes. +That’s when developers face difficulties with existing tools like Doxygen, which require workarounds and manual intervention to get the documentation right. +The workarounds mean that there are two versions of the code: the well-formed and the ill-formed versions.

    +
  • +
  • +

    The philosophy behind MrDocs is to provide solutions to these workarounds so that the single source of truth can be maintained with minimal effort by developers. +With Mr.Docs, the documented C++ code should be the same as the code that is compiled.

    +
  • +
+
+
+
+
+

Customization

+
+
+

Once the documentation is extracted from the code, it is necessary to format it in a way that is useful to the user. +This usually involves generating output files that match the content of the documentation to the user’s needs.

+
+
+

A limitation of existing tools like Doxygen is that their output formats are not very customizable. +It supports minor customization in the output style and, for custom content formats, it requires much more complex workflows, like generating XML files and writing secondary applications to process them.

+
+
+

MrDocs attempts to support multiple output formats and customization options. +In practice, MrDocs attempts to provide three levels of customization:

+
+
+
    +
  • +

    At the first level, the user can use an existing generator and customize its templates and helper functions.

    +
  • +
  • +

    The user can write a MrDocs plugin at a second level that defines a new generator.

    +
  • +
  • +

    At a third level, it can use a generator for a structured file format and consume the output in a more uncomplicated secondary application or script.

    +
  • +
+
+
+

These multiple levels of complexity mean developers can worry only about the documentation content. +In practice, developers rarely need new generators and are usually only interested in changing how an existing generator formats the output. +Removing the necessity of writing and maintaining a secondary application only to customize the output via XML files can save these developers an immense amount of time.

+
+
+
+
+

C++ Constructs

+
+
+

To deal with the complexity of C++ constructs, MrDocs uses clang’s libtooling API. +That means MrDocs understands all C++: if clang can compile it, MrDocs knows about it.

+
+
+

Here are a few constructs MrDocs attempts to understand and document automatically from the metadata:

+
+
+
    +
  • +

    Overload sets

    +
  • +
  • +

    Private APIs

    +
  • +
  • +

    Unspecified Return Types

    +
  • +
  • +

    Concepts

    +
  • +
  • +

    Typedef / Aliases

    +
  • +
  • +

    Constants

    +
  • +
  • +

    Automatic Related Types

    +
  • +
  • +

    Macros

    +
  • +
  • +

    SFINAE

    +
  • +
  • +

    Hidden Base Classes

    +
  • +
  • +

    Hidden EBO

    +
  • +
  • +

    Niebloids

    +
  • +
  • +

    Coroutines

    +
  • +
+
+
+
+ +
+
+ +
+ + diff --git a/docs/mrdocs/develop/generators.html b/docs/mrdocs/develop/generators.html new file mode 100644 index 000000000..4c61c26d3 --- /dev/null +++ b/docs/mrdocs/develop/generators.html @@ -0,0 +1,1642 @@ + + + + + + Generators :: MrDocs + + + + + + + + +
+ +
+
+ +

Generators

+
+
+
+

MrDocs uses a generator to convert the extracted symbols into documentation. +MrDocs supports multiple output formats that can be specified via the generate option:

+
+
+

The generate option can be used to specify the output format:

+
+
+
+
# ...
+generate: adoc
+# ...
+
+
+
+

Three output formats are supported:

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
FormatDescription

adoc

AsciiDoc format.

html

HTML format.

xml

XML format.

+
+

The corpus of symbols is provided to the generator responsible for converting these symbols into the desired output format.

+
+
+

The xml generator is used as an intermediary format for other tools or for testing purposes. +Users can write their own tools to process the XML output and generate custom documentation.

+
+
+

The adoc and html generators use templates to generate the documentation. +These templates can be customized to change the output format and style.

+
+
+

Asciidoc is a text-based format that is easy to read and write. +It can also be converted to other formats such as HTML and Markdown.

+
+
+

HTML can be generated directly with the html format.

+
+
+
+
+

Choosing the Right Generator

+
+
+

The scatter plot below illustrates the available output formats for MrDocs, along with hypothetical solutions, in terms of redundancy and convenience.

+
+
+
+Output Formats Scatter Plot +
+
+
+
    +
  • +

    Redundancy: The amount of duplicated or unstructured information in the output format. +Lower redundancy is generally preferred for post-processing, while higher redundancy can allow the output to use formats that are easier to use directly.

    +
  • +
  • +

    Convenience: Reflects how readily the output format can be used without requiring additional tools or steps.

    +
  • +
+
+
+

Although Clang can generate and print an Abstract Syntax Tree (AST) directly for a Translation Unit (TU), it is not the most convenient format for generating documentation:

+
+
+
    +
  • +

    It does not provide the AST in a format that’s easy to process.

    +
  • +
  • +

    Equivalent symbols can be redeclared multiple times in the same translation unit and across translation units.

    +
  • +
  • +

    The documentation for equivalent symbols also needs to be unified.

    +
  • +
+
+
+

The scatter plot shows the following output formats supported by MrDocs:

+
+
+
    +
  1. +

    XML: Aggregates all symbols and their documentation in a format that is straightforward to process. +It’s suitable for advanced use cases involving custom post-processing tools.

    +
  2. +
  3. +

    Asciidoc: Similar to HTML in convenience, Asciidoc files can be easily converted to HTML and multiple other formats with backends.

    +
  4. +
  5. +

    HTML: Generates output that is directly usable in a variety of contexts, such as web pages or documentation systems.

    +
  6. +
+
+
+

The Asciidoc and HTML generators also support Custom Templates to change the output format and style. +This forms another possibility in the trade-off between redundancy and convenience.

+
+
+

The best trade-offs, represented by the line passing through the generators, indicate the optimal solutions in terms of redundancy and convenience. +Solutions on this line balance these goals effectively. +Dots in the background represent other potential formats that do not lie on the front of best trade-offs, as they fail to optimize either redundancy or convenience compared to the available generators.

+
+
+
+
+

Generator Templates

+
+
+

MrDocs attempts to support various alternatives for customizing the output format and style without complex workflows to post-process XML output. +The adoc and html generators use Handlebars templates. +These templates can be customized to change the output format and style of the documentation.

+
+
+

The templates used to generate the documentation are located in the share/mrdocs/addons/generator directory. +Users can create a copy of these files and provide their own addons directory via the addons option in the configuration file or via the command line.

+
+
+
+
addons: /path/to/custom/addons
+
+
+
+

Each symbol goes through a main layout template in the <addons>/generator/<generator>/layouts/single-symbol.<generator>.hbs directory. +This template is a simple entry point that renders the partial relative to the symbol kind.

+
+
+

The partials are located in the <addons>/generator/<generator>/partials directory. +It typically contains the following files and subdirectories:

+
+
+
    +
  • +

    symbol: A generic partial for rendering symbols.

    +
  • +
  • +

    location: Partials for rendering location objects.

    +
  • +
  • +

    symbol: Partials for rendering Symbol Objects.

    +
  • +
  • +

    template: Partials for rendering Template Info Objects.

    +
  • +
  • +

    type: Partials for rendering Type Info Objects.

    +
  • +
  • +

    markup: partials for rendering markup elements such as lists, tables, and code blocks, in the output format.

    +
  • +
+
+
+

Please refer to the Document Object Model Reference for more information on each type of object.

+
+
+

Partials common to all generators are available in the <addons>/generator/common/partials directory. +The common partials are loaded before the generator-specific partials, which can override any common partials.

+
+
+

The multipage generator renders the layout multiple times as separate pages for each symbol. +The single-page generator renders the layout multiple times and concatenates the results in a single page.

+
+
+

Each time the generator encounters a symbol, it renders the layout template with the symbol data as the Handlebars context. +The layout template can include other partial templates to render the symbol data. These partials are available in the <addons>/generator/<generator>/partials directory.

+
+
+

The Document Object Model (DOM) for each symbol includes all information about the symbol.One advantage of custom templates over post-processing XML files is the ability to access symbols as a graph.If symbol A refers to symbol B, some properties of symbol B are likely to be required in the documentation of A.All templates and generators can access a reference to B by searching the symbol tree or simply by accessing the elements A refers to.All references to other symbols are resolved in the templates.

+
+
+
+
+

Document Object Model Reference

+
+
+

The Document Object Model (DOM) is a tree structure that represents the symbols extracted from the source code.The DOM is used by the generator to render the documentation.

+
+
+

Top-Level Fields

+
+

The top-level object in the DOM is the context for a template.The top-level object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

symbol

Symbol Object

The symbol being rendered.

config

Config Object

The configuration object.

+
+
+

Symbol

+
+

The Symbol object represents a symbol extracted from the source code.The symbol being rendered is available in the symbol object in the Handlebars context.The symbol object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

id

string

A unique identifier for the symbol.

name

string

The nonqualified name of the symbol.

kind

string

The kind of symbol. (e.g., class, function, variable)

access

string

The access level of the symbol. (e.g., public, protected, private)

implicit

string

Whether the symbol was implicitly extracted as a dependency.

namespace

Symbol Object[]

The namespaces of the symbol.

parent

Symbol Object

The parent namespace of the symbol.

doc

Any

The documentation for the symbol.

+
+

Handlebars generators extend each symbol with the following fields:

+
+ +++++ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

url

string

The URL of the symbol. If the documentation is a single page, this is the anchor link to the symbol starting with #. If the documentation is multipage, this is the path to the symbol starting with /.

anchor

string

The anchor link to the symbol. This is used for section IDs in the documentation.

+
+

The Symbol object has additional properties based on the kind of symbol. +The following table lists the additional properties for symbols that contain information about their scope (such as Namespaces and Classes):

+
+ +++++ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

members

Symbol Object[]

The members of that scope (e.g., member functions, namespace symbols).

overloads

Symbol Object[]

Same as members, but groups overloaded functions as unique symbols of kind overload.

+
+

Symbol objects that contain information about the location include the following properties:

+
+ +++++ + + + + + + + + + + + + + + +
PropertyTypeDescription

loc

Source Info Object

The location of the symbol in the source code.

+
+

When the symbol kind is namespace, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

interface

Tranche Object

The interface of the namespace.

usingDirectives

Symbol Object[]

The using directives of the namespace.

+
+

When the symbol kind is record (e.g., class, struct, union), the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

tag

string

The type of record (e.g., class, struct, union).

defaultAccess

string

The default access level of the record members (e.g., public, private).

isTypedef

bool

Whether the record is a typedef.

bases

Base Info Object[]

The base classes of the record.

interface

Interface Object

The interface of the record.

template

Template Info Object

The template information of the record.

+
+

When the symbol kind is enum, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

type

Type Info Object

The type information of the enum.

isScoped

bool

Whether the enum is scoped.

+
+

When the symbol kind is function, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

isVariadic

bool

Whether the function is variadic.

isVirtual

bool

Whether the function is virtual.

isVirtualAsWritten

bool

Whether the function is virtual as written.

isPure

bool

Whether the function is pure.

isDefaulted

bool

Whether the function is defaulted.

isExplicitlyDefaulted

bool

Whether the function is explicitly defaulted.

isDeleted

bool

Whether the function is deleted.

isDeletedAsWritten

bool

Whether the function is deleted as written.

isNoReturn

bool

Whether the function is noreturn.

hasOverrideAttr

bool

Whether the function has the override attribute.

hasTrailingReturn

bool

Whether the function has a trailing return type.

isConst

bool

Whether the function is const.

isVolatile

bool

Whether the function is volatile.

isFinal

bool

Whether the function is final.

isNodiscard

bool

Whether the function is nodiscard.

isExplicitObjectMemberFunction

bool

Whether the function is an explicit object member function.

constexprKind

string

The constexpr kind of the function (e.g., consteval, constexpr).

storageClass

string

The storage class of the function (e.g., static, extern).

refQualifier

string

The reference qualifier of the function (e.g., &, &&).

class

string

The function class (e.g., constructor, conversion, destructor).

params

Param Object[]

The parameters of the function.

return

Type Info Object

The return type of the function.

template

Template Info Object

The template information of the function.

overloadedOperator

string

The overloaded operator of the function.

exceptionSpec

string

The exception specification of the function.

explicitSpec

string

The explicit specification of the function.

requires

string

The requires expression of the function.

+
+

When the symbol kind is typedef, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

type

Type Info Object

The type information of the typedef.

template

Template Info Object

The template information of the typedef.

isUsing

bool

Whether the typedef is a using declaration.

+
+

When the symbol kind is variable, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

type

Type Info Object

The type information of the variable.

template

Template Info Object

The template information of the variable.

constexprKind

string

The constexpr kind of the variable (e.g., consteval, constexpr).

storageClass

string

The storage class of the variable (e.g., static, extern).

isConstinit

bool

Whether the variable is constinit.

isThreadLocal

bool

Whether the variable is thread-local.

initializer

string

The initializer of the variable.

+
+

When the symbol kind is field (i.e. non-static data members), the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

type

Type Info Object

The type information of the field.

default

string

The default value of the field.

isMaybeUnused

bool

Whether the field is maybe unused.

isDeprecated

bool

Whether the field is deprecated.

isVariant

bool

Whether the field is a variant.

isMutable

bool

Whether the field is mutable.

isBitfield

bool

Whether the field is a bitfield.

hasNoUniqueAddress

string

Whether the field has the attribute.

bitfieldWidth

string

The width of the bitfield.

+
+

When the symbol kind is friend, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

name

string

The name of the friend symbol or type.

symbol

Symbol Object

The friend symbol.

type

Type Info Object

The friend type.

+
+

When the symbol kind is alias, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + +
PropertyTypeDescription

aliasedSymbol

Name Info Object

The aliased symbol.

+
+

When the symbol kind is using, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

class

string

The class of the using declaration (e.g., normal, typename, enum).

shadows

Symbol Object[]

The symbols being used.

qualifier

Name Info Object

The qualifier of the using declaration.

+
+

When the symbol kind is enumerator, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + +
PropertyTypeDescription

initializer

string

The initializer of the enumerator.

+
+

When the symbol kind is guide, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

params

Param Object[]

The parameters of the guide.

deduced

Type Info Object

The deduced type of the guide.

template

Template Info Object

The template information of the guide.

explicitSpec

string

The explicit specification of the guide.

+
+

When the symbol kind is concept, the symbol object has the following additional properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

template

Template Info Object

The template information of the concept.

constraint

string

The constraint of the concept.

+
+
+

Source Info Fields

+
+

The Source Info object represents the location of the symbol in the source code. +The source info object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

def

Location Object

Location where the entity was defined.

decl

Location Object[]

Locations where the entity was declared.

+
+
+

Tranche Object Fields

+
+

The Tranche object represents the symbols in a scope (e.g., namespace). +The tranche object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

(symbol kind in plural form: e.g., classes, functions, variables)

Symbol Object[]

The symbols of that kind in the scope.

types

Symbol Object[]

The types in the scope.

staticfuncs

Symbol Object[]

The static functions in the scope.

overloads

Symbol Object[]

The overloads in the scope.

staticoverloads

Symbol Object[]

The static overloads in the scope.

+
+
+

Interface Object Fields

+
+

The Interface object represents the interface of a record (e.g., class, struct, union). +The interface object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

public

Tranche Object

The public interface of the record.

protected

Tranche Object

The protected interface of the record.

private

Tranche Object

The private interface of the record.

+
+
+

Base Info Fields

+
+

The Base Info object represents a base class of a record. +The base info object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

access

string

The access level of the base class.

isVirtual

bool

Whether the base class is virtual.

type

Type Info Object

The type information of the base class.

+
+
+

Template Info Fields

+
+

The Template Info object represents the template information of a record, function, or typedef. +The template info object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

kind

string

The kind of template (e.g., explicit, partial).

primary

Symbol Object

The primary template.

params

tParam Object[]

The template parameters.

args

Type Info Object[]

The template arguments.

requires

string

The requires expression of the template.

+
+
+

Type Info Fields

+
+

The Type Info object represents the type information of a symbol. +The type info object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

kind

string

The kind of type (e.g., named, decltype, auto, pointer, reference, array, function).

is-pack

bool

Whether the type is a pack expansion.

name

string

The name of the type.

operand

string

The operand of the type.

keyword

string

The keyword of the type.

constraint

string

The constraint of the type.

cv-qualifiers

string

The cv qualifier of the type (e.g., const, volatile).

parent-type

Type Info Object

The parent type of the type.

pointee-type

Type Info Object

The pointee type of the type.

element-type

Type Info Object

The element type of the type.

bounds-value

string

The bounds value of the type.

bounds-expr

string

The bounds expression of the type.

return-type

Type Info Object

The return type of the type.

param-types

Type Info Object[]

The parameter types of the type.

exception-spec

string

The exception specification of the type.

ref-qualifier

string

The reference qualifier of the type.

is-variadic

bool

Whether the type is variadic.

+
+
+

Param Fields

+
+

The Param object represents the parameter of a function. +The param object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

name

string

The name of the parameter.

type

Type Info Object

The type information of the parameter.

default

string

The default value of the parameter.

+
+
+

Name Info Fields

+
+

The Name Info object represents the name of a symbol. +The name info object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

name

string

The name of the symbol.

symbol

string

The unique identifier of the symbol.

args

Type Info Object[]

The template arguments of the symbol.

prefix

string

The prefix of the symbol.

+
+
+

Location Fields

+
+

The Location object represents the location of a symbol in the source code. +The location object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

path

string

The path of the source file.

file

string

The filename of the source file.

line

integer

The line number of the symbol.

kind

string

The kind of file (e.g., source, system, other).

documented

bool

Whether the symbol is documented.

+
+
+

TParam Fields

+
+

The TParam object represents a template parameter of a record, function, or typedef. +The tparam object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

kind

string

The kind of template parameter (e.g., type, non-type, template).

name

string

The name of the template parameter.

is-pack

bool

Whether the template parameter is a pack expansion.

default

string

The default value of the template parameter.

key

string

The key kind of the template parameter.

constraint

string

The constraint of the template parameter.

type

Type Info Object

The type information of the template parameter.

params

TParam Object[]

The template parameters of the template parameter.

+
+
+

Targ Fields

+
+

The Targ object represents a template argument of a record, function, or typedef. +The targ object has the following properties:

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription

kind

string

The kind of template argument (e.g., type, non-type, template).

is-pack

bool

Whether the template argument is a pack expansion.

type

Type Info Object

The type information of the template argument.

value

string

The value of the template argument.

name

string

The name of the template argument.

template

Template Info Object

The template information of the template argument.

+
+
+

Config Fields

+
+

The Config object represents the configuration object. +It includes all values provided to MrDocs in the configuration file or via the command line. +Please refer to the configuration file reference for more information.

+
+
+
+
+ +
+
+ +
+ + diff --git a/docs/mrdocs/develop/index.html b/docs/mrdocs/develop/index.html new file mode 100644 index 000000000..3c7abe689 --- /dev/null +++ b/docs/mrdocs/develop/index.html @@ -0,0 +1,125 @@ + + + + + + MrDocs :: MrDocs + + + + + + + + + +
+ +
+
+ +

MrDocs

+
+
+MrDocsBanner +
+
+
+
    +
  • +

    Automating C++ reference documentation significantly enhances usability by providing a navigable API and ensuring a single, up-to-date source of truth with minimal effort.

    +
  • +
  • +

    However, documenting C++ poses significant challenges due to discrepancies between the codebase and the public API. Doxygen remains a popular tool, yet it is suboptimal for C++ as it fails to fully comprehend C++ constructs and requires many transformation steps, including the incorporation of many macros within the C++ code. These macros maintain well-formed and ill-formed versions of the code, undermining the goal of unifying the source of truth.

    +
  • +
  • +

    Existing solutions frequently need better maintenance or usability issues, prompting users to revert to Doxygen.

    +
  • +
  • +

    An ideal solution would inherently understand C++ constructs, be actively maintained, and offer diverse options for customizing the output format.

    +
  • +
  • +

    MrDocs embodies these qualities. Supported by full-time developers from the C++ Alliance, MrDocs inherently comprehends C++ constructs without the need for macros and provides various output formats, customizable templates, and plugin support, ensuring it meets the demands of comprehensive and efficient documentation.

    +
  • +
+
+
+
+badge +
+
+ +
+
+ +
+ + diff --git a/docs/mrdocs/develop/install.html b/docs/mrdocs/develop/install.html new file mode 100644 index 000000000..e648d99fb --- /dev/null +++ b/docs/mrdocs/develop/install.html @@ -0,0 +1,1088 @@ + + + + + + Install :: MrDocs + + + + + + + + +
+ +
+
+ +

Install

+
+

Binary Packages

+
+
+

Binary packages are available from our Release Page. +Most users should use these packages.

+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

🪟 Windows

🐧 Linux

📃 Release

📦 7z

📦 msi

📦 zip

📦 tar.xz

📦 tar.gz

v0.0.2

+

July 10, 2024

🔗 MrDocs-0.0.2-win64.7z

+

(20 MB)

🔗 MrDocs-0.0.2-win64.msi

+

(37 MB)

🔗 MrDocs-0.0.2-win64.zip

+

(37 MB)

🔗 MrDocs-0.0.2-Linux.tar.xz

+

(52 MB)

🔗 MrDocs-0.0.2-Linux.tar.gz

+

(80 MB)

develop

+

October 24, 2024

🔗 MrDocs-0.0.2-win64.7z

+

(21 MB)

🔗 MrDocs-0.0.2-win64.msi

+

(38 MB)

🔗 MrDocs-0.0.2-win64.zip

+

(39 MB)

🔗 MrDocs-0.0.2-Linux.tar.xz

+

(22 MB)

🔗 MrDocs-0.0.2-Linux.tar.gz

+

(32 MB)

v0.0.1

+

December 1, 2023

🔗 MrDocs-0.0.1-win64.7z

+

(11 MB)

🔗 MrDocs-0.0.1-win64.msi

+

(18 MB)

-

🔗 MrDocs-0.0.1-Linux.tar.xz

+

(19 MB)

🔗 MrDocs-0.0.1-Linux.tar.gz

+

(28 MB)

master

+

December 1, 2023

🔗 MrDocs-0.0.1-win64.7z

+

(20 MB)

🔗 MrDocs-0.0.1-win64.msi

+

(37 MB)

🔗 MrDocs-0.0.1-win64.zip

+

(37 MB)

🔗 MrDocs-0.0.1-Linux.tar.xz

+

(52 MB)

🔗 MrDocs-0.0.1-Linux.tar.gz

+

(80 MB)

+
+
+
+

Install from Source

+
+
+

The following instructions assume we are at a parent directory that’s going to contain both the MrDocs and the third-party dependencies directories.

+
+
+
+
+ <parent-directory>
+  + mrdocs
+  + third-party
+
+
+
+

Clone the MrDocs repository with:

+
+
+
+
git clone https://github.com/cppalliance/mrdocs
+
+
+
+

Also create and go to the third-party directory, where we are going to download and install our dependencies:

+
+
+
+
mkdir third-party
+cd third-party
+
+
+
+ + + + + +
+ + +
+

These instructions assume all dependencies are installed in the third-party directory for simplicity. +Fell free to install them anywhere you want and adjust the main MrDocs configuration command later.

+
+
+
+
+

Fmt

+
+

MrDocs uses the fmt library for formatting strings. +From the third-party directory, you can clone the fmt repository and install it with the following commands:

+
+
+
+
git clone https://github.com/fmtlib/fmt --branch 10.2.1 --depth 1 (1)
+cd fmt
+cmake -S . -B ./build -DCMAKE_BUILD_TYPE=Release -D FMT_DOC=OFF -D FMT_TEST=OFF (2)
+cmake --build ./build --config Release (3)
+cmake --install ./build --prefix ./install (4)
+cd ..
+
+
+
+ + + + + + + + + + + + + + + + + +
1Shallow clones the fmt repository.
2Configure the fmt library with CMake, excluding the documentation and tests.
3Builds the fmt library in the build directory.
4Installs the fmt library in the install directory.
+
+
+ + + + + +
+ + +
+

All instructions in this document assume you are using a CMake version above 3.26. +Binaries are available at CMake’s official website.

+
+
+
+
+

If you prefer using Vcpkg to install dependencies, you can install VcPkg and fmt with the following commands from the third-party directory:

+
+
+
+
+
    +
  • +

    Windows PowerShell

    +
  • +
  • +

    Unix Variants

    +
  • +
+
+
+
+
+
git clone https://github.com/microsoft/vcpkg.git -b master (1)
+cd vcpkg
+bootstrap-vcpkg.bat (2)
+vcpkg.exe install fmt --triplet x64-windows (3)
+
+
+
+ + + + + + + + + + + + + +
1Clones the Vcpkg repository.
2Bootstraps Vcpkg.
3Installs the fmt library.
+
+
+
+
+
+
git clone https://github.com/microsoft/vcpkg.git -b master (1)
+cd vcpkg
+./bootstrap-vcpkg.sh (2)
+./vcpkg install fmt (3)
+
+
+
+ + + + + + + + + + + + + +
1Clones the Vcpkg repository.
2Bootstraps Vcpkg.
3Installs the fmt library.
+
+
+
+
+
+ + + + + +
+ + +
+

You can also install fmt with Vcpkg in Manifest mode. +In manifest mode, you declare your project’s direct dependencies in a manifest file named vcpkg.json. +MrDocs includes a vcpkg.json.example file you can duplicate or create a symlink as vcpkg.json to use this mode. +This file includes all the dependencies MrDocs needs, except for LLVM.

+
+
+

In this mode, VcPkg will create separate installed trees for each project and configuration. +This is the recommended vcpkg mode for most users, according to the vcpkg documentation.

+
+
+
+
+
+

Duktape

+
+

MrDocs uses the duktape library for JavaScript parsing. +From the third-party directory, you can download the duktape source code from the official release:

+
+
+
+
+
    +
  • +

    Windows PowerShell

    +
  • +
  • +

    Unix Variants

    +
  • +
+
+
+
+
+
Invoke-WebRequest -Uri "https://github.com/svaarala/duktape/releases/download/v2.7.0/duktape-2.7.0.tar.xz" -OutFile "duktape-2.7.0.tar.xz" (1)
+
+
+
+ + + + + +
1Downloads the duktape source code.
+
+
+
+
+
+
curl -LJO https://github.com/svaarala/duktape/releases/download/v2.7.0/duktape-2.7.0.tar.xz (1)
+
+
+
+ + + + + +
1Downloads the duktape source code.
+
+
+
+
+
+

Then patch the Duktape source code to provide CMake support.

+
+
+
+
tar -xf duktape-2.7.0.tar.xz (1)
+cp ../mrdocs/third-party/duktape/CMakeLists.txt ./duktape-2.7.0/CMakeLists.txt (2)
+cp ../mrdocs/third-party/duktape/duktapeConfig.cmake.in ./duktape-2.7.0/duktapeConfig.cmake.in (3)
+cd duktape-2.7.0
+
+
+
+ + + + + + + + + + + + + +
1Extracts the duktape source code.
2Patches the source code with a CMakeLists.txt file to the duktape-2.7.0 directory so that we can build it with CMake.
3Copies the duktapeConfig.cmake.in file to the duktape-2.7.0 directory so that we can install it with CMake and find it later from other CMake projects.
+
+
+

Now adjust the duk_config.h file to indicate we are statically building Duktape.

+
+
+
+
+
    +
  • +

    Windows PowerShell

    +
  • +
  • +

    Unix Variants

    +
  • +
+
+
+
+
+
$content = Get-Content -Path "src\duk_config.h" (1)
+$content = $content -replace '#define DUK_F_DLL_BUILD', '#undef DUK_F_DLL_BUILD' (2)
+$content | Set-Content -Path "src\duk_config.h" (3)
+
+
+
+ + + + + + + + + + + + + +
1Read the content of duk_config.h
2Replace the DUK_F_DLL_BUILD macro with #undef DUK_F_DLL_BUILD
3Write the content back to the file
+
+
+
+
+
+
sed -i 's/#define DUK_F_DLL_BUILD/#undef DUK_F_DLL_BUILD/g' "src/duk_config.h" (1)
+
+
+
+ + + + + +
1Disables the DUK_F_DLL_BUILD macro in the duk_config.h file to indicate we are statically building duktape.
+
+
+
+
+
+

And finally install the library with CMake:

+
+
+
+
cmake -S . -B ./build -DCMAKE_BUILD_TYPE=Release (1)
+cmake --build ./build --config Release (2)
+cmake --install ./build --prefix ./install (3)
+
+
+
+ + + + + + + + + + + + + +
1Configures the duktape library with CMake.
2Builds the duktape library in the build directory.
3Installs the duktape library with CMake support in the install directory.
+
+
+

The scripts above downloads the duktape source code, extracts it, and configures it with CMake. +The CMake scripts provided by MrDocs are copied to the duktape-2.7.0 directory to facilitate the build process with CMake and provide CMake installation scripts for other projects.

+
+
+

If you prefer using Vcpkg to install dependencies, you can install duktape with the following commands from the third-party directory:

+
+
+
+
+
    +
  • +

    Windows PowerShell

    +
  • +
  • +

    Unix Variants

    +
  • +
+
+
+
+
+
cd vcpkg
+vcpkg.exe install duktape --triplet x64-windows (1)
+
+
+
+ + + + + +
1Installs the duktape library.
+
+
+
+
+
+
cd vcpkg
+./vcpkg install duktape (1)
+
+
+
+ + + + + +
1Installs the duktape library.
+
+
+
+
+
+ + + + + +
+ + +These examples assume VcPkg is already installed in the third-party/vcpkg directory (see the Fmt section). +
+
+
+
+

Libxml2

+
+

MrDocs uses libxml2 tools for tests. +Only developers need to install this dependency. +Users can skip this step.

+
+
+

From the third-party directory, you can clone the libxml2 repository and install it with the following commands:

+
+
+
+
git clone https://github.com/GNOME/libxml2 --branch v2.12.6 --depth 1 (1)
+cd libxml2
+cmake -S . -B ./build -DCMAKE_BUILD_TYPE=Release -DLIBXML2_WITH_PROGRAMS=ON -DLIBXML2_WITH_FTP=OFF -DLIBXML2_WITH_HTTP=OFF -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_LEGACY=OFF -DLIBXML2_WITH_LZMA=OFF -DLIBXML2_WITH_ZLIB=OFF -DLIBXML2_WITH_ICU=OFF -DLIBXML2_WITH_TESTS=OFF -DLIBXML2_WITH_HTML=ON -DLIBXML2_WITH_C14N=ON -DLIBXML2_WITH_CATALOG=ON -DLIBXML2_WITH_DEBUG=ON -DLIBXML2_WITH_ISO8859X=ON -DLIBXML2_WITH_MEM_DEBUG=OFF -DLIBXML2_WITH_MODULES=ON -DLIBXML2_WITH_OUTPUT=ON -DLIBXML2_WITH_PATTERN=ON -DLIBXML2_WITH_PUSH=ON -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_READER=ON -DLIBXML2_WITH_REGEXPS=ON -DLIBXML2_WITH_SAX1=ON -DLIBXML2_WITH_SCHEMAS=ON -DLIBXML2_WITH_SCHEMATRON=ON -DLIBXML2_WITH_THREADS=ON -DLIBXML2_WITH_THREAD_ALLOC=OFF -DLIBXML2_WITH_TREE=ON -DLIBXML2_WITH_VALID=ON -DLIBXML2_WITH_WRITER=ON -DLIBXML2_WITH_XINCLUDE=ON -DLIBXML2_WITH_XPATH=ON -DLIBXML2_WITH_XPTR=ON (2)
+cmake --build ./build --config Release (3)
+cmake --install ./build --prefix ./install (4)
+cd ..
+
+
+
+ + + + + + + + + + + + + + + + + +
1Shallow clones the libxml2 repository.
2Configure the libxml2 with CMake, excluding the documentation, tests, and unwanted dependencies.
3Builds libxml2 in the build directory.
4Installs libxml2 in the install directory.
+
+
+

If you prefer using Vcpkg to install dependencies, you can install libxml2 with the following commands from the third-party directory:

+
+
+
+
+
    +
  • +

    Windows PowerShell

    +
  • +
  • +

    Unix Variants

    +
  • +
+
+
+
+
+
cd vcpkg
+vcpkg.exe install libxml2[tools] --triplet x64-windows (1)
+
+
+
+ + + + + +
1Installs libxml2.
+
+
+
+
+
+
cd vcpkg
+./vcpkg install libxml2[tools] (1)
+
+
+
+ + + + + +
1Installs libxml2.
+
+
+
+
+
+ + + + + +
+ + +These examples assume VcPkg is already installed in the third-party/vcpkg directory (see the Fmt section). +
+
+
+
+

LLVM

+
+

MrDocs uses LLVM to parse C++ code and extract documentation from it. +It depends on a recent version of LLVM: e1065370

+
+
+

Download:

+
+
+

You can shallow-clone the project from the official repository. +From the third-party directory, run the following commands:

+
+
+
+
mkdir -p llvm-project (1)
+cd llvm-project
+git init (2)
+git remote add origin https://github.com/llvm/llvm-project.git (3)
+git fetch --depth 1 origin e1065370aaacb1b1cb48e77d37d376bf024f4a39 (4)
+git checkout FETCH_HEAD (5)
+
+
+
+ + + + + + + + + + + + + + + + + + + + + +
1Create a directory for the llvm-project instead of cloning it
2Initialize a git repository
3Add the official LLVM repository as a remote
4Fetch the commit we want to use: this allows us to shallow-clone the repository at this commit
5Checkout the commit we want to use
+
+
+

Configure:

+
+
+

The mrdocs/third-party/llvm directory provides CMake presets to build LLVM. +We recommend using preset files as they contain a replicable set of CMake configuration values that can be used for a project. +From third-party/llvm-project, you can copy the CMakePresets.json and CMakeUserPresets.json files to the llvm-project/llvm directory.

+
+
+
+
cp ../../mrdocs/third-party/llvm/CMakePresets.json ./llvm
+cp ../../mrdocs/third-party/llvm/CMakeUserPresets.json ./llvm/CMakeUserPresets.json
+
+
+
+

Run a command such as the following to configure LLVM:

+
+
+
+
+
    +
  • +

    Windows PowerShell

    +
  • +
  • +

    Unix Variants

    +
  • +
+
+
+
+
+
cd llvm
+cmake -S . -B ./build --preset=release-win
+
+
+
+
+
+
+
cd llvm
+cmake -S . -B ./build --preset=release-unix
+
+
+
+
+
+
+

In the example above, we configure a Release version of LLVM for MrDocs. +Choose one of the presets from CMakePresets.json or edit the variants in CMakeUserPresets.json to customize the configurations.

+
+
+ + + + + +
+ + +
+

Developers might also want to build a custom Debug LLVM configuration including optimizations, which allows for faster execution of tests. +The relwithdebinfo and debwithopt presets are provided for this purpose. +Or if you prefer using the command line, set CMAKE_CONFIGURATION_TYPES or CMAKE_BUILD_TYPE to Debug and manually include the optimization flags to -D CMAKE_CXX_FLAGS="/O2 /Zi" (MSVC) or -D CMAKE_CXX_FLAGS="-Og -g".

+
+
+

This should give you an optimized build with all debug features and flags, such as an appropriate _ITERATOR_DEBUG_LEVEL and the /MDd flag in MSVC. +In other platforms, this should give you a release somewhat equivalent to RelWithDebInfo optimized for debugging experience. -Og offers a reasonable level of optimization while maintaining fast compilation and a good debugging experience.

+
+
+
+
+

Build:

+
+
+

Build and install the configured version of LLVM with:

+
+
+
+
cmake --build ./build --config Release --parallel 4
+cmake --install ./build --prefix ../install
+
+
+
+

Replace 4 with the number of cores you want to use for building LLVM.

+
+
+

Return from ./third-party/llvm-project/llvm to the LLVM project directory:

+
+
+
+
cd ../..
+
+
+
+
+

LibC++

+
+

In addition to LLVM, MrDocs requires a deterministic version of the C standard library (LibC) to ensure consistent behavior across various environments. This step is crucial for replicating specific compiler and library configurations.

+
+
+

Download:

+
+
+

Continue using the same LLVM project directory.

+
+
+

Configure:

+
+
+

Configure and build LibC++ using the existing structure:

+
+
+
+
export CXX="./install/bin/clang++"
+export CC="./install/bin/clang"
+
+
+
+

These options set the C and C++ compilers to the ones previously installed by LLVM. +MrDocs only depends on the LibC++ headers, so any compiler that works for this step should be fine.

+
+
+

Run a command such as the following to configure LLVM:

+
+
+
+
+
    +
  • +

    Windows PowerShell

    +
  • +
  • +

    Unix Variants

    +
  • +
+
+
+
+
+
cmake -G Ninja \
+  -S runtimes \
+  -B build-libcxx \
+  -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
+  -DCMAKE_INSTALL_PREFIX="$(pwd)/install" \
+  -DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
+  -DLIBCXXABI_ENABLE_SHARED=OFF \
+  -DLIBCXXABI_ENABLE_STATIC=ON \
+  -DLIBCXX_ENABLE_SHARED=OFF \
+  -DLIBCXX_NO_VCRUNTIME=ON \
+  -DCMAKE_CXX_FLAGS="-D__ORDER_LITTLE_ENDIAN__=1234 -D__ORDER_BIG_ENDIAN__=4321 -D__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__"
+
+
+
+
+
+
+
cmake -G Ninja  \
+  -S runtimes  \
+  -B build-libcxx  \
+  -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind"  \
+  -DCMAKE_INSTALL_PREFIX="$(pwd)/install"
+
+
+
+
+
+
+

Build:

+
+
+

Build and install the configured version of LibC++ with:

+
+
+
+
+
    +
  • +

    Windows PowerShell

    +
  • +
  • +

    Unix Variants

    +
  • +
+
+
+
+
+
ninja -C build-libcxx cxx
+ninja -C build-libcxx install-cxx
+
+
+
+
+
+
+
ninja -C build-libcxx cxx cxxabi unwind
+ninja -C build-libcxx install-cxx install-cxxabi install-unwind
+
+
+
+
+
+
+

Return from ./third-party/llvm-project to the parent directory to build and install MrDocs:

+
+
+
+
cd ../..
+
+
+
+
+

MrDocs

+
+

Return from ./third-party/vcpkg to the parent directory of third-party (the one containing the mrdocs directory) to build and install MrDocs:

+
+
+
+
cd ../..
+
+
+
+

Configure:

+
+
+

You can also configure MrDocs with command line arguments or CMake presets.

+
+
+

Configure with Command Line Arguments:

+
+
+

With the dependencies are available in third-party, you can configure MrDocs with:

+
+
+
+
+
    +
  • +

    Windows PowerShell

    +
  • +
  • +

    Unix Variants

    +
  • +
+
+
+
+
+
cmake -S mrdocs -B build -G "Visual Studio 17 2022" -A x64 -D CMAKE_CONFIGURATION_TYPES="RelWithDebInfo" -D CMAKE_EXPORT_COMPILE_COMMANDS=ON -D LLVM_ROOT="%cd%/third-party/llvm+clang/RelWithDebInfo" -D DUKTAPE_SOURCE_ROOT="%cd%/third-party/duktape-2.7.0" -D CMAKE_TOOLCHAIN_FILE="%cd%/third-party/vcpkg/scripts/buildsystems/vcpkg.cmake"
+
+
+
+
+
+
+
cmake -S mrdocs -B build -D CMAKE_BUILD_TYPE=RelWithDebInfo -D CMAKE_EXPORT_COMPILE_COMMANDS=ON -D LLVM_ROOT="$(pwd)/third-party/llvm+clang/RelWithDebInfo" -D DUKTAPE_SOURCE_ROOT="$(pwd)/third-party/duktape-2.7.0" -D CMAKE_TOOLCHAIN_FILE="$(pwd)/third-party/vcpkg/scripts/buildsystems/vcpkg.cmake"
+
+
+
+
+
+
+

Configure with CMake Presets:

+
+
+

The MrDocs repository also includes a CMakePresets.json file that contains the parameters to configure MrDocs with CMake.

+
+
+

To specify the installation directories, you can use the LLVM_ROOT, DUKTAPE_SOURCE_ROOT, CMAKE_TOOLCHAIN_FILE environment variables. +To specify a generator (-G) and platform name (-A), you can use the CMAKE_GENERATOR and CMAKE_GENERATOR_PLATFORM environment variables.

+
+
+

You can also customize the presets by duplicating and editing the CMakeUserPresets.json.example file in the mrdocs directory. +This is typically more convenient than using environment variables.

+
+
+

Build:

+
+
+

Then build and install MrDocs with:

+
+
+
+
cd build
+cmake --build .
+cmake --install .
+
+
+
+

To customize the installation directory, use the CMAKE_INSTALL_PREFIX option or use the --prefix option for the cmake --install . command. +To customize the C and C++ compilers, use the CMAKE_C_COMPILER and CMAKE_CXX_COMPILER options.

+
+
+ + + + + +
+ + +
+

Developers should also enable -D BUILD_TESTING=ON. +If any custom build of LLVM other than RelWithDebInfo is being used, the LLVM_ROOT variable should be set to the installation directory of that build.

+
+
+
+
+
+
+
+

Package layout

+
+
+

The MrDocs installation directory follows the "Filesystem Hierarchy Standard" (FHS) layout:

+
+
+
    +
  • +

    bin: the MrDocs executable intended to be used by users or invoked from the command line.

    +
  • +
  • +

    share: resource files installed by MrDocs

    +
  • +
  • +

    doc: the MrDocs documentation

    +
  • +
  • +

    include: the MrDocs headers

    +
  • +
  • +

    lib: the MrDocs library

    +
  • +
+
+
+

The FHS layout provides a directory structure that also serves as a widely accepted convention for organizing files and directories in Unix-like systems, but that can be used in any operating system.

+
+
+
+ +
+
+ +
+ + diff --git a/docs/mrdocs/develop/license.html b/docs/mrdocs/develop/license.html new file mode 100644 index 000000000..c2cb4354b --- /dev/null +++ b/docs/mrdocs/develop/license.html @@ -0,0 +1,377 @@ + + + + + + License :: MrDocs + + + + + + + + +
+ +
+
+ +

License

+
+
+
==============================================================================
+The LLVM Project is under the Apache License v2.0 with LLVM Exceptions:
+==============================================================================
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+    1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+    2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+    3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+    4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+    5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+    6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+    7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+    8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+    9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+    END OF TERMS AND CONDITIONS
+
+    APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+    Copyright [yyyy] [name of copyright owner]
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+
+---- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+==============================================================================
+Software from third parties included in the LLVM Project:
+==============================================================================
+The LLVM Project contains third party software which is under different license
+terms. All such code will be identified clearly using at least one of two
+mechanisms:
+1) It will be in a separate directory tree with its own `LICENSE.txt` or
+   `LICENSE` file at the top containing the specific license and restrictions
+   which apply to that software, or
+2) It will contain specific license and restriction terms at the top of every
+   file.
+
+==============================================================================
+Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy):
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+
+ +
+
+ +
+ + diff --git a/docs/mrdocs/develop/usage.html b/docs/mrdocs/develop/usage.html new file mode 100644 index 000000000..e65ca8d9e --- /dev/null +++ b/docs/mrdocs/develop/usage.html @@ -0,0 +1,498 @@ + + + + + + Basic Usage :: MrDocs + + + + + + + + +
+ +
+
+ +

Basic Usage

+
+
+
+

The diagram below illustrates the workflow of the MrDocs documentation tool. +It shows how inputs are transformed step by step into the final documentation output. +Each component in the diagram represents a distinct type of entity:

+
+
+
    +
  • +

    Inputs: Provide the initial parameters and settings required to configure and run the tool. +These include the configuration file and command-line arguments.

    +
  • +
  • +

    Processes: Represent intermediary outputs or data generated during the workflow.

    +
  • +
  • +

    Outputs: The final product, in this case, the generated documentation.

    +
  • +
+
+
graph TD + %% Define styles for visual clarity + classDef input fill:#D1E8FF,stroke:#005CFF,stroke-width:2; + classDef artifact fill:#FFF5D1,stroke:#FFA500,stroke-width:2; + classDef output fill:#D1FFD1,stroke:#008000,stroke-width:2; + + %% Define Inputs + subgraph Inputs + CF[Configuration File] + CL[Command Line Arguments] + end + class CL,CF input + + %% Define Artifacts + subgraph Processes + P[Configuration Options] + CD[Compilation Database] + C[Corpus] + G[Generator] + end + class P artifact + class CD,C,G artifact + + %% Define Outputs + subgraph Outputs + D[Documentation] + end + class D output + + %% Relationships + CF -->|Define| P + CL -->|Define| P + P -->|Defines| CD + CD -->|Extract Symbols| C + C -->|Feeds| G + G -->|Produces| D + + %% Highlight dependencies for clarity + P -->|Influences| G
+
+

In summary:

+
+
+
    +
  • +

    Begin by specifying the configuration file and command-line arguments to set up the options. The configuration options affect all processes.

    +
  • +
  • +

    The configuration options define a Compilation Database. All symbols are extracted with Clang to generate a unified corpus of symbols with their corresponding documentation.

    +
  • +
  • +

    Finally, This corpus is then fed to a Generator that produces the desired documentation.

    +
  • +
+
+
+

For more details on each component, refer to the corresponding sections of this guide.

+
+
+
+
+

MrDocs configuration file

+
+
+

The mrdocs.yml configuration file contains information about the project. +If you’re used to Doxygen, this file is similar to the Doxyfile configuration file.

+
+
+

Here is an example of a mrdocs.yml file:

+
+
+
+
source-root: ../include
+multipage: false
+generate: adoc
+
+
+
+

In many projects, it is common to have the documentation in a docs directory, which can also contain this configuration file.

+
+
+
+
+ <project-directory>
+  + docs
+    + mrdocs.yml
+    + ...
+  + include
+  + src
+  + test
+  + ...
+
+
+
+

The most important information is the source-root option, which determines the root of the source tree relative to the mrdocs.yml file.

+
+
+

The list of all available options can be found in the The Configuration File page.

+
+
+
+
+

MrDocs invocation

+
+
+ + + + + +
+ + +For consistency, these instructions assume you have the mrdocs executable in PATH. +
+
+
+

Basic invocation

+
+

You can invoke MrDocs from the command line with the following command:

+
+
+
+
mrdocs path/to/mrdocs.yml
+
+
+
+

If you are at the path of the mrdocs.yml file, you can simply run:

+
+
+
+
mrdocs
+
+
+
+

You can also specify other commands to MrDocs directly from the command line to set or override options from the mrdocs.yml file (See all options in The Configuration File page).

+
+
+
+
mrdocs path/to/mrdocs.yml --output=../docs/reference
+
+
+
+ + + + + +
+ + +Except for the path to the mrdocs.yml file, all other relative paths are made absolute relative to the mrdocs.yml file. +
+
+
+
+

Compilation databases

+
+

One way to simplify the documentation generation process is by using a compile_commands.json file generated by CMake to determine the source files to process and their compile options. +This file is generated by the CMake configuration step when the CMAKE_EXPORT_COMPILE_COMMANDS option is set to ON.

+
+
+
+
cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+
+
+
+

At this step, you can also add any other flags you want to pass to cmake, such as -DCMAKE_BUILD_TYPE=Release or -DCMAKE_CXX_COMPILER=clang++.

+
+
+ + + + + +
+ + +If you are using the Visual Studio generator, you might need to switch to the Ninja generator to generate the compile_commands.json file. +
+
+
+

This will generate a compile_commands.json file in the build directory containing all commands needed to compile your project. +This file can be used by MrDocs to determine the source files to process and their compile options.

+
+
+
+
mrdocs --compilation-database=../build/compile_commands.json --output=../docs/reference
+
+
+
+

MrDocs will go through all the source files listed in the compile_commands.json file and generate the documentation for them.

+
+
+ + + + + +
+ + +When MrDocs goes through the commands in the compilation database, it will go through the same targets as the compiler. +Only symbols present in these targets will be documented. +In the case of header-only libraries, the symbols will be documented only if they are included in one of these targets. +
+
+
+
+

CMake integration

+
+

It’s common to have different configurations for the documentation generation than for the project build. +This means CMake is often being run just to generate a custom compile_commands.json for the documentation. +Also, the compile_commands.json file is a configuration artifact, which means it often lacks a stable location that can be referenced in the mrdocs.yml configuration file.

+
+
+

Thus, the pattern of using a compile_commands.json file generated by CMake is so common that MrDocs provides a CMake module to simplify the process. +You can let MrDocs generate the compile_commands.json file for you by providing the path to the CMakeLists.txt file of your project.

+
+
+
+
mrdocs --compilation-database=../CMakeLists.txt --output=../docs/reference
+
+
+
+

By providing your CMakeLists.txt file as the reference for you compilation database, MrDocs will automatically run CMake to generate the compile_commands.json file in a temporary directory. +Not only this simplifies the usage but also ensures that the stable compilation database file can be used in the mrdocs.yml configuration file.

+
+
+ + + + + +
+ + +MrDocs does not bundle CMake. +If you want to use this feature, you need to have CMake installed on your system and available in PATH. +
+
+
+

Parameters for cmake, such as -D BUILDING_TEST=OFF -D MRDOCS_BUILD=ON can also be specified with the cmake option in configuration file. +MrDocs will always append the CMAKE_EXPORT_COMPILE_COMMANDS=ON flag to the cmake command.

+
+
+
+

MrDocs Builds

+
+

In many projects, a common pattern is to define a special build configuration for the documentation generation such that:

+
+
+
    +
  1. +

    Tests, examples, and auxiliary targets excluded

    +
  2. +
  3. +

    All header-only files are included in targets

    +
  4. +
  5. +

    Unnecessary sources files are excluded from targets

    +
  6. +
+
+
+

This can usually be achieved by defining a custom target in the CMakeLists.txt with a single source file that includes all the necessary header files.

+
+
+
+
if (MY_PROJECT_MRDOCS_BUILD)
+    # Glob all header files
+    set(INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")
+    file(GLOB_RECURSE HEADER_FILES "${INCLUDE_DIR}/*.hpp")
+
+    # Create a temporary source file that includes all header files
+    set(TEMP_CPP_FILE "${CMAKE_CURRENT_BINARY_DIR}/all_headers.cpp")
+    file(WRITE ${TEMP_CPP_FILE} "// This file is generated automatically by CMake\n\n")
+    foreach(HEADER_FILE ${HEADER_FILES_LIST})
+        file(APPEND ${TEMP_CPP_FILE} "#include \"${HEADER_FILE}\"\n")
+    endforeach()
+
+    # Create a custom target for MrDocs
+    add_library(my_project_mrdocs_target ${TEMP_CPP_FILE})
+
+    # Set any other target properties here
+    target_include_directories(my_project_mrdocs_target PRIVATE ${INCLUDE_DIR})
+    target_link_libraries(my_project_mrdocs_target PRIVATE an_external_library)
+
+    # Don't create any other targets
+    return()
+endif()
+
+
+
+

To use this target, you can run CMake with the MY_PROJECT_MRDOCS_BUILD flag set to ON:

+
+
+
+
mrdocs --cmake="-D MY_PROJECT_MRDOCS_BUILD=ON" --compilation-database=../CMakeLists.txt --output=..\docs\reference
+
+
+
+

Because these paths and options are stable, you can specify them in the mrdocs.yml configuration file.

+
+
+
+
cmake: "-D MY_PROJECT_MRDOCS_BUILD=ON"
+compilation-database: ../CMakeLists.txt
+output: ../docs/reference
+
+
+
+
+
+
+

Extracting Documentation

+
+
+

Unlike other documentation generators, MrDocs only works with valid C++ code. +Instead of partially preprocessing the source files and inferring symbols from potentially ill-formed code, MrDocs relies on the compilation database and Clang to preprocess the source files.

+
+
+

Thus, for each common C++ construct, MrDocs provides commands or options to identify and extract the relevant information as intended by the user. +For instance, a common ill-formed Doxygen pattern to specify a class as an implementation detail is:

+
+
+
+
#ifdef DOCS
+__implementation_defined__
+#else
+impl::f_return_t
+#endif
+f();
+
+
+
+

In this pattern, the user wants to document the function f as implementation_defined f(); because the library contract is that the user should not rely on a specific return type here. +However, this ill-formed pattern is problematic:

+
+
+
    +
  • +

    implementation_defined is not a valid symbol so the code is ill-formed

    +
  • +
  • +

    impl::f_return_t doesn’t express the intent of the user for the documentation

    +
  • +
  • +

    the developer has to effectively maintain two versions of the code

    +
  • +
  • +

    the original source code becomes more and more unreadable

    +
  • +
+
+
+

Instead, when using MrDocs, the same function could be documented as:

+
+
+
+
impl::f_return_t f();
+
+
+
+

And the user can specify that impl as a namespace for implementation details in the configuration file:

+
+
+
+
# ...
+implementation-detail: impl
+# ...
+
+
+
+

The Commands and The Configuration File pages contain a list of all available commands and options to identify and extract the relevant information as intended by the user.

+
+
+

MrDocs provides multiple mechanisms are provided to specify special C++ patterns, such as the example above. +For each common C++ construct that would require macros and two versions of the code, MrDocs provides commands to identify the construct and extract the relevant information as intented by the user.

+
+
+
+ +
+
+ +
+ + diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 000000000..c2a49f4fb --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / diff --git a/docs/search-index.js b/docs/search-index.js new file mode 100644 index 000000000..e62b4ff66 --- /dev/null +++ b/docs/search-index.js @@ -0,0 +1 @@ +antoraSearch.initSearch(lunr, {"index":{"version":"2.3.9","fields":["title","name","text","component"],"fieldVectors":[["title/1-1",[0,32.112]],["name/1-1",[]],["text/1-1",[]],["component/1-1",[]],["title/1",[1,26.149]],["name/1",[1,0.603]],["text/1",[0,2.241,1,3.343,2,2.694,3,2.617,4,1.912,5,1.912,6,4.347,7,5.445,8,4.503,9,3.55,10,3.513,11,3.07,12,2.56,13,2.56,14,2.117,15,2.56,16,3.07,17,2.386,18,4.468,19,2.778,20,3.422,21,3.55,22,4.347,23,1.381,24,2.241,25,2.241,26,6.383,27,3.214,28,3.036,29,5.039,30,2.117,31,3.07,32,2.241,33,2.778,34,3.513,35,5.039,36,5.892,37,2.778,38,2.56,39,3.513,40,3.984,41,3.672,42,3.07,43,3.513,44,3.07,45,2.241,46,2.778,47,3.368,48,3.513,49,2.008,50,2.008,51,3.07,52,3.422,53,3.513,54,3.513,55,2.778,56,3.07,57,3.513,58,3.07,59,2.56,60,4.403,61,3.513,62,3.672,63,3.422,64,2.88,65,2.386,66,2.117,67,2.778,68,2.778,69,2.56,70,2.117,71,2.56,72,2.117,73,5.608,74,5.892,75,3.513,76,3.513,77,2.241,78,5.039,79,3.513,80,1.825,81,1.825]],["component/1",[82,0.319]],["title/2-1",[83,31.463,84,34.77]],["name/2-1",[]],["text/2-1",[]],["component/2-1",[]],["title/2-2",[85,23.973,86,18.197]],["name/2-2",[]],["text/2-2",[]],["component/2-2",[]],["title/2-3",[87,32.112]],["name/2-3",[]],["text/2-3",[]],["component/2-3",[]],["title/2-4",[87,25.38,88,22.743]],["name/2-4",[]],["text/2-4",[]],["component/2-4",[]],["title/2-5",[87,25.38,89,18.953]],["name/2-5",[]],["text/2-5",[]],["component/2-5",[]],["title/2-6",[88,22.743,90,25.38]],["name/2-6",[]],["text/2-6",[]],["component/2-6",[]],["title/2-7",[91,27.393]],["name/2-7",[]],["text/2-7",[]],["component/2-7",[]],["title/2-8",[1,17.085,50,18.802,86,15.043]],["name/2-8",[]],["text/2-8",[]],["component/2-8",[]],["title/2-9",[92,30.332]],["name/2-9",[]],["text/2-9",[]],["component/2-9",[]],["title/2-10",[85,23.973,86,18.197]],["name/2-10",[]],["text/2-10",[]],["component/2-10",[]],["title/2-11",[93,21.306]],["name/2-11",[]],["text/2-11",[]],["component/2-11",[]],["title/2-12",[87,32.112]],["name/2-12",[]],["text/2-12",[]],["component/2-12",[]],["title/2-13",[94,36.684]],["name/2-13",[]],["text/2-13",[]],["component/2-13",[]],["title/2-14",[95,43.993]],["name/2-14",[]],["text/2-14",[]],["component/2-14",[]],["title/2",[89,18.953,96,21.65]],["name/2",[89,0.302,97,0.404]],["text/2",[1,2.321,2,2.925,3,2.564,4,0.271,5,0.271,9,1.407,18,3.928,21,1.996,22,0.601,24,2.241,28,3.15,32,3.008,37,0.394,42,1.49,47,3.943,49,0.285,50,2.214,52,0.912,59,0.363,60,0.435,62,2.56,63,2.249,64,1.492,66,0.3,68,1.349,70,0.809,72,1.226,77,0.857,80,0.259,81,0.886,82,1.472,83,1.609,84,2.281,85,1.725,86,2.843,87,3.149,88,3.973,89,3.368,90,0.601,91,1.107,92,4.14,93,2.688,94,0.363,95,0.435,96,2.5,97,1.298,98,1.062,99,3.202,100,1.585,101,3.525,102,0.498,103,0.601,104,2.797,105,2.064,106,3.655,107,2.448,108,3.385,109,1.609,110,0.363,111,2.214,112,0.943,113,0.746,114,0.318,115,0.318,116,0.824,117,0.498,118,0.498,119,0.943,120,1.49,121,0.435,122,0.943,123,0.363,124,2.931,125,1.49,126,1.705,127,1.349,128,0.394,129,0.394,130,0.498,131,0.363,132,0.498,133,0.498,134,0.498,135,0.979,136,3.55,137,2.064,138,2.256,139,0.338,140,0.435,141,2.692,142,0.498,143,0.498,144,0.435,145,1.482,146,1.701,147,0.498,148,0.435,149,1.062,150,0.394,151,1.585,152,0.394,153,0.394,154,0.394,155,2.064,156,3.519,157,1.609,158,1.062,159,1.49,160,5.25,161,1.49,162,0.498,163,0.498,164,0.498,165,3.786,166,4.048,167,2.894,168,3.745,169,0.943,170,0.943,171,4.336,172,0.824,173,0.498,174,1.343,175,0.687,176,0.318,177,0.435,178,0.435,179,0.498,180,0.435,181,0.943,182,0.498,183,0.498,184,0.363,185,0.435,186,0.363,187,0.363,188,0.394,189,0.363,190,0.435,191,0.498,192,0.338,193,0.498,194,2.034,195,1.49,196,3.313,197,0.318,198,3.192,199,0.498,200,3.063,201,2.942,202,2.942,203,1.158,204,1.174,205,1.343,206,1.062,207,1.705,208,0.363,209,0.435,210,3.436,211,0.498,212,0.687,213,0.394,214,3.279,215,0.435,216,5.152,217,0.809,218,0.687,219,0.824,220,0.912,221,0.943,222,1.062,223,3.653,224,4.988,225,0.498,226,1.158,227,0.498,228,0.498,229,2.764,230,3.313,231,0.824,232,2.249,233,0.338,234,0.498,235,0.394,236,0.338,237,0.435,238,0.498,239,0.363,240,3.426,241,1.705,242,4.333,243,2.414,244,1.996,245,0.943,246,0.943,247,0.435,248,0.498,249,0.435,250,3.874,251,0.394,252,0.394,253,0.687,254,2.04,255,2.512,256,2.04,257,0.943,258,1.778,259,2.502,260,2.619,261,2.502,262,1.609,263,2.281,264,1.343,265,2.61,266,0.824,267,0.943,268,0.943,269,0.943,270,0.943,271,0.943,272,0.746,273,0.943,274,2.502,275,1.572,276,1.482,277,0.394,278,0.338,279,0.435,280,0.943,281,1.902,282,2.386,283,0.975,284,0.338,285,0.3,286,0.3,287,0.363,288,0.498,289,0.498,290,0.435,291,2.064,292,2.863,293,2.863,294,4.333,295,2.502,296,1.407,297,1.609,298,3.7,299,0.824,300,0.687,301,1.343,302,0.943,303,0.943,304,0.943,305,1.174,306,1.174,307,1.174,308,0.943,309,0.285,310,0.601,311,2.335,312,1.778,313,1.158,314,0.498,315,0.394,316,1.343,317,1.705,318,1.49,319,0.824,320,2.863,321,2.034,322,2.034,323,1.705,324,1.382,325,1.349,326,2.04,327,1.49,328,1.705,329,2.04,330,1.243,331,1.49,332,0.943,333,0.824,334,0.363,335,0.498,336,0.498,337,0.746,338,0.394,339,0.435,340,0.435,341,0.498,342,0.746,343,0.498,344,0.3]],["component/2",[82,0.319]],["title/3-1",[345,28.993,346,34.77]],["name/3-1",[]],["text/3-1",[]],["component/3-1",[]],["title/3-2",[86,18.197,347,31.463]],["name/3-2",[]],["text/3-2",[]],["component/3-2",[]],["title/3-3",[1,17.085,50,18.802,86,15.043]],["name/3-3",[]],["text/3-3",[]],["component/3-3",[]],["title/3-4",[89,18.953,96,21.65]],["name/3-4",[]],["text/3-4",[]],["component/3-4",[]],["title/3-5",[86,18.197,348,25.38]],["name/3-5",[]],["text/3-5",[]],["component/3-5",[]],["title/3-6",[88,22.743,168,22.743]],["name/3-6",[]],["text/3-6",[]],["component/3-6",[]],["title/3-7",[101,22.743,136,27.021]],["name/3-7",[]],["text/3-7",[]],["component/3-7",[]],["title/3-8",[349,22.743,350,34.77]],["name/3-8",[]],["text/3-8",[]],["component/3-8",[]],["title/3-9",[351,27.021,352,31.463]],["name/3-9",[]],["text/3-9",[]],["component/3-9",[]],["title/3-10",[330,28.993,353,34.77]],["name/3-10",[]],["text/3-10",[]],["component/3-10",[]],["title/3-11",[93,16.839,354,34.77]],["name/3-11",[]],["text/3-11",[]],["component/3-11",[]],["title/3-12",[348,25.38,355,28.993]],["name/3-12",[]],["text/3-12",[]],["component/3-12",[]],["title/3-13",[93,21.306]],["name/3-13",[]],["text/3-13",[]],["component/3-13",[]],["title/3-14",[200,21.65,356,28.993]],["name/3-14",[]],["text/3-14",[]],["component/3-14",[]],["title/3-15",[25,17.882,106,16.024,200,15.254,357,28.035]],["name/3-15",[]],["text/3-15",[]],["component/3-15",[]],["title/3-16",[25,17.882,104,13.931,200,15.254,358,28.035]],["name/3-16",[]],["text/3-16",[]],["component/3-16",[]],["title/3-17",[359,34.77,360,31.463]],["name/3-17",[]],["text/3-17",[]],["component/3-17",[]],["title/3-18",[361,50.344]],["name/3-18",[]],["text/3-18",[]],["component/3-18",[]],["title/3-19",[244,14.717,362,26.037,363,24.427,364,17.799]],["name/3-19",[]],["text/3-19",[]],["component/3-19",[]],["title/3-20",[3,20.667,243,28.993]],["name/3-20",[]],["text/3-20",[]],["component/3-20",[]],["title/3-21",[92,30.332]],["name/3-21",[]],["text/3-21",[]],["component/3-21",[]],["title/3-22",[365,32.112]],["name/3-22",[]],["text/3-22",[]],["component/3-22",[]],["title/3-23",[197,32.112]],["name/3-23",[]],["text/3-23",[]],["component/3-23",[]],["title/3-24",[366,36.684]],["name/3-24",[]],["text/3-24",[]],["component/3-24",[]],["title/3",[367,34.77,368,28.993]],["name/3",[366,0.846]],["text/3",[0,0.519,1,2.705,2,2.624,3,2.063,4,0.443,5,0.443,6,0.519,7,1.504,8,0.899,9,1.244,11,0.711,13,0.593,14,0.899,15,0.593,17,0.553,18,1.916,20,0.553,21,3.457,22,1.901,23,0.32,24,1.63,25,0.951,27,2.533,28,0.49,30,0.49,31,2.929,33,0.644,37,1.179,38,0.593,41,2.172,45,1.63,47,2.977,49,0.465,50,2.885,52,0.553,59,0.593,63,0.553,64,2.419,65,1.013,66,0.49,69,0.593,70,0.49,72,1.244,80,0.423,81,0.775,82,1.906,83,0.644,85,0.899,86,2.844,87,1.63,88,3.507,89,3.213,90,0.951,91,1.39,92,1.796,93,2.632,94,1.504,96,2.989,97,1.901,98,0.644,99,0.553,100,0.553,101,1.916,103,0.519,104,2.103,105,1.179,106,1.461,111,2.103,113,0.644,123,0.593,124,1.317,127,0.644,135,2.443,136,2.276,139,1.013,141,3.642,144,0.711,145,2.681,149,0.644,150,1.179,151,1.013,152,0.644,168,2.27,171,1.504,175,0.593,176,0.519,187,0.593,189,0.593,192,0.553,196,0.644,197,3.66,198,3.14,200,2.43,209,0.711,210,0.593,212,1.087,213,0.644,214,2.024,215,0.711,216,0.644,218,1.504,219,0.711,220,0.553,223,2.217,226,2.024,229,2.699,231,1.804,232,2.276,233,0.553,236,1.013,239,0.593,243,0.593,244,3.041,247,1.804,255,1.402,258,0.711,259,1.804,260,0.644,272,0.644,275,0.49,278,1.735,281,0.593,282,0.553,283,0.465,284,1.013,285,1.244,286,0.899,290,0.711,291,0.644,296,3.642,299,0.711,300,1.087,309,2.419,310,1.63,315,1.179,326,1.303,330,4.335,331,0.711,333,1.804,334,0.593,337,1.179,342,0.644,344,0.49,345,2.172,346,1.303,347,3.14,348,2.138,349,2.419,350,4.088,351,2.276,352,1.179,353,3.903,354,0.711,355,2.443,359,0.711,360,1.632,362,2.024,364,1.087,365,2.138,366,0.593,367,0.711,368,1.087,369,0.711,370,0.593,371,3.033,372,1.804,373,2.651,374,0.814,375,0.814,376,2.233,377,0.711,378,0.711,379,0.644,380,1.303,381,1.804,382,0.711,383,1.804,384,2.233,385,0.711,386,0.711,387,1.804,388,0.711,389,0.711,390,0.711,391,0.711,392,0.711,393,0.711,394,0.711,395,0.711,396,0.711,397,0.711,398,0.711,399,0.711,400,1.179,401,0.711,402,1.632,403,0.711,404,0.711,405,2.874,406,0.814,407,0.711,408,2.233,409,3.216,410,2.555,411,0.814,412,0.711,413,3.177,414,0.814,415,1.492,416,0.814,417,0.814,418,2.357,419,2.555,420,1.303,421,0.814,422,0.814,423,1.804,424,0.814,425,0.814,426,1.303,427,0.814,428,0.711,429,2.555,430,0.814,431,0.644,432,0.814,433,1.303,434,0.814,435,0.814,436,2.065,437,2.065,438,0.814,439,1.804,440,1.492,441,1.087,442,0.593,443,0.711,444,1.504,445,0.814,446,1.492,447,0.814,448,1.632,449,0.593,450,1.492,451,0.814,452,0.593,453,0.711,454,0.814,455,0.711,456,0.814,457,0.644,458,0.644,459,0.814,460,0.814,461,0.814,462,0.814,463,0.814,464,0.711,465,0.814,466,0.814,467,0.814,468,0.814,469,0.814,470,0.814,471,0.814,472,0.814,473,0.644,474,0.814,475,0.814,476,0.814,477,0.814,478,0.814,479,0.814,480,0.711,481,0.814,482,0.814,483,0.711,484,0.814,485,0.814,486,0.814,487,0.814,488,0.814,489,0.711,490,0.814,491,0.814,492,0.814,493,0.814,494,0.644,495,0.814,496,0.593,497,1.804,498,1.303,499,1.492,500,0.593,501,0.593,502,1.179,503,2.065,504,0.814,505,0.644,506,0.593,507,1.087,508,0.814,509,1.303,510,0.711,511,0.711,512,0.814,513,0.711,514,0.814,515,0.814,516,0.814,517,0.814,518,0.814,519,0.814,520,0.553,521,0.814,522,0.814,523,0.814,524,0.814,525,1.303,526,0.814,527,0.814,528,1.492,529,2.065,530,0.814,531,1.492,532,0.814,533,1.492,534,0.814,535,0.814,536,0.814,537,0.814,538,1.013,539,0.814,540,1.492,541,0.814,542,0.814,543,0.814,544,0.814,545,1.632,546,2.604,547,0.814,548,0.814,549,0.711,550,0.814,551,0.814,552,0.814,553,0.711,554,0.814,555,0.814,556,0.814,557,2.98,558,2.443,559,1.492,560,0.814,561,0.711,562,1.632,563,1.492,564,2.233,565,1.179,566,0.711,567,0.814,568,0.519,569,0.644,570,0.711,571,0.814,572,0.711,573,0.711,574,0.711,575,0.814,576,0.814,577,0.814,578,0.711,579,0.814,580,1.087,581,0.814,582,0.814,583,0.711,584,0.814,585,0.814,586,0.711,587,0.814,588,1.804,589,0.814,590,0.814,591,1.179,592,1.303,593,1.013,594,0.814,595,0.814,596,2.065,597,0.814,598,0.814,599,0.814,600,0.814,601,0.814,602,0.814,603,0.814,604,0.814,605,0.814,606,0.814,607,1.179,608,0.49,609,0.711,610,0.814,611,0.814,612,0.814,613,0.814,614,0.814,615,1.179,616,0.814,617,0.951,618,0.814,619,0.814,620,0.814,621,0.814,622,0.814,623,0.814,624,0.711,625,0.593,626,0.814,627,0.644,628,0.814,629,0.711,630,0.814,631,0.814,632,0.814,633,0.814,634,0.711,635,0.814,636,0.711,637,1.492,638,0.814,639,0.814,640,0.814,641,0.711,642,0.644,643,1.492,644,0.814,645,0.814,646,0.814,647,0.814,648,0.814,649,0.814,650,2.065,651,0.814,652,1.492,653,0.593,654,0.814,655,0.814,656,0.711,657,0.814,658,0.814,659,0.814,660,0.814,661,0.814,662,0.814,663,0.644,664,0.814,665,0.711,666,0.711,667,2.065,668,2.065,669,1.303,670,1.804,671,0.644,672,1.492,673,1.303,674,0.814,675,1.492,676,1.492,677,0.814,678,1.303,679,0.644,680,0.814,681,0.814,682,0.814,683,0.814]],["component/3",[82,0.319]],["title/4",[684,39.809]],["name/4",[684,0.918]],["text/4",[2,2.266,4,2.696,5,2.696,49,4.245,80,2.574,81,4.25,82,1.588,91,2.696,93,2.097,103,3.161,114,3.161,244,4.475,277,6.405,278,5.044,608,2.986,615,6.405,684,3.919,685,4.33,686,4.956,687,7.427,688,4.956,689,7.427,690,4.33,691,4.33,692,4.33]],["component/4",[82,0.319]],["title/5-1",[2,18.197,693,31.463]],["name/5-1",[]],["text/5-1",[]],["component/5-1",[]],["title/5-2",[283,28.776]],["name/5-2",[]],["text/5-2",[]],["component/5-2",[]],["title/5-3",[309,22.743,310,25.38]],["name/5-3",[]],["text/5-3",[]],["component/5-3",[]],["title/5",[203,27.021,694,31.463]],["name/5",[203,0.431,694,0.501]],["text/5",[0,1.084,2,3.389,3,2.881,4,0.925,5,0.925,6,1.821,7,1.239,8,3.145,9,1.72,12,2.69,14,2.605,15,2.081,17,1.155,18,4.236,19,1.344,21,1.72,22,1.821,24,3.539,27,1.084,30,2.224,45,1.084,46,1.344,47,2.472,49,2.755,51,1.486,62,1.239,64,0.972,65,1.939,80,1.483,81,0.883,82,1.866,86,0.778,89,2.643,90,1.084,91,2.623,93,2.464,94,1.239,101,1.632,104,2.594,111,2.472,115,3.329,123,1.239,124,1.084,128,1.344,131,1.239,141,1.024,145,1.239,146,1.239,148,1.486,153,1.344,154,1.344,165,1.486,168,1.632,188,1.344,189,1.239,203,1.939,208,3.151,210,2.081,212,2.081,214,1.155,217,2.904,220,1.155,223,1.72,229,3.539,233,2.937,236,1.155,237,1.486,244,1.024,249,1.486,255,2.507,275,1.024,276,1.239,278,1.939,283,2.983,286,3.342,300,4.412,309,3.328,310,2.354,312,1.486,313,1.155,315,1.344,324,3.274,338,1.344,344,1.72,345,2.081,351,1.155,352,1.344,362,1.155,370,1.239,371,1.155,372,2.495,431,2.919,439,1.486,441,2.081,442,1.239,444,1.239,494,1.344,498,2.495,500,1.239,505,2.919,511,1.486,513,1.486,520,1.155,538,2.507,562,1.344,568,1.084,580,1.239,608,3.648,617,2.354,665,1.486,679,1.344,685,1.486,693,2.919,694,1.344,695,1.486,696,3.512,697,2.855,698,1.7,699,2.855,700,1.7,701,2.258,702,3.691,703,1.7,704,1.7,705,1.7,706,3.226,707,1.7,708,2.855,709,1.7,710,1.7,711,3.691,712,4.82,713,3.226,714,3.691,715,1.344,716,1.7,717,1.7,718,2.495,719,2.855,720,1.486,721,1.486,722,1.486,723,1.486,724,2.495,725,2.69,726,2.855,727,2.495,728,1.7,729,1.7,730,1.7,731,1.486,732,1.486,733,4.561,734,1.7,735,1.7,736,1.7,737,3.779,738,1.7,739,2.258,740,5.22,741,3.779,742,2.855,743,2.081,744,2.258,745,1.486,746,1.344,747,2.937,748,3.226,749,2.258,750,1.7,751,1.7,752,1.7,753,1.344,754,2.258,755,1.7,756,3.226,757,1.7,758,1.7,759,1.7,760,2.855,761,1.344,762,1.7,763,1.7,764,1.7,765,2.495,766,1.7,767,1.7,768,2.258,769,1.7,770,2.258,771,1.7,772,1.7,773,1.7,774,1.7,775,1.486,776,1.7,777,1.486,778,2.919,779,1.7,780,1.486,781,1.7,782,1.486,783,1.7,784,3.226,785,1.344,786,3.691,787,2.855,788,1.486,789,1.7,790,1.7,791,1.7,792,1.7,793,1.7,794,1.7,795,1.7,796,1.7,797,1.7,798,1.486,799,1.7,800,1.486,801,1.7,802,1.7,803,2.855,804,1.7,805,1.7,806,1.7]],["component/5",[82,0.319]],["title/6-1",[93,13.921,744,26.01,807,26.01]],["name/6-1",[]],["text/6-1",[]],["component/6-1",[]],["title/6-2",[93,16.839,275,23.973]],["name/6-2",[]],["text/6-2",[]],["component/6-2",[]],["title/6-3",[2,12.821,91,15.254,296,16.891,591,22.168]],["name/6-3",[]],["text/6-3",[]],["component/6-3",[]],["title/6-4",[23,12.935,324,22.338,808,26.01]],["name/6-4",[]],["text/6-4",[]],["component/6-4",[]],["title/6-5",[88,28.776]],["name/6-5",[]],["text/6-5",[]],["component/6-5",[]],["title/6-6",[23,12.935,104,16.346,349,18.802]],["name/6-6",[]],["text/6-6",[]],["component/6-6",[]],["title/6-7",[23,12.935,296,19.818,809,28.744]],["name/6-7",[]],["text/6-7",[]],["component/6-7",[]],["title/6-8",[23,12.935,296,19.818,507,23.968]],["name/6-8",[]],["text/6-8",[]],["component/6-8",[]],["title/6-9",[23,12.935,124,20.981,349,18.802]],["name/6-9",[]],["text/6-9",[]],["component/6-9",[]],["title/6-10",[23,12.935,275,19.818,349,18.802]],["name/6-10",[]],["text/6-10",[]],["component/6-10",[]],["title/6-11",[23,12.935,223,19.818,349,18.802]],["name/6-11",[]],["text/6-11",[]],["component/6-11",[]],["title/6-12",[23,15.647,40,31.463]],["name/6-12",[]],["text/6-12",[]],["component/6-12",[]],["title/6-13",[23,12.935,28,19.818,349,18.802]],["name/6-13",[]],["text/6-13",[]],["component/6-13",[]],["title/6-14",[23,15.647,284,27.021]],["name/6-14",[]],["text/6-14",[]],["component/6-14",[]],["title/6-15",[23,15.647,810,34.77]],["name/6-15",[]],["text/6-15",[]],["component/6-15",[]],["title/6-16",[23,15.647,811,34.77]],["name/6-16",[]],["text/6-16",[]],["component/6-16",[]],["title/6-17",[23,15.647,97,25.38]],["name/6-17",[]],["text/6-17",[]],["component/6-17",[]],["title/6",[93,21.306]],["name/6",[93,0.491]],["text/6",[0,1.171,1,0.531,2,2.3,3,0.953,4,0.295,5,0.295,6,0.346,8,3.416,9,3.213,14,0.616,16,0.474,17,0.369,18,1.74,21,2.815,22,4.072,23,1.378,24,1.171,25,0.346,27,2.894,28,3.031,30,0.327,32,0.652,33,1.147,38,0.395,40,2.596,44,0.894,45,0.926,46,0.429,47,2.743,49,0.829,50,1.426,52,0.369,55,1.725,56,1.604,63,3.996,64,0.829,66,0.327,67,0.429,70,1.106,71,3.496,72,3.584,73,0.429,77,0.926,80,0.282,81,1.296,82,0.8,86,0.664,88,4.466,89,1.767,90,1.171,91,2.018,92,0.874,93,2.461,96,1.187,97,0.926,99,0.695,100,3.081,104,1.843,106,1.049,107,0.809,109,1.451,111,1.049,114,1.391,115,0.652,120,0.894,124,2.366,129,0.429,131,0.395,141,0.327,146,0.395,159,0.894,161,2.431,166,0.745,167,2.431,168,1.049,171,2.393,175,0.745,176,1.391,185,0.474,186,0.745,187,0.745,188,0.429,189,2.218,190,0.474,192,0.695,197,0.346,200,1.358,202,0.395,212,1.337,216,2.596,217,1.504,220,0.369,223,4.702,224,2.406,226,2.23,229,2.98,230,0.429,232,0.369,236,0.369,239,0.395,240,5.544,254,0.474,260,1.451,261,0.894,262,0.809,263,1.268,274,0.894,275,4.338,276,0.395,277,2.933,278,1.889,281,4.466,282,0.369,283,1.59,284,2.879,286,0.616,287,0.395,295,3.705,296,4.702,313,0.985,318,0.474,319,0.474,324,1.482,330,0.745,334,0.395,338,0.429,344,1.314,348,0.346,349,3.7,351,0.369,355,0.395,356,1.59,365,0.926,368,1.59,371,1.889,405,1.695,408,0.474,409,0.474,412,0.474,413,0.369,418,1.451,420,2.659,433,1.604,441,1.59,442,0.395,444,1.337,455,0.474,457,0.429,458,1.147,464,3.839,473,2.771,480,1.604,483,0.894,489,0.474,494,1.147,496,0.395,500,0.395,501,1.337,505,0.429,507,2.703,510,0.474,520,1.482,545,1.147,546,1.268,558,0.745,565,0.429,566,0.474,568,0.652,569,0.809,570,0.474,580,0.395,583,4.577,591,1.147,592,0.474,593,0.985,609,0.474,615,1.725,617,1.171,656,0.474,663,0.429,669,0.894,679,0.429,696,0.745,701,1.451,706,0.894,731,0.474,746,0.429,761,0.429,768,1.147,770,1.147,777,0.474,784,0.474,785,0.429,788,0.474,800,2.431,808,0.809,809,2.181,810,1.604,811,0.894,812,0.474,813,0.429,814,1.023,815,0.543,816,1.023,817,1.023,818,0.474,819,0.474,820,0.543,821,0.894,822,2.782,823,2.431,824,0.543,825,0.543,826,0.429,827,1.835,828,0.543,829,0.474,830,0.543,831,0.543,832,0.543,833,0.474,834,0.894,835,0.543,836,0.429,837,0.543,838,0.543,839,0.474,840,0.543,841,0.543,842,0.474,843,0.543,844,0.543,845,0.474,846,0.543,847,1.451,848,0.543,849,0.543,850,1.268,851,1.023,852,0.809,853,0.429,854,0.894,855,0.543,856,0.474,857,0.543,858,0.543,859,0.474,860,0.543,861,0.543,862,0.429,863,1.835,864,0.543,865,0.543,866,0.474,867,0.543,868,0.543,869,3.839,870,5.305,871,1.023,872,1.023,873,1.835,874,1.023,875,0.543,876,0.429,877,0.543,878,0.543,879,1.268,880,1.835,881,0.543,882,0.543,883,0.543,884,6.171,885,0.543,886,0.474,887,0.543,888,0.543,889,1.023,890,0.543,891,1.147,892,0.543,893,1.451,894,0.543,895,1.451,896,0.543,897,1.604,898,0.543,899,1.451,900,0.894,901,3.283,902,0.543,903,0.543,904,0.543,905,1.268,906,0.543,907,0.543,908,0.543,909,6.012,910,0.543,911,0.543,912,1.451,913,1.023,914,1.451,915,0.543,916,0.543,917,0.543,918,0.543,919,0.543,920,0.543,921,1.023,922,0.543,923,0.543,924,0.543,925,0.543,926,0.543,927,0.543,928,0.543,929,0.543,930,1.023,931,0.543,932,0.543,933,0.543,934,0.543,935,1.835,936,1.023,937,1.023,938,1.023,939,1.023,940,0.543,941,0.543,942,0.474,943,0.543,944,0.543,945,0.474,946,0.543,947,1.023,948,0.543,949,0.543,950,0.543,951,0.543,952,0.543,953,0.543,954,0.543,955,0.543,956,0.543,957,0.543,958,0.543,959,0.543,960,0.474,961,0.543,962,0.543,963,0.543,964,1.023,965,0.543,966,0.543,967,0.543,968,0.543,969,0.543,970,0.543,971,1.023,972,2.496,973,0.543,974,0.543,975,0.543,976,0.543,977,0.543,978,1.023,979,1.023,980,0.543,981,0.543,982,2.496,983,1.451,984,1.023,985,1.023,986,1.023,987,1.023,988,1.835,989,0.543,990,0.543,991,0.543,992,0.894,993,0.543]],["component/6",[82,0.319]],["title/7",[82,16.131]],["name/7",[572,1.014]],["text/7",[2,2.84,3,2.802,5,2.105,8,3.25,12,3.93,14,3.25,17,2.627,30,3.25,49,2.211,80,2.009,81,2.009,82,1.728,86,1.769,91,2.105,104,2.68,106,2.211,111,3.083,123,2.818,192,2.627,206,3.059,217,2.33,229,3.44,233,2.627,275,2.33,283,2.211,286,2.33,300,3.93,306,3.38,309,4.378,310,3.961,344,3.25,345,2.818,413,2.627,418,3.059,452,2.818,506,2.818,509,3.38,608,2.33,617,2.467,663,3.059,671,3.059,693,3.059,695,3.38,701,3.059,718,3.38,723,3.38,724,3.38,725,3.93,733,4.713,743,4.525,747,2.627,748,3.38,749,3.059,753,3.059,754,3.059,756,3.38,770,4.265,775,3.38,782,3.38,836,3.059,845,4.713,856,3.38,862,3.059,994,3.868,995,3.868,996,3.868,997,3.868,998,4.265,999,3.868,1000,3.868,1001,3.868,1002,3.868,1003,3.38,1004,3.868,1005,3.868,1006,5.394,1007,4.713,1008,3.38,1009,3.868,1010,3.868,1011,3.868,1012,3.868,1013,3.868,1014,3.868,1015,5.394,1016,3.868,1017,3.868,1018,3.868,1019,3.868,1020,3.868,1021,3.38,1022,3.868,1023,3.868]],["component/7",[82,0.319]],["title/8-1",[1024,31.463,1025,31.463]],["name/8-1",[]],["text/8-1",[]],["component/8-1",[]],["title/8-2",[104,19.773,285,23.973]],["name/8-2",[]],["text/8-2",[]],["component/8-2",[]],["title/8-3",[1026,43.993]],["name/8-3",[]],["text/8-3",[]],["component/8-3",[]],["title/8-4",[627,39.809]],["name/8-4",[]],["text/8-4",[]],["component/8-4",[]],["title/8-5",[1027,43.993]],["name/8-5",[]],["text/8-5",[]],["component/8-5",[]],["title/8-6",[625,36.684]],["name/8-6",[]],["text/8-6",[]],["component/8-6",[]],["title/8-7",[1028,43.993]],["name/8-7",[]],["text/8-7",[]],["component/8-7",[]],["title/8-8",[82,16.131]],["name/8-8",[]],["text/8-8",[]],["component/8-8",[]],["title/8-9",[356,28.993,1025,31.463]],["name/8-9",[]],["text/8-9",[]],["component/8-9",[]],["title/8",[285,30.332]],["name/8",[285,0.699]],["text/8",[1,2.439,2,1.318,3,1.801,4,0.358,5,0.358,6,0.419,8,0.396,18,4.234,20,1.167,24,0.419,25,0.419,28,0.738,30,0.738,32,0.781,41,0.479,47,3.476,50,1.23,52,0.446,55,0.968,58,0.574,59,0.479,64,1.23,66,0.738,70,1.035,71,0.479,72,2.38,77,2.654,80,0.893,81,0.636,82,2.281,85,4.323,86,0.984,89,2.237,92,0.738,93,0.278,96,3.182,97,1.373,99,0.831,100,0.446,101,1.45,103,1.096,104,1.585,106,1.647,111,1.647,114,1.096,115,0.419,131,0.479,135,1.252,137,0.52,138,4.91,139,3.293,141,0.396,145,1.252,151,2.957,155,5.184,156,0.892,157,3.947,158,3.947,168,0.982,176,0.419,178,0.574,184,0.479,197,1.373,200,3.619,201,0.892,213,0.52,214,1.723,217,0.396,220,0.446,222,1.359,224,0.52,226,0.831,232,1.462,233,0.446,235,0.52,240,0.52,243,0.892,244,3.008,251,0.52,252,1.359,253,0.892,255,0.831,276,0.892,282,3.078,283,1.647,285,4.475,286,1.297,287,1.252,309,2.258,324,0.446,325,2.742,327,0.574,340,2.217,344,0.738,347,0.968,348,0.419,356,0.892,360,0.52,362,3.786,364,3.534,365,0.419,370,0.479,371,0.446,373,0.52,379,0.52,400,4.242,402,2.007,405,0.446,413,1.167,443,0.574,449,0.892,453,1.07,473,1.702,496,0.479,500,0.479,501,0.479,506,0.479,520,1.167,538,0.446,568,0.419,580,0.892,586,0.574,588,0.574,593,0.446,607,0.52,608,1.297,617,0.419,624,2.787,625,4.199,627,4.689,634,3.96,636,1.07,641,0.574,642,0.968,653,0.892,666,0.574,673,3.804,690,1.502,691,0.574,692,0.574,696,0.479,715,0.52,720,0.574,725,0.479,741,0.574,743,0.892,747,1.956,761,0.968,778,2.742,807,0.52,813,0.52,823,0.574,826,1.702,834,0.574,853,0.968,854,2.217,862,0.52,876,0.52,891,0.52,897,1.502,945,0.574,960,3.452,992,2.217,998,0.52,1024,0.968,1025,0.968,1026,4.238,1027,3.452,1028,1.881,1029,3.72,1030,0.657,1031,0.657,1032,0.657,1033,0.657,1034,0.657,1035,0.657,1036,0.657,1037,0.657,1038,1.224,1039,3.95,1040,2.153,1041,1.224,1042,5.364,1043,2.153,1044,2.153,1045,1.718,1046,2.153,1047,1.224,1048,2.153,1049,1.224,1050,0.657,1051,0.657,1052,0.657,1053,0.657,1054,0.657,1055,0.657,1056,1.224,1057,1.224,1058,3.72,1059,0.657,1060,0.657,1061,0.657,1062,0.657,1063,1.502,1064,2.007,1065,1.502,1066,4.85,1067,3.95,1068,0.657,1069,3.189,1070,1.224,1071,0.657,1072,0.657,1073,0.574,1074,0.657,1075,2.217,1076,1.224,1077,0.657,1078,1.224,1079,0.657,1080,1.718,1081,3.251,1082,1.502,1083,0.657,1084,0.657,1085,2.153,1086,0.657,1087,0.657,1088,2.153,1089,0.657,1090,5.763,1091,3.72,1092,4.16,1093,1.224,1094,2.153,1095,0.657,1096,1.718,1097,1.718,1098,2.153,1099,0.657,1100,1.718,1101,2.538,1102,0.657,1103,1.224,1104,0.657,1105,0.657,1106,1.07,1107,0.657,1108,0.657,1109,0.657,1110,1.224,1111,2.153,1112,0.657,1113,0.657,1114,0.657,1115,1.224,1116,0.657,1117,0.657,1118,2.153,1119,2.538,1120,0.657,1121,0.657,1122,0.657,1123,0.657,1124,2.881,1125,0.657,1126,0.657,1127,1.718,1128,1.224,1129,2.538,1130,1.224,1131,0.657,1132,0.657,1133,0.657,1134,0.657,1135,0.657,1136,0.657,1137,1.224,1138,1.718,1139,0.657,1140,0.657,1141,0.657,1142,0.657,1143,0.657,1144,0.657,1145,0.657,1146,0.657,1147,0.657,1148,0.657,1149,0.657,1150,0.657,1151,0.657,1152,0.657,1153,0.657,1154,0.657,1155,0.657,1156,0.657,1157,0.657,1158,0.657,1159,0.657,1160,0.657,1161,0.657,1162,0.657,1163,0.657,1164,0.657,1165,0.657,1166,0.657,1167,0.657,1168,0.657,1169,0.657,1170,0.657,1171,0.657,1172,0.657,1173,0.657,1174,0.657,1175,0.657,1176,1.224,1177,0.657,1178,0.657,1179,0.657,1180,1.224,1181,0.657,1182,0.657,1183,1.224,1184,0.657,1185,1.224,1186,0.657,1187,1.07,1188,1.718,1189,2.153,1190,1.224,1191,1.718,1192,1.224,1193,1.224,1194,0.657,1195,0.657,1196,0.657,1197,1.224,1198,0.657,1199,1.359,1200,0.657,1201,1.718,1202,0.657,1203,0.657,1204,0.657,1205,0.657,1206,0.657,1207,1.224,1208,0.657,1209,1.224,1210,1.07,1211,0.574,1212,0.657,1213,0.657,1214,0.657,1215,1.224,1216,0.657,1217,0.657,1218,0.657,1219,0.657,1220,2.153,1221,0.657,1222,1.224,1223,0.657,1224,0.657,1225,0.657,1226,2.517,1227,1.224,1228,2.881,1229,0.657,1230,1.224,1231,0.657,1232,0.657,1233,0.657,1234,0.657,1235,0.657,1236,0.657,1237,0.657,1238,0.657,1239,0.657,1240,0.657,1241,2.153,1242,1.224,1243,1.224,1244,0.574,1245,0.657,1246,0.657,1247,0.657,1248,1.07,1249,0.657,1250,1.224,1251,0.657,1252,1.224,1253,0.657,1254,1.224,1255,0.657,1256,0.657,1257,0.657,1258,0.657,1259,1.224,1260,0.657,1261,0.657,1262,0.657,1263,0.657,1264,0.657,1265,0.657,1266,0.657,1267,0.657,1268,0.657,1269,0.657,1270,0.657,1271,0.657,1272,1.224,1273,0.657,1274,0.657,1275,0.657,1276,0.657,1277,0.657]],["component/8",[82,0.319]],["title/9",[1278,39.809]],["name/9",[1278,0.918]],["text/9",[2,1.536,3,1.915,4,0.444,7,0.595,8,0.492,9,0.901,14,3.39,18,2.557,19,0.646,20,1.406,21,0.492,23,0.321,26,1.307,27,0.954,28,2.221,32,0.954,38,0.595,45,0.521,47,3.066,63,0.554,64,1.464,65,0.554,66,2.024,67,0.646,68,1.183,69,0.595,70,3.751,72,2.024,73,2.025,77,0.521,80,0.424,81,0.777,89,2.555,93,0.633,96,0.444,98,2.362,100,2.504,101,1.183,103,0.521,104,2.733,106,3.283,111,2.557,113,2.025,114,0.521,115,0.521,121,0.713,124,0.521,125,0.713,139,0.554,141,0.492,149,1.637,151,1.406,154,1.183,155,1.637,156,1.866,157,1.183,158,1.183,166,1.508,172,1.307,176,1.634,177,0.713,180,1.809,184,0.595,186,1.09,187,1.09,192,3.038,195,1.307,200,0.444,201,0.595,202,0.595,203,0.554,206,3.146,208,3.555,217,1.543,218,0.595,223,0.492,235,2.025,239,1.09,252,0.646,253,1.09,256,2.238,262,1.183,266,1.307,279,1.809,281,2.176,287,2.687,296,2.397,297,1.183,305,2.238,307,1.307,309,0.855,313,1.406,325,0.646,329,0.713,339,1.307,342,0.646,344,0.492,362,1.739,364,1.866,365,2.142,366,2.899,369,4.263,405,1.739,423,5.204,431,1.637,442,0.595,448,1.183,449,1.508,452,0.595,457,0.646,458,1.637,496,1.866,502,0.646,506,1.09,507,0.595,525,0.713,538,5.096,545,0.646,553,2.238,558,3.414,561,1.809,564,0.713,565,1.637,568,0.521,569,2.025,573,0.713,574,0.713,593,0.554,607,0.646,608,0.492,625,2.899,653,0.595,670,0.713,671,0.646,678,0.713,696,1.866,713,0.713,715,1.183,722,1.307,727,0.713,732,1.809,739,1.637,744,1.637,747,1.406,754,0.646,768,0.646,778,1.183,780,3.704,798,1.307,807,1.183,808,1.183,813,3.146,819,0.713,821,4.094,826,0.646,829,0.713,833,0.713,850,0.713,852,0.646,853,0.646,870,1.809,876,1.637,905,0.713,942,0.713,1003,0.713,1008,1.307,1021,0.713,1024,0.646,1064,0.646,1073,1.809,1106,0.713,1187,0.713,1199,1.183,1210,0.713,1211,1.307,1278,5.878,1279,4.878,1280,3.359,1281,0.816,1282,2.561,1283,0.816,1284,0.816,1285,0.816,1286,5.744,1287,2.561,1288,5.363,1289,5.5,1290,2.07,1291,4.474,1292,5.627,1293,3.359,1294,1.496,1295,4.239,1296,2.987,1297,0.816,1298,1.496,1299,1.496,1300,1.496,1301,3.978,1302,0.816,1303,1.496,1304,0.816,1305,0.816,1306,0.816,1307,0.816,1308,0.816,1309,0.816,1310,1.496,1311,3.359,1312,1.496,1313,3.359,1314,5.854,1315,1.307,1316,0.816,1317,2.07,1318,1.307,1319,5.854,1320,1.496,1321,0.816,1322,0.816,1323,0.816,1324,0.816,1325,1.496,1326,0.816,1327,2.561,1328,1.496,1329,2.987,1330,2.987,1331,1.496,1332,0.816,1333,2.07,1334,0.816,1335,0.816,1336,0.816,1337,0.816,1338,0.816,1339,0.816,1340,2.07,1341,2.07,1342,1.496,1343,1.496,1344,2.561,1345,1.496,1346,1.496,1347,2.561,1348,0.816,1349,1.496,1350,1.496,1351,3.978,1352,2.561,1353,2.07,1354,0.816,1355,2.561,1356,0.816,1357,2.07,1358,2.07,1359,0.816,1360,0.816,1361,1.496,1362,1.496,1363,0.816,1364,0.816,1365,0.816,1366,0.816,1367,0.816,1368,0.816,1369,0.816,1370,3.359,1371,0.816,1372,0.816,1373,2.987,1374,0.816,1375,0.816,1376,1.496,1377,2.07,1378,1.496,1379,0.816,1380,0.816,1381,0.816,1382,0.816,1383,0.816,1384,0.816,1385,0.816,1386,1.496,1387,0.816,1388,2.561,1389,0.816,1390,0.816,1391,0.816,1392,0.816,1393,0.816,1394,0.816,1395,0.816,1396,0.816,1397,1.307,1398,0.816,1399,0.816,1400,0.816,1401,2.07,1402,4.239,1403,2.07,1404,2.561,1405,1.496,1406,0.816,1407,1.496,1408,1.496,1409,1.496,1410,1.496,1411,0.816,1412,1.496,1413,0.816,1414,3.359,1415,1.496,1416,0.816,1417,1.496,1418,1.496,1419,0.816,1420,0.816,1421,1.496,1422,3.359,1423,0.816,1424,0.816,1425,0.816,1426,1.496,1427,0.816,1428,1.496,1429,0.816,1430,0.816,1431,0.816,1432,0.816,1433,0.816,1434,0.816,1435,0.816,1436,1.496,1437,1.496,1438,2.07,1439,0.816,1440,0.816,1441,0.816,1442,0.816,1443,0.816,1444,0.816,1445,0.816,1446,1.496,1447,0.713,1448,0.816,1449,0.816,1450,0.816,1451,0.816,1452,1.496,1453,0.816,1454,0.816,1455,1.496,1456,0.816,1457,0.816,1458,0.816,1459,1.496,1460,0.816,1461,0.816,1462,0.816,1463,1.496,1464,0.816,1465,0.816,1466,0.816,1467,0.816,1468,0.816,1469,0.816,1470,0.816,1471,0.816,1472,0.816,1473,2.07,1474,0.816,1475,0.816,1476,0.816,1477,0.816,1478,0.816,1479,2.07,1480,2.07,1481,2.07,1482,0.816,1483,1.496,1484,0.816,1485,0.816,1486,0.816,1487,0.816,1488,0.816,1489,0.816,1490,0.816,1491,0.816,1492,0.816]],["component/9",[82,0.319]],["title/10-1",[82,10.54,89,15.668,96,17.898]],["name/10-1",[]],["text/10-1",[]],["component/10-1",[]],["title/10-2",[82,12.749,1493,34.77]],["name/10-2",[]],["text/10-2",[]],["component/10-2",[]],["title/10-3",[13,28.993,1493,34.77]],["name/10-3",[]],["text/10-3",[]],["component/10-3",[]],["title/10-4",[101,22.743,136,27.021]],["name/10-4",[]],["text/10-4",[]],["component/10-4",[]],["title/10-5",[138,28.993,1494,39.79]],["name/10-5",[]],["text/10-5",[]],["component/10-5",[]],["title/10-6",[82,12.749,85,23.973]],["name/10-6",[]],["text/10-6",[]],["component/10-6",[]],["title/10-7",[2,18.197,168,22.743]],["name/10-7",[]],["text/10-7",[]],["component/10-7",[]],["title/10",[13,28.993,110,28.993]],["name/10",[110,0.846]],["text/10",[0,0.718,1,3.021,2,2.896,3,2.15,4,0.613,5,0.613,6,1.72,9,2.253,12,1.457,14,1.967,15,0.82,18,4.084,20,0.765,21,2.253,22,1.275,27,1.275,30,1.624,32,0.718,41,2.725,45,2.859,47,2.88,49,0.644,50,2.137,62,2.379,64,1.867,65,1.358,66,0.678,69,1.457,70,1.967,71,1.457,72,0.678,77,0.718,80,0.585,81,1.696,82,2.236,85,1.967,86,2.789,88,2.562,89,3.699,90,1.275,91,1.088,92,2.701,93,2.836,96,3.602,99,3.044,101,3.324,103,1.72,104,2.809,105,2.132,106,2.732,107,0.89,108,0.984,109,0.89,110,0.82,111,2.732,114,1.72,115,1.72,116,0.984,127,4.326,128,2.132,129,0.89,135,2.725,136,3.044,137,2.582,138,4.533,139,2.811,140,0.984,141,3.174,146,0.82,150,4.326,151,2.811,152,2.132,153,0.89,156,1.457,160,3.617,166,1.965,168,2.137,171,0.82,175,0.82,176,0.718,184,0.82,186,1.965,196,2.132,197,1.275,198,3.273,200,1.467,201,0.82,202,0.82,204,1.747,208,1.457,210,0.82,214,2.811,217,1.205,218,1.965,222,2.132,223,1.205,226,1.831,229,3.048,230,2.132,232,1.831,236,1.358,244,1.205,251,1.581,253,0.82,255,2.539,272,1.581,282,0.765,283,1.541,284,0.765,285,0.678,286,2.701,291,0.89,297,2.132,309,2.366,310,1.72,313,0.765,334,0.82,337,0.89,348,1.72,351,1.358,355,1.457,365,0.718,368,0.82,370,1.457,371,3.044,373,0.89,376,0.984,377,0.984,378,0.984,379,1.581,380,1.747,381,2.356,382,0.984,383,2.356,384,3.267,385,0.984,386,0.984,387,2.356,388,0.984,389,0.984,390,0.984,391,0.984,392,0.984,393,0.984,394,0.984,395,0.984,396,0.984,397,0.984,398,0.984,399,0.984,400,1.581,401,0.984,402,2.132,403,0.984,404,0.984,405,2.218,407,0.984,413,2.218,426,0.984,428,1.747,441,0.82,444,0.82,448,0.89,449,0.82,452,0.82,497,0.984,501,0.82,502,0.89,520,1.358,538,0.765,549,0.984,558,0.82,562,0.89,568,1.275,578,0.984,593,0.765,608,0.678,617,1.275,629,0.984,642,0.89,653,0.82,721,0.984,725,0.82,737,1.747,739,0.89,743,0.82,745,0.984,746,0.89,747,1.358,749,2.582,753,0.89,765,0.984,785,1.581,812,0.984,818,0.984,836,0.89,839,0.984,842,0.984,852,2.132,859,0.984,866,0.984,869,0.984,879,0.984,884,0.984,886,0.984,891,0.89,900,0.984,998,0.89,1007,1.747,1063,0.984,1064,0.89,1065,1.747,1075,1.747,1081,0.984,1082,0.984,1199,1.581,1226,0.984,1244,0.984,1248,0.984,1315,0.984,1318,0.984,1397,0.984,1447,0.984,1495,1.126,1496,1.999,1497,1.999,1498,1.126,1499,1.999,1500,1.126,1501,1.126,1502,1.126,1503,1.126,1504,1.999,1505,2.696,1506,1.126,1507,2.696,1508,5.039,1509,1.126,1510,1.126,1511,1.126,1512,1.126,1513,1.126,1514,1.126,1515,2.696,1516,1.999,1517,1.999,1518,1.126,1519,1.126,1520,1.126,1521,1.126,1522,1.126,1523,1.999,1524,1.126,1525,1.126,1526,1.126,1527,1.126,1528,1.126,1529,1.126,1530,1.126,1531,1.126,1532,1.126,1533,2.696,1534,1.126,1535,1.126,1536,1.126,1537,1.126,1538,1.126,1539,1.126,1540,1.126,1541,1.126,1542,1.126,1543,1.126,1544,1.126,1545,1.999,1546,1.999,1547,1.126,1548,1.126,1549,1.126,1550,1.999,1551,1.999,1552,1.999,1553,1.126,1554,1.126,1555,2.696,1556,3.266,1557,1.999,1558,1.126,1559,1.999,1560,1.126]],["component/10",[82,0.319]]],"invertedIndex":[["",{"_index":18,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["0",{"_index":320,"title":{},"name":{},"text":{"2":{}},"component":{}}],["0.0.1",{"_index":1058,"title":{},"name":{},"text":{"8":{}},"component":{}}],["0.0.2",{"_index":1039,"title":{},"name":{},"text":{"8":{}},"component":{}}],["1",{"_index":155,"title":{},"name":{},"text":{"2":{},"8":{},"9":{}},"component":{}}],["10",{"_index":1037,"title":{},"name":{},"text":{"8":{}},"component":{}}],["10.2.1",{"_index":1079,"title":{},"name":{},"text":{"8":{}},"component":{}}],["11",{"_index":1059,"title":{},"name":{},"text":{"8":{}},"component":{}}],["160",{"_index":555,"title":{},"name":{},"text":{"3":{}},"component":{}}],["17",{"_index":1245,"title":{},"name":{},"text":{"8":{}},"component":{}}],["18",{"_index":1060,"title":{},"name":{},"text":{"8":{}},"component":{}}],["19",{"_index":1061,"title":{},"name":{},"text":{"8":{}},"component":{}}],["2",{"_index":157,"title":{},"name":{},"text":{"2":{},"8":{},"9":{}},"component":{}}],["2.0",{"_index":1282,"title":{},"name":{},"text":{"9":{}},"component":{}}],["2.7.0",{"_index":1124,"title":{},"name":{},"text":{"8":{}},"component":{}}],["2.7.0.tar.xz",{"_index":1111,"title":{},"name":{},"text":{"8":{}},"component":{}}],["2.7.0/cmakelists.txt",{"_index":1121,"title":{},"name":{},"text":{"8":{}},"component":{}}],["2.7.0/duktapeconfig.cmake.in",{"_index":1123,"title":{},"name":{},"text":{"8":{}},"component":{}}],["20",{"_index":1041,"title":{},"name":{},"text":{"8":{}},"component":{}}],["2003",{"_index":1477,"title":{},"name":{},"text":{"9":{}},"component":{}}],["2004",{"_index":1284,"title":{},"name":{},"text":{"9":{}},"component":{}}],["2019",{"_index":1478,"title":{},"name":{},"text":{"9":{}},"component":{}}],["2022",{"_index":1246,"title":{},"name":{},"text":{"8":{}},"component":{}}],["2023",{"_index":1057,"title":{},"name":{},"text":{"8":{}},"component":{}}],["2024",{"_index":1038,"title":{},"name":{},"text":{"8":{}},"component":{}}],["21",{"_index":1051,"title":{},"name":{},"text":{"8":{}},"component":{}}],["22",{"_index":1054,"title":{},"name":{},"text":{"8":{}},"component":{}}],["24",{"_index":58,"title":{},"name":{},"text":{"1":{},"8":{}},"component":{}}],["28",{"_index":1062,"title":{},"name":{},"text":{"8":{}},"component":{}}],["3",{"_index":158,"title":{},"name":{},"text":{"2":{},"8":{},"9":{}},"component":{}}],["3.26",{"_index":1086,"title":{},"name":{},"text":{"8":{}},"component":{}}],["32",{"_index":1055,"title":{},"name":{},"text":{"8":{}},"component":{}}],["37",{"_index":1044,"title":{},"name":{},"text":{"8":{}},"component":{}}],["38",{"_index":1052,"title":{},"name":{},"text":{"8":{}},"component":{}}],["39",{"_index":1053,"title":{},"name":{},"text":{"8":{}},"component":{}}],["4",{"_index":325,"title":{},"name":{},"text":{"2":{},"8":{},"9":{}},"component":{}}],["4(a",{"_index":1456,"title":{},"name":{},"text":{"9":{}},"component":{}}],["4(b",{"_index":1457,"title":{},"name":{},"text":{"9":{}},"component":{}}],["4(d",{"_index":1458,"title":{},"name":{},"text":{"9":{}},"component":{}}],["5",{"_index":1187,"title":{},"name":{},"text":{"8":{},"9":{}},"component":{}}],["50",{"_index":1306,"title":{},"name":{},"text":{"9":{}},"component":{}}],["52",{"_index":1047,"title":{},"name":{},"text":{"8":{}},"component":{}}],["6",{"_index":1395,"title":{},"name":{},"text":{"9":{}},"component":{}}],["7",{"_index":1400,"title":{},"name":{},"text":{"9":{}},"component":{}}],["7z",{"_index":1031,"title":{},"name":{},"text":{"8":{}},"component":{}}],["8",{"_index":1413,"title":{},"name":{},"text":{"9":{}},"component":{}}],["80",{"_index":1049,"title":{},"name":{},"text":{"8":{}},"component":{}}],["9",{"_index":1290,"title":{},"name":{},"text":{"9":{}},"component":{}}],["__implementation_defined__",{"_index":1554,"title":{},"name":{},"text":{"10":{}},"component":{}}],["_iterator_debug_level",{"_index":1212,"title":{},"name":{},"text":{"8":{}},"component":{}}],["a.al",{"_index":885,"title":{},"name":{},"text":{"6":{}},"component":{}}],["a::b",{"_index":163,"title":{},"name":{},"text":{"2":{}},"component":{}}],["a::f",{"_index":164,"title":{},"name":{},"text":{"2":{}},"component":{}}],["a::g",{"_index":181,"title":{},"name":{},"text":{"2":{}},"component":{}}],["abil",{"_index":882,"title":{},"name":{},"text":{"6":{}},"component":{}}],["abov",{"_index":20,"title":{},"name":{},"text":{"1":{},"3":{},"8":{},"9":{},"10":{}},"component":{}}],["absolut",{"_index":1506,"title":{},"name":{},"text":{"10":{}},"component":{}}],["abstract",{"_index":592,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["accept",{"_index":235,"title":{},"name":{},"text":{"2":{},"8":{},"9":{}},"component":{}}],["access",{"_index":420,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["accompani",{"_index":649,"title":{},"name":{},"text":{"3":{}},"component":{}}],["accord",{"_index":443,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["accur",{"_index":728,"title":{},"name":{},"text":{"5":{}},"component":{}}],["achiev",{"_index":1522,"title":{},"name":{},"text":{"10":{}},"component":{}}],["act",{"_index":279,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["action",{"_index":525,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["actionfactori",{"_index":519,"title":{},"name":{},"text":{"3":{}},"component":{}}],["activ",{"_index":1016,"title":{},"name":{},"text":{"7":{}},"component":{}}],["ad",{"_index":247,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["add",{"_index":253,"title":{},"name":{},"text":{"2":{},"8":{},"9":{},"10":{}},"component":{}}],["add_library(my_project_mrdocs_target",{"_index":1540,"title":{},"name":{},"text":{"10":{}},"component":{}}],["addendum",{"_index":1383,"title":{},"name":{},"text":{"9":{}},"component":{}}],["addit",{"_index":100,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"9":{}},"component":{}}],["addition",{"_index":147,"title":{},"name":{},"text":{"2":{}},"component":{}}],["addon",{"_index":263,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["adjac",{"_index":712,"title":{},"name":{},"text":{"5":{}},"component":{}}],["adjust",{"_index":453,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["adoc",{"_index":109,"title":{},"name":{},"text":{"2":{},"6":{},"10":{}},"component":{}}],["advanc",{"_index":841,"title":{},"name":{},"text":{"6":{}},"component":{}}],["advantag",{"_index":731,"title":{},"name":{},"text":{"5":{},"6":{}},"component":{}}],["advis",{"_index":1434,"title":{},"name":{},"text":{"9":{}},"component":{}}],["affect",{"_index":407,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["ag",{"_index":29,"title":{},"name":{},"text":{"1":{}},"component":{}}],["against",{"_index":1362,"title":{},"name":{},"text":{"9":{}},"component":{}}],["aggreg",{"_index":837,"title":{},"name":{},"text":{"6":{}},"component":{}}],["agre",{"_index":1404,"title":{},"name":{},"text":{"9":{}},"component":{}}],["agreement",{"_index":1393,"title":{},"name":{},"text":{"9":{}},"component":{}}],["alia",{"_index":489,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["alias",{"_index":188,"title":{},"name":{},"text":{"2":{},"5":{},"6":{}},"component":{}}],["aliasedsymbol",{"_index":968,"title":{},"name":{},"text":{"6":{}},"component":{}}],["aliasinfo",{"_index":488,"title":{},"name":{},"text":{"3":{}},"component":{}}],["alleg",{"_index":1366,"title":{},"name":{},"text":{"9":{}},"component":{}}],["allianc",{"_index":1020,"title":{},"name":{},"text":{"7":{}},"component":{}}],["allow",{"_index":276,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{}},"component":{}}],["alon",{"_index":1359,"title":{},"name":{},"text":{"9":{}},"component":{}}],["along",{"_index":819,"title":{},"name":{},"text":{"6":{},"9":{}},"component":{}}],["alongsid",{"_index":1382,"title":{},"name":{},"text":{"9":{}},"component":{}}],["alreadi",{"_index":1137,"title":{},"name":{},"text":{"8":{}},"component":{}}],["altern",{"_index":46,"title":{},"name":{},"text":{"1":{},"5":{},"6":{}},"component":{}}],["although",{"_index":832,"title":{},"name":{},"text":{"6":{}},"component":{}}],["alway",{"_index":210,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"10":{}},"component":{}}],["amount",{"_index":338,"title":{},"name":{},"text":{"2":{},"5":{},"6":{}},"component":{}}],["an_external_librari",{"_index":1544,"title":{},"name":{},"text":{"10":{}},"component":{}}],["anchor",{"_index":899,"title":{},"name":{},"text":{"6":{}},"component":{}}],["and/or",{"_index":1438,"title":{},"name":{},"text":{"9":{}},"component":{}}],["annot",{"_index":1323,"title":{},"name":{},"text":{"9":{}},"component":{}}],["anonym",{"_index":293,"title":{},"name":{},"text":{"2":{}},"component":{}}],["anoth",{"_index":849,"title":{},"name":{},"text":{"6":{}},"component":{}}],["antora",{"_index":616,"title":{},"name":{},"text":{"3":{}},"component":{}}],["anywher",{"_index":1074,"title":{},"name":{},"text":{"8":{}},"component":{}}],["apach",{"_index":1280,"title":{},"name":{},"text":{"9":{}},"component":{}}],["api",{"_index":300,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"7":{}},"component":{}}],["appear",{"_index":1381,"title":{},"name":{},"text":{"9":{}},"component":{}}],["append",{"_index":1519,"title":{},"name":{},"text":{"10":{}},"component":{}}],["appendix",{"_index":1320,"title":{},"name":{},"text":{"9":{}},"component":{}}],["appli",{"_index":305,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["applic",{"_index":431,"title":{},"name":{},"text":{"3":{},"5":{},"9":{}},"component":{}}],["appropri",{"_index":1211,"title":{},"name":{},"text":{"8":{},"9":{}},"component":{}}],["archiv",{"_index":1449,"title":{},"name":{},"text":{"9":{}},"component":{}}],["arg",{"_index":979,"title":{},"name":{},"text":{"6":{}},"component":{}}],["argument",{"_index":226,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"10":{}},"component":{}}],["aris",{"_index":1426,"title":{},"name":{},"text":{"9":{}},"component":{}}],["array",{"_index":981,"title":{},"name":{},"text":{"6":{}},"component":{}}],["arrow_back",{"_index":4,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["arrow_forward",{"_index":5,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"10":{}},"component":{}}],["artifact",{"_index":384,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["asciidoc",{"_index":615,"title":{},"name":{},"text":{"3":{},"4":{},"6":{}},"component":{}}],["assert",{"_index":1444,"title":{},"name":{},"text":{"9":{}},"component":{}}],["assign",{"_index":560,"title":{},"name":{},"text":{"3":{}},"component":{}}],["associ",{"_index":1412,"title":{},"name":{},"text":{"9":{}},"component":{}}],["assum",{"_index":1064,"title":{},"name":{},"text":{"8":{},"9":{},"10":{}},"component":{}}],["ast",{"_index":330,"title":{"3-10":{}},"name":{},"text":{"2":{},"3":{},"6":{}},"component":{}}],["astact",{"_index":533,"title":{},"name":{},"text":{"3":{}},"component":{}}],["astactionfactori",{"_index":534,"title":{},"name":{},"text":{"3":{}},"component":{}}],["astvisitor",{"_index":540,"title":{},"name":{},"text":{"3":{}},"component":{}}],["astvisitor::build",{"_index":541,"title":{},"name":{},"text":{"3":{}},"component":{}}],["astvisitor::traversedecl",{"_index":543,"title":{},"name":{},"text":{"3":{}},"component":{}}],["attach",{"_index":722,"title":{},"name":{},"text":{"5":{},"9":{}},"component":{}}],["attempt",{"_index":505,"title":{},"name":{},"text":{"3":{},"5":{},"6":{}},"component":{}}],["attribut",{"_index":569,"title":{},"name":{},"text":{"3":{},"6":{},"9":{}},"component":{}}],["author",{"_index":1294,"title":{},"name":{},"text":{"9":{}},"component":{}}],["authorship",{"_index":1317,"title":{},"name":{},"text":{"9":{}},"component":{}}],["auto",{"_index":980,"title":{},"name":{},"text":{"6":{}},"component":{}}],["autocomplet",{"_index":118,"title":{},"name":{},"text":{"2":{}},"component":{}}],["autom",{"_index":693,"title":{"5-1":{}},"name":{},"text":{"5":{},"7":{}},"component":{}}],["automat",{"_index":737,"title":{},"name":{},"text":{"5":{},"10":{}},"component":{}}],["auxiliari",{"_index":1520,"title":{},"name":{},"text":{"10":{}},"component":{}}],["avail",{"_index":114,"title":{},"name":{},"text":{"2":{},"4":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["b",{"_index":77,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["back",{"_index":641,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["backend",{"_index":844,"title":{},"name":{},"text":{"6":{}},"component":{}}],["background",{"_index":858,"title":{},"name":{},"text":{"6":{}},"component":{}}],["bad.xml",{"_index":662,"title":{},"name":{},"text":{"3":{}},"component":{}}],["balanc",{"_index":855,"title":{},"name":{},"text":{"6":{}},"component":{}}],["base",{"_index":124,"title":{"6-9":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"9":{}},"component":{}}],["basi",{"_index":1405,"title":{},"name":{},"text":{"9":{}},"component":{}}],["basic",{"_index":13,"title":{"10":{},"10-3":{}},"name":{},"text":{"1":{},"3":{}},"component":{}}],["be",{"_index":891,"title":{},"name":{},"text":{"6":{},"8":{},"10":{}},"component":{}}],["becom",{"_index":765,"title":{},"name":{},"text":{"5":{},"10":{}},"component":{}}],["befor",{"_index":679,"title":{},"name":{},"text":{"3":{},"5":{},"6":{}},"component":{}}],["begin",{"_index":549,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["behalf",{"_index":1330,"title":{},"name":{},"text":{"9":{}},"component":{}}],["behavior",{"_index":213,"title":{},"name":{},"text":{"2":{},"3":{},"8":{}},"component":{}}],["behind",{"_index":774,"title":{},"name":{},"text":{"5":{}},"component":{}}],["below",{"_index":202,"title":{},"name":{},"text":{"2":{},"6":{},"9":{},"10":{}},"component":{}}],["benefici",{"_index":1309,"title":{},"name":{},"text":{"9":{}},"component":{}}],["best",{"_index":706,"title":{},"name":{},"text":{"5":{},"6":{}},"component":{}}],["better",{"_index":1011,"title":{},"name":{},"text":{"7":{}},"component":{}}],["between",{"_index":17,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"7":{}},"component":{}}],["biggest",{"_index":730,"title":{},"name":{},"text":{"5":{}},"component":{}}],["bin",{"_index":1273,"title":{},"name":{},"text":{"8":{}},"component":{}}],["binari",{"_index":1024,"title":{"8-1":{}},"name":{},"text":{"8":{},"9":{}},"component":{}}],["bind",{"_index":121,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["bit",{"_index":556,"title":{},"name":{},"text":{"3":{}},"component":{}}],["bitfield",{"_index":964,"title":{},"name":{},"text":{"6":{}},"component":{}}],["bitfieldwidth",{"_index":966,"title":{},"name":{},"text":{"6":{}},"component":{}}],["block",{"_index":16,"title":{},"name":{},"text":{"1":{},"6":{}},"component":{}}],["bodi",{"_index":271,"title":{},"name":{},"text":{"2":{}},"component":{}}],["boilerpl",{"_index":1445,"title":{},"name":{},"text":{"9":{}},"component":{}}],["bold",{"_index":78,"title":{},"name":{},"text":{"1":{}},"component":{}}],["bool",{"_index":909,"title":{},"name":{},"text":{"6":{}},"component":{}}],["boolean",{"_index":242,"title":{},"name":{},"text":{"2":{}},"component":{}}],["boost.scop",{"_index":688,"title":{},"name":{},"text":{"4":{}},"component":{}}],["boost.url",{"_index":689,"title":{},"name":{},"text":{"4":{}},"component":{}}],["bootstrap",{"_index":1094,"title":{},"name":{},"text":{"8":{}},"component":{}}],["both",{"_index":59,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"8":{}},"component":{}}],["bound",{"_index":988,"title":{},"name":{},"text":{"6":{}},"component":{}}],["bracket",{"_index":1446,"title":{},"name":{},"text":{"9":{}},"component":{}}],["branch",{"_index":1078,"title":{},"name":{},"text":{"8":{}},"component":{}}],["brief",{"_index":60,"title":{},"name":{},"text":{"1":{},"2":{}},"component":{}}],["bug",{"_index":667,"title":{},"name":{},"text":{"3":{}},"component":{}}],["build",{"_index":85,"title":{"2-2":{},"2-10":{},"10-6":{}},"name":{},"text":{"2":{},"3":{},"8":{},"10":{}},"component":{}}],["build_testing=on",{"_index":1269,"title":{},"name":{},"text":{"8":{}},"component":{}}],["building_test=off",{"_index":1518,"title":{},"name":{},"text":{"10":{}},"component":{}}],["built",{"_index":559,"title":{},"name":{},"text":{"3":{}},"component":{}}],["bundl",{"_index":629,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["c",{"_index":309,"title":{"5-3":{}},"name":{},"text":{"2":{},"3":{},"5":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["c[corpu",{"_index":393,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["call",{"_index":429,"title":{},"name":{},"text":{"3":{}},"component":{}}],["capabl",{"_index":638,"title":{},"name":{},"text":{"3":{}},"component":{}}],["carri",{"_index":1374,"title":{},"name":{},"text":{"9":{}},"component":{}}],["case",{"_index":236,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"10":{}},"component":{}}],["categori",{"_index":499,"title":{},"name":{},"text":{"3":{}},"component":{}}],["caus",{"_index":1299,"title":{},"name":{},"text":{"9":{}},"component":{}}],["causal",{"_index":726,"title":{},"name":{},"text":{"5":{}},"component":{}}],["cc=\"./install/bin/clang",{"_index":1224,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cd",{"_index":400,"title":{},"name":{},"text":{"3":{},"8":{},"10":{}},"component":{}}],["cd,c,g",{"_index":395,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["cd[compil",{"_index":392,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["cf",{"_index":398,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["cf[configur",{"_index":388,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["challeng",{"_index":695,"title":{},"name":{},"text":{"5":{},"7":{}},"component":{}}],["champaign",{"_index":1481,"title":{},"name":{},"text":{"9":{}},"component":{}}],["chang",{"_index":768,"title":{},"name":{},"text":{"5":{},"6":{},"9":{}},"component":{}}],["channel",{"_index":680,"title":{},"name":{},"text":{"3":{}},"component":{}}],["charact",{"_index":1425,"title":{},"name":{},"text":{"9":{}},"component":{}}],["charg",{"_index":1344,"title":{},"name":{},"text":{"9":{}},"component":{}}],["check",{"_index":257,"title":{},"name":{},"text":{"2":{}},"component":{}}],["checkout",{"_index":1185,"title":{},"name":{},"text":{"8":{}},"component":{}}],["choos",{"_index":807,"title":{"6-1":{}},"name":{},"text":{"8":{},"9":{}},"component":{}}],["cl",{"_index":399,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["cl,cf",{"_index":390,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["cl[command",{"_index":389,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["claim",{"_index":1355,"title":{},"name":{},"text":{"9":{}},"component":{}}],["clang",{"_index":351,"title":{"3-9":{}},"name":{},"text":{"3":{},"5":{},"6":{},"10":{}},"component":{}}],["clang::mrdocs::configimpl",{"_index":424,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clang::mrdocs::corpusimpl::build",{"_index":530,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clang::mrdocs::fin",{"_index":575,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clang::mrdocs::loadconfig",{"_index":421,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clang::tooling::clangtool",{"_index":515,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clang::tooling::clangtool::run",{"_index":522,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clang::tooling::frontendactionfactori",{"_index":526,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clang::tooling::toolact",{"_index":524,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clang::translationunitdecl",{"_index":544,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clangtool",{"_index":514,"title":{},"name":{},"text":{"3":{}},"component":{}}],["clang’",{"_index":799,"title":{},"name":{},"text":{"5":{}},"component":{}}],["clariti",{"_index":380,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["class",{"_index":21,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"9":{},"10":{}},"component":{}}],["classdef",{"_index":381,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["clearli",{"_index":1471,"title":{},"name":{},"text":{"9":{}},"component":{}}],["clone",{"_index":1066,"title":{},"name":{},"text":{"8":{}},"component":{}}],["close",{"_index":717,"title":{},"name":{},"text":{"5":{}},"component":{}}],["cmake",{"_index":138,"title":{"10-5":{}},"name":{},"text":{"2":{},"8":{},"10":{}},"component":{}}],["cmake\\n\\n",{"_index":1534,"title":{},"name":{},"text":{"10":{}},"component":{}}],["cmake_build_typ",{"_index":1204,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_build_type=relwithdebinfo",{"_index":1255,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_c_compil",{"_index":1266,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_configuration_typ",{"_index":1203,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_configuration_types=\"relwithdebinfo",{"_index":1247,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_current_binary_dir}/all_headers.cpp",{"_index":1531,"title":{},"name":{},"text":{"10":{}},"component":{}}],["cmake_cxx_compil",{"_index":1267,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_cxx_flag",{"_index":1208,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_cxx_flags=\"/o2",{"_index":1205,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_export_compile_command",{"_index":1509,"title":{},"name":{},"text":{"10":{}},"component":{}}],["cmake_export_compile_commands=on",{"_index":1248,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["cmake_gener",{"_index":1262,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_generator_platform",{"_index":1263,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_install_prefix",{"_index":1265,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_root",{"_index":238,"title":{},"name":{},"text":{"2":{}},"component":{}}],["cmake_source_dir}/includ",{"_index":1526,"title":{},"name":{},"text":{"10":{}},"component":{}}],["cmake_toolchain_fil",{"_index":1261,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_toolchain_file=\"$(pwd)/third",{"_index":1258,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake_toolchain_file=\"%cd%/third",{"_index":1253,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmakelists.txt",{"_index":137,"title":{},"name":{},"text":{"2":{},"8":{},"10":{}},"component":{}}],["cmakepresets.json",{"_index":1191,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmakeuserpresets.json",{"_index":1192,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmakeuserpresets.json.exampl",{"_index":1264,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cmake’",{"_index":1087,"title":{},"name":{},"text":{"8":{}},"component":{}}],["code",{"_index":3,"title":{"3-20":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["code.th",{"_index":889,"title":{},"name":{},"text":{"6":{}},"component":{}}],["codebas",{"_index":345,"title":{"3-1":{}},"name":{},"text":{"3":{},"5":{},"7":{}},"component":{}}],["combin",{"_index":113,"title":{},"name":{},"text":{"2":{},"3":{},"9":{}},"component":{}}],["come",{"_index":144,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["command",{"_index":1,"title":{"1":{},"2-8":{},"3-3":{}},"name":{"1":{}},"text":{"1":{},"2":{},"3":{},"6":{},"8":{},"10":{}},"component":{}}],["comment",{"_index":7,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"9":{}},"component":{}}],["commerci",{"_index":1433,"title":{},"name":{},"text":{"9":{}},"component":{}}],["commit",{"_index":1188,"title":{},"name":{},"text":{"8":{}},"component":{}}],["common",{"_index":45,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"9":{},"10":{}},"component":{}}],["commun",{"_index":1333,"title":{},"name":{},"text":{"9":{}},"component":{}}],["compar",{"_index":656,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["compat",{"_index":132,"title":{},"name":{},"text":{"2":{}},"component":{}}],["compet",{"_index":1461,"title":{},"name":{},"text":{"9":{}},"component":{}}],["compil",{"_index":101,"title":{"3-7":{},"10-4":{}},"name":{},"text":{"2":{},"3":{},"5":{},"8":{},"9":{},"10":{}},"component":{}}],["compilation_database.json",{"_index":221,"title":{},"name":{},"text":{"2":{}},"component":{}}],["compilationdatabas",{"_index":440,"title":{},"name":{},"text":{"3":{}},"component":{}}],["compile_commands.json",{"_index":1508,"title":{},"name":{},"text":{"10":{}},"component":{}}],["complet",{"_index":547,"title":{},"name":{},"text":{"3":{}},"component":{}}],["complex",{"_index":784,"title":{},"name":{},"text":{"5":{},"6":{}},"component":{}}],["compli",{"_index":1386,"title":{},"name":{},"text":{"9":{}},"component":{}}],["complianc",{"_index":1451,"title":{},"name":{},"text":{"9":{}},"component":{}}],["compon",{"_index":1497,"title":{},"name":{},"text":{"10":{}},"component":{}}],["comprehend",{"_index":1006,"title":{},"name":{},"text":{"7":{}},"component":{}}],["comprehens",{"_index":723,"title":{},"name":{},"text":{"5":{},"7":{}},"component":{}}],["comput",{"_index":1431,"title":{},"name":{},"text":{"9":{}},"component":{}}],["concaten",{"_index":877,"title":{},"name":{},"text":{"6":{}},"component":{}}],["concept",{"_index":494,"title":{},"name":{},"text":{"3":{},"5":{},"6":{}},"component":{}}],["conceptinfo",{"_index":493,"title":{},"name":{},"text":{"3":{}},"component":{}}],["concurr",{"_index":316,"title":{},"name":{},"text":{"2":{}},"component":{}}],["condit",{"_index":1286,"title":{},"name":{},"text":{"9":{}},"component":{}}],["config",{"_index":97,"title":{"6-17":{}},"name":{"2":{}},"text":{"2":{},"3":{},"6":{},"8":{}},"component":{}}],["configimpl",{"_index":434,"title":{},"name":{},"text":{"3":{}},"component":{}}],["configur",{"_index":96,"title":{"2":{},"3-4":{},"10-1":{}},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["conflict",{"_index":1464,"title":{},"name":{},"text":{"9":{}},"component":{}}],["connect",{"_index":727,"title":{},"name":{},"text":{"5":{},"9":{}},"component":{}}],["consequenti",{"_index":1424,"title":{},"name":{},"text":{"9":{}},"component":{}}],["consid",{"_index":299,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["consist",{"_index":184,"title":{},"name":{},"text":{"2":{},"8":{},"9":{},"10":{}},"component":{}}],["conspicu",{"_index":1337,"title":{},"name":{},"text":{"9":{}},"component":{}}],["const",{"_index":44,"title":{},"name":{},"text":{"1":{},"6":{}},"component":{}}],["constant",{"_index":51,"title":{},"name":{},"text":{"1":{},"5":{}},"component":{}}],["constev",{"_index":937,"title":{},"name":{},"text":{"6":{}},"component":{}}],["constexpr",{"_index":56,"title":{},"name":{},"text":{"1":{},"6":{}},"component":{}}],["constexprkind",{"_index":936,"title":{},"name":{},"text":{"6":{}},"component":{}}],["constinit",{"_index":950,"title":{},"name":{},"text":{"6":{}},"component":{}}],["constitut",{"_index":1367,"title":{},"name":{},"text":{"9":{}},"component":{}}],["constraint",{"_index":972,"title":{},"name":{},"text":{"6":{}},"component":{}}],["constru",{"_index":1384,"title":{},"name":{},"text":{"9":{}},"component":{}}],["construct",{"_index":310,"title":{"5-3":{}},"name":{},"text":{"2":{},"3":{},"5":{},"7":{},"10":{}},"component":{}}],["constructor",{"_index":941,"title":{},"name":{},"text":{"6":{}},"component":{}}],["consum",{"_index":790,"title":{},"name":{},"text":{"5":{}},"component":{}}],["contain",{"_index":64,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["content",{"_index":778,"title":{},"name":{},"text":{"5":{},"8":{},"9":{}},"component":{}}],["context",{"_index":847,"title":{},"name":{},"text":{"6":{}},"component":{}}],["context.th",{"_index":892,"title":{},"name":{},"text":{"6":{}},"component":{}}],["continu",{"_index":327,"title":{},"name":{},"text":{"2":{},"8":{}},"component":{}}],["contract",{"_index":739,"title":{},"name":{},"text":{"5":{},"9":{},"10":{}},"component":{}}],["contribut",{"_index":366,"title":{"3-24":{}},"name":{"3":{}},"text":{"3":{},"9":{}},"component":{}}],["contribution(",{"_index":1358,"title":{},"name":{},"text":{"9":{}},"component":{}}],["contributor",{"_index":369,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["contributori",{"_index":1368,"title":{},"name":{},"text":{"9":{}},"component":{}}],["contributor’",{"_index":367,"title":{"3":{}},"name":{},"text":{"3":{}},"component":{}}],["control",{"_index":98,"title":{},"name":{},"text":{"2":{},"3":{},"9":{}},"component":{}}],["conveni",{"_index":823,"title":{},"name":{},"text":{"6":{},"8":{}},"component":{}}],["convent",{"_index":1277,"title":{},"name":{},"text":{"8":{}},"component":{}}],["convers",{"_index":942,"title":{},"name":{},"text":{"6":{},"9":{}},"component":{}}],["convert",{"_index":433,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["copi",{"_index":287,"title":{},"name":{},"text":{"2":{},"6":{},"8":{},"9":{}},"component":{}}],["copyright",{"_index":1292,"title":{},"name":{},"text":{"9":{}},"component":{}}],["core",{"_index":588,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["coroutin",{"_index":806,"title":{},"name":{},"text":{"5":{}},"component":{}}],["corpu",{"_index":355,"title":{"3-12":{}},"name":{},"text":{"3":{},"6":{},"10":{}},"component":{}}],["corpus::travers",{"_index":581,"title":{},"name":{},"text":{"3":{}},"component":{}}],["corpus::visitor",{"_index":582,"title":{},"name":{},"text":{"3":{}},"component":{}}],["corpusimpl::build",{"_index":563,"title":{},"name":{},"text":{"3":{}},"component":{}}],["correctli",{"_index":328,"title":{},"name":{},"text":{"2":{}},"component":{}}],["correspond",{"_index":1499,"title":{},"name":{},"text":{"10":{}},"component":{}}],["cost",{"_index":511,"title":{},"name":{},"text":{"3":{},"5":{}},"component":{}}],["counterclaim",{"_index":1364,"title":{},"name":{},"text":{"9":{}},"component":{}}],["court",{"_index":1460,"title":{},"name":{},"text":{"9":{}},"component":{}}],["cp",{"_index":1118,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cpp",{"_index":661,"title":{},"name":{},"text":{"3":{}},"component":{}}],["cpplang",{"_index":681,"title":{},"name":{},"text":{"3":{}},"component":{}}],["cppreference.com",{"_index":759,"title":{},"name":{},"text":{"5":{}},"component":{}}],["creat",{"_index":232,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"10":{}},"component":{}}],["cross",{"_index":1363,"title":{},"name":{},"text":{"9":{}},"component":{}}],["crucial",{"_index":1221,"title":{},"name":{},"text":{"8":{}},"component":{}}],["curl",{"_index":1113,"title":{},"name":{},"text":{"8":{}},"component":{}}],["current",{"_index":460,"title":{},"name":{},"text":{"3":{}},"component":{}}],["custom",{"_index":283,"title":{"5-2":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"10":{}},"component":{}}],["customari",{"_index":1398,"title":{},"name":{},"text":{"9":{}},"component":{}}],["customiz",{"_index":782,"title":{},"name":{},"text":{"5":{},"7":{}},"component":{}}],["cv",{"_index":986,"title":{},"name":{},"text":{"6":{}},"component":{}}],["cxx",{"_index":1241,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cxx=\"./install/bin/clang",{"_index":1223,"title":{},"name":{},"text":{"8":{}},"component":{}}],["cxxabi",{"_index":1242,"title":{},"name":{},"text":{"8":{}},"component":{}}],["d",{"_index":139,"title":{},"name":{},"text":{"2":{},"3":{},"8":{},"9":{},"10":{}},"component":{}}],["d[document",{"_index":396,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["d__byte_order__=__order_little_endian__",{"_index":1239,"title":{},"name":{},"text":{"8":{}},"component":{}}],["d__order_big_endian__=4321",{"_index":1238,"title":{},"name":{},"text":{"8":{}},"component":{}}],["d__order_little_endian__=1234",{"_index":1237,"title":{},"name":{},"text":{"8":{}},"component":{}}],["damag",{"_index":1422,"title":{},"name":{},"text":{"9":{}},"component":{}}],["data",{"_index":879,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["databas",{"_index":136,"title":{"3-7":{},"10-4":{}},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["database=../build/compile_commands.json",{"_index":1513,"title":{},"name":{},"text":{"10":{}},"component":{}}],["database=../cmakelists.txt",{"_index":1516,"title":{},"name":{},"text":{"10":{}},"component":{}}],["date",{"_index":754,"title":{},"name":{},"text":{"5":{},"7":{},"9":{}},"component":{}}],["day",{"_index":54,"title":{},"name":{},"text":{"1":{}},"component":{}}],["dcmake_build_type=releas",{"_index":1082,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["dcmake_cxx_compiler=clang",{"_index":1511,"title":{},"name":{},"text":{"10":{}},"component":{}}],["dcmake_cxx_flag",{"_index":1236,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dcmake_export_compile_commands=on",{"_index":1510,"title":{},"name":{},"text":{"10":{}},"component":{}}],["dcmake_install_prefix=\"$(pwd)/instal",{"_index":1230,"title":{},"name":{},"text":{"8":{}},"component":{}}],["deal",{"_index":798,"title":{},"name":{},"text":{"5":{},"9":{}},"component":{}}],["debug",{"_index":340,"title":{},"name":{},"text":{"2":{},"8":{}},"component":{}}],["debwithopt",{"_index":1202,"title":{},"name":{},"text":{"8":{}},"component":{}}],["decemb",{"_index":1056,"title":{},"name":{},"text":{"8":{}},"component":{}}],["decl",{"_index":974,"title":{},"name":{},"text":{"6":{}},"component":{}}],["declar",{"_index":24,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"8":{}},"component":{}}],["decltyp",{"_index":190,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["deduc",{"_index":971,"title":{},"name":{},"text":{"6":{}},"component":{}}],["deduct",{"_index":486,"title":{},"name":{},"text":{"3":{}},"component":{}}],["deem",{"_index":1467,"title":{},"name":{},"text":{"9":{}},"component":{}}],["def",{"_index":973,"title":{},"name":{},"text":{"6":{}},"component":{}}],["default",{"_index":216,"title":{},"name":{},"text":{"2":{},"3":{},"6":{}},"component":{}}],["defaultaccess",{"_index":907,"title":{},"name":{},"text":{"6":{}},"component":{}}],["defend",{"_index":1440,"title":{},"name":{},"text":{"9":{}},"component":{}}],["defin",{"_index":141,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["definit",{"_index":149,"title":{},"name":{},"text":{"2":{},"3":{},"9":{}},"component":{}}],["delet",{"_index":921,"title":{},"name":{},"text":{"6":{}},"component":{}}],["deliber",{"_index":1419,"title":{},"name":{},"text":{"9":{}},"component":{}}],["demand",{"_index":1022,"title":{},"name":{},"text":{"7":{}},"component":{}}],["demo",{"_index":684,"title":{"4":{}},"name":{"4":{}},"text":{"4":{}},"component":{}}],["depend",{"_index":282,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"10":{}},"component":{}}],["deprec",{"_index":958,"title":{},"name":{},"text":{"6":{}},"component":{}}],["depth",{"_index":1080,"title":{},"name":{},"text":{"8":{}},"component":{}}],["deriv",{"_index":423,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["describ",{"_index":1399,"title":{},"name":{},"text":{"9":{}},"component":{}}],["descript",{"_index":63,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"9":{}},"component":{}}],["design",{"_index":203,"title":{"5":{}},"name":{"5":{}},"text":{"2":{},"5":{},"9":{}},"component":{}}],["desir",{"_index":334,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"10":{}},"component":{}}],["destructor",{"_index":943,"title":{},"name":{},"text":{"6":{}},"component":{}}],["detail",{"_index":62,"title":{},"name":{},"text":{"1":{},"2":{},"5":{},"10":{}},"component":{}}],["detect",{"_index":311,"title":{},"name":{},"text":{"2":{}},"component":{}}],["determin",{"_index":297,"title":{},"name":{},"text":{"2":{},"9":{},"10":{}},"component":{}}],["determinist",{"_index":1219,"title":{},"name":{},"text":{"8":{}},"component":{}}],["develop",{"_index":608,"title":{},"name":{},"text":{"3":{},"4":{},"5":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["diagram",{"_index":1496,"title":{},"name":{},"text":{"10":{}},"component":{}}],["differ",{"_index":448,"title":{},"name":{},"text":{"3":{},"9":{},"10":{}},"component":{}}],["difficult",{"_index":736,"title":{},"name":{},"text":{"5":{}},"component":{}}],["difficulti",{"_index":772,"title":{},"name":{},"text":{"5":{}},"component":{}}],["direct",{"_index":496,"title":{},"name":{},"text":{"3":{},"6":{},"8":{},"9":{}},"component":{}}],["directli",{"_index":444,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"10":{}},"component":{}}],["directori",{"_index":200,"title":{"3-14":{},"3-15":{},"3-16":{}},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["disabl",{"_index":1136,"title":{},"name":{},"text":{"8":{}},"component":{}}],["disclaim",{"_index":1401,"title":{},"name":{},"text":{"9":{}},"component":{}}],["discrep",{"_index":1002,"title":{},"name":{},"text":{"7":{}},"component":{}}],["discuss",{"_index":678,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["display",{"_index":339,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["distinct",{"_index":1498,"title":{},"name":{},"text":{"10":{}},"component":{}}],["distribut",{"_index":1288,"title":{},"name":{},"text":{"9":{}},"component":{}}],["diverg",{"_index":738,"title":{},"name":{},"text":{"5":{}},"component":{}}],["divers",{"_index":1017,"title":{},"name":{},"text":{"7":{}},"component":{}}],["divid",{"_index":374,"title":{},"name":{},"text":{"3":{}},"component":{}}],["dlibcxx_enable_shared=off",{"_index":1234,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibcxx_no_vcruntime=on",{"_index":1235,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibcxxabi_enable_shared=off",{"_index":1232,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibcxxabi_enable_static=on",{"_index":1233,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibcxxabi_use_llvm_unwinder=off",{"_index":1231,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_c14n=on",{"_index":1152,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_catalog=on",{"_index":1153,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_debug=on",{"_index":1154,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_ftp=off",{"_index":1143,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_html=on",{"_index":1151,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_http=off",{"_index":1144,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_iconv=off",{"_index":1145,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_icu=off",{"_index":1149,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_iso8859x=on",{"_index":1155,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_legacy=off",{"_index":1146,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_lzma=off",{"_index":1147,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_mem_debug=off",{"_index":1156,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_modules=on",{"_index":1157,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_output=on",{"_index":1158,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_pattern=on",{"_index":1159,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_programs=on",{"_index":1142,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_push=on",{"_index":1160,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_python=off",{"_index":1161,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_reader=on",{"_index":1162,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_regexps=on",{"_index":1163,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_sax1=on",{"_index":1164,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_schemas=on",{"_index":1165,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_schematron=on",{"_index":1166,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_tests=off",{"_index":1150,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_thread_alloc=off",{"_index":1168,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_threads=on",{"_index":1167,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_tree=on",{"_index":1169,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_valid=on",{"_index":1170,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_writer=on",{"_index":1171,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_xinclude=on",{"_index":1172,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_xpath=on",{"_index":1173,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_xptr=on",{"_index":1174,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dlibxml2_with_zlib=off",{"_index":1148,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dllvm_enable_runtimes=\"libcxx;libcxxabi",{"_index":1229,"title":{},"name":{},"text":{"8":{}},"component":{}}],["dllvm_enable_runtimes=\"libcxx;libcxxabi;libunwind",{"_index":1240,"title":{},"name":{},"text":{"8":{}},"component":{}}],["doc",{"_index":6,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"8":{},"10":{}},"component":{}}],["docs/extensions—antora",{"_index":620,"title":{},"name":{},"text":{"3":{}},"component":{}}],["docs/modules/—th",{"_index":619,"title":{},"name":{},"text":{"3":{}},"component":{}}],["docs/refer",{"_index":1548,"title":{},"name":{},"text":{"10":{}},"component":{}}],["docs/—document",{"_index":618,"title":{},"name":{},"text":{"3":{}},"component":{}}],["docs—document",{"_index":361,"title":{"3-18":{}},"name":{},"text":{},"component":{}}],["document",{"_index":2,"title":{"5-1":{},"6-3":{},"10-7":{}},"name":{},"text":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["doesn’t",{"_index":1558,"title":{},"name":{},"text":{"10":{}},"component":{}}],["dogenerateact",{"_index":410,"title":{},"name":{},"text":{"3":{}},"component":{}}],["dom",{"_index":880,"title":{},"name":{},"text":{"6":{}},"component":{}}],["don't",{"_index":1447,"title":{},"name":{},"text":{"9":{},"10":{}},"component":{}}],["done",{"_index":539,"title":{},"name":{},"text":{"3":{}},"component":{}}],["don’t",{"_index":577,"title":{},"name":{},"text":{"3":{}},"component":{}}],["dot",{"_index":857,"title":{},"name":{},"text":{"6":{}},"component":{}}],["dotestact",{"_index":654,"title":{},"name":{},"text":{"3":{}},"component":{}}],["download",{"_index":1069,"title":{},"name":{},"text":{"8":{}},"component":{}}],["doxyfil",{"_index":1502,"title":{},"name":{},"text":{"10":{}},"component":{}}],["doxygen",{"_index":12,"title":{},"name":{},"text":{"1":{},"5":{},"7":{},"10":{}},"component":{}}],["due",{"_index":1001,"title":{},"name":{},"text":{"7":{}},"component":{}}],["duk_config.h",{"_index":1127,"title":{},"name":{},"text":{"8":{}},"component":{}}],["duk_f_dll_build",{"_index":1129,"title":{},"name":{},"text":{"8":{}},"component":{}}],["duk_f_dll_build/#undef",{"_index":1133,"title":{},"name":{},"text":{"8":{}},"component":{}}],["duk_f_dll_build/g",{"_index":1134,"title":{},"name":{},"text":{"8":{}},"component":{}}],["duktap",{"_index":627,"title":{"8-4":{}},"name":{},"text":{"3":{},"8":{}},"component":{}}],["duktape_source_root",{"_index":1260,"title":{},"name":{},"text":{"8":{}},"component":{}}],["duktape_source_root=\"$(pwd)/third",{"_index":1257,"title":{},"name":{},"text":{"8":{}},"component":{}}],["duktape_source_root=\"%cd%/third",{"_index":1251,"title":{},"name":{},"text":{"8":{}},"component":{}}],["duktapeconfig.cmake.in",{"_index":1125,"title":{},"name":{},"text":{"8":{}},"component":{}}],["duplic",{"_index":761,"title":{},"name":{},"text":{"5":{},"6":{},"8":{}},"component":{}}],["dure",{"_index":337,"title":{},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["e",{"_index":75,"title":{},"name":{},"text":{"1":{}},"component":{}}],["e.g",{"_index":583,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["e1065370",{"_index":1178,"title":{},"name":{},"text":{"8":{}},"component":{}}],["e1065370aaacb1b1cb48e77d37d376bf024f4a39",{"_index":1184,"title":{},"name":{},"text":{"8":{}},"component":{}}],["each",{"_index":405,"title":{},"name":{},"text":{"3":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["easi",{"_index":814,"title":{},"name":{},"text":{"6":{}},"component":{}}],["easier",{"_index":829,"title":{},"name":{},"text":{"6":{},"9":{}},"component":{}}],["easili",{"_index":843,"title":{},"name":{},"text":{"6":{}},"component":{}}],["ebo",{"_index":804,"title":{},"name":{},"text":{"5":{}},"component":{}}],["edit",{"_index":80,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["editor",{"_index":122,"title":{},"name":{},"text":{"2":{}},"component":{}}],["editori",{"_index":1321,"title":{},"name":{},"text":{"9":{}},"component":{}}],["effect",{"_index":746,"title":{},"name":{},"text":{"5":{},"6":{},"10":{}},"component":{}}],["effici",{"_index":1023,"title":{},"name":{},"text":{"7":{}},"component":{}}],["effort",{"_index":724,"title":{},"name":{},"text":{"5":{},"7":{}},"component":{}}],["elabor",{"_index":1324,"title":{},"name":{},"text":{"9":{}},"component":{}}],["electron",{"_index":1331,"title":{},"name":{},"text":{"9":{}},"component":{}}],["element",{"_index":873,"title":{},"name":{},"text":{"6":{}},"component":{}}],["em",{"_index":76,"title":{},"name":{},"text":{"1":{}},"component":{}}],["embed",{"_index":266,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["embedd",{"_index":267,"title":{},"name":{},"text":{"2":{}},"component":{}}],["embodi",{"_index":1018,"title":{},"name":{},"text":{"7":{}},"component":{}}],["enabl",{"_index":1268,"title":{},"name":{},"text":{"8":{}},"component":{}}],["enclos",{"_index":172,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["encount",{"_index":878,"title":{},"name":{},"text":{"6":{}},"component":{}}],["end",{"_index":218,"title":{},"name":{},"text":{"2":{},"3":{},"9":{},"10":{}},"component":{}}],["endforeach",{"_index":1539,"title":{},"name":{},"text":{"10":{}},"component":{}}],["endif",{"_index":1545,"title":{},"name":{},"text":{"10":{}},"component":{}}],["endors",{"_index":1488,"title":{},"name":{},"text":{"9":{}},"component":{}}],["engin",{"_index":708,"title":{},"name":{},"text":{"5":{}},"component":{}}],["enhanc",{"_index":996,"title":{},"name":{},"text":{"7":{}},"component":{}}],["ensur",{"_index":998,"title":{},"name":{},"text":{"7":{},"8":{},"10":{}},"component":{}}],["entireti",{"_index":1470,"title":{},"name":{},"text":{"9":{}},"component":{}}],["entiti",{"_index":558,"title":{},"name":{},"text":{"3":{},"6":{},"9":{},"10":{}},"component":{}}],["entri",{"_index":408,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["enum",{"_index":260,"title":{},"name":{},"text":{"2":{},"3":{},"6":{}},"component":{}}],["enumer",{"_index":483,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["enumeratorinfo",{"_index":482,"title":{},"name":{},"text":{"3":{}},"component":{}}],["enuminfo",{"_index":468,"title":{},"name":{},"text":{"3":{}},"component":{}}],["environ",{"_index":1220,"title":{},"name":{},"text":{"8":{}},"component":{}}],["equival",{"_index":834,"title":{},"name":{},"text":{"6":{},"8":{}},"component":{}}],["error",{"_index":259,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["especi",{"_index":48,"title":{},"name":{},"text":{"1":{}},"component":{}}],["even",{"_index":342,"title":{},"name":{},"text":{"2":{},"3":{},"9":{}},"component":{}}],["event",{"_index":1415,"title":{},"name":{},"text":{"9":{}},"component":{}}],["everyth",{"_index":269,"title":{},"name":{},"text":{"2":{}},"component":{}}],["exampl",{"_index":103,"title":{},"name":{},"text":{"2":{},"3":{},"4":{},"8":{},"9":{},"10":{}},"component":{}}],["except",{"_index":365,"title":{"3-22":{}},"name":{},"text":{"3":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["exceptionspec",{"_index":946,"title":{},"name":{},"text":{"6":{}},"component":{}}],["exclud",{"_index":156,"title":{},"name":{},"text":{"2":{},"8":{},"9":{},"10":{}},"component":{}}],["exclus",{"_index":195,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["execut",{"_index":653,"title":{},"name":{},"text":{"3":{},"8":{},"9":{},"10":{}},"component":{}}],["exercis",{"_index":1310,"title":{},"name":{},"text":{"9":{}},"component":{}}],["exist",{"_index":233,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"7":{},"8":{}},"component":{}}],["exit",{"_index":647,"title":{},"name":{},"text":{"3":{}},"component":{}}],["expans",{"_index":983,"title":{},"name":{},"text":{"6":{}},"component":{}}],["expect",{"_index":231,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["experi",{"_index":1215,"title":{},"name":{},"text":{"8":{}},"component":{}}],["explan",{"_index":112,"title":{},"name":{},"text":{"2":{}},"component":{}}],["explicit",{"_index":935,"title":{},"name":{},"text":{"6":{}},"component":{}}],["explicitli",{"_index":67,"title":{},"name":{},"text":{"1":{},"6":{},"9":{}},"component":{}}],["explicitspec",{"_index":947,"title":{},"name":{},"text":{"6":{}},"component":{}}],["export",{"_index":1222,"title":{},"name":{},"text":{"8":{}},"component":{}}],["expr",{"_index":989,"title":{},"name":{},"text":{"6":{}},"component":{}}],["express",{"_index":313,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"9":{},"10":{}},"component":{}}],["extend",{"_index":898,"title":{},"name":{},"text":{"6":{}},"component":{}}],["extens",{"_index":621,"title":{},"name":{},"text":{"3":{}},"component":{}}],["extern",{"_index":274,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["extra",{"_index":665,"title":{},"name":{},"text":{"3":{},"5":{}},"component":{}}],["extract",{"_index":168,"title":{"3-6":{},"10-7":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"8":{},"10":{}},"component":{}}],["f",{"_index":1556,"title":{},"name":{},"text":{"10":{}},"component":{}}],["f0",{"_index":170,"title":{},"name":{},"text":{"2":{}},"component":{}}],["f1",{"_index":173,"title":{},"name":{},"text":{"2":{}},"component":{}}],["face",{"_index":771,"title":{},"name":{},"text":{"5":{}},"component":{}}],["facilit",{"_index":720,"title":{},"name":{},"text":{"5":{},"8":{}},"component":{}}],["factori",{"_index":535,"title":{},"name":{},"text":{"3":{}},"component":{}}],["fail",{"_index":663,"title":{},"name":{},"text":{"3":{},"6":{},"7":{}},"component":{}}],["failur",{"_index":329,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["fals",{"_index":108,"title":{},"name":{},"text":{"2":{},"10":{}},"component":{}}],["familiar",{"_index":758,"title":{},"name":{},"text":{"5":{}},"component":{}}],["fast",{"_index":1216,"title":{},"name":{},"text":{"8":{}},"component":{}}],["faster",{"_index":1200,"title":{},"name":{},"text":{"8":{}},"component":{}}],["featur",{"_index":373,"title":{},"name":{},"text":{"3":{},"8":{},"10":{}},"component":{}}],["fed",{"_index":1500,"title":{},"name":{},"text":{"10":{}},"component":{}}],["fee",{"_index":1435,"title":{},"name":{},"text":{"9":{}},"component":{}}],["feed",{"_index":401,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["fell",{"_index":1072,"title":{},"name":{},"text":{"8":{}},"component":{}}],["fetch",{"_index":1183,"title":{},"name":{},"text":{"8":{}},"component":{}}],["fetch_head",{"_index":1186,"title":{},"name":{},"text":{"8":{}},"component":{}}],["few",{"_index":685,"title":{},"name":{},"text":{"4":{},"5":{}},"component":{}}],["fh",{"_index":1272,"title":{},"name":{},"text":{"8":{}},"component":{}}],["field",{"_index":23,"title":{"6-4":{},"6-6":{},"6-7":{},"6-8":{},"6-9":{},"6-10":{},"6-11":{},"6-12":{},"6-13":{},"6-14":{},"6-15":{},"6-16":{},"6-17":{}},"name":{},"text":{"1":{},"3":{},"6":{},"9":{}},"component":{}}],["fieldinfo",{"_index":475,"title":{},"name":{},"text":{"3":{}},"component":{}}],["fifti",{"_index":1304,"title":{},"name":{},"text":{"9":{}},"component":{}}],["file",{"_index":89,"title":{"2":{},"2-5":{},"3-4":{},"10-1":{}},"name":{"2":{}},"text":{"2":{},"3":{},"5":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["file(append",{"_index":1537,"title":{},"name":{},"text":{"10":{}},"component":{}}],["file(glob_recurs",{"_index":1527,"title":{},"name":{},"text":{"10":{}},"component":{}}],["file(writ",{"_index":1532,"title":{},"name":{},"text":{"10":{}},"component":{}}],["filenam",{"_index":993,"title":{},"name":{},"text":{"6":{}},"component":{}}],["files/golden",{"_index":660,"title":{},"name":{},"text":{"3":{}},"component":{}}],["filesystem",{"_index":1270,"title":{},"name":{},"text":{"8":{}},"component":{}}],["fill:#d1e8ff,stroke:#005cff,strok",{"_index":382,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["fill:#d1ffd1,stroke:#008000,strok",{"_index":386,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["fill:#fff5d1,stroke:#ffa500,strok",{"_index":385,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["filter",{"_index":87,"title":{"2-3":{},"2-4":{},"2-5":{},"2-12":{}},"name":{},"text":{"2":{},"3":{}},"component":{}}],["filters.symbol",{"_index":304,"title":{},"name":{},"text":{"2":{}},"component":{}}],["filters.symbols.exclud",{"_index":308,"title":{},"name":{},"text":{"2":{}},"component":{}}],["filters.symbols.includ",{"_index":174,"title":{},"name":{},"text":{"2":{}},"component":{}}],["final",{"_index":348,"title":{"3-5":{},"3-12":{}},"name":{},"text":{"3":{},"6":{},"8":{},"10":{}},"component":{}}],["find",{"_index":666,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["fine",{"_index":178,"title":{},"name":{},"text":{"2":{},"8":{}},"component":{}}],["first",{"_index":498,"title":{},"name":{},"text":{"3":{},"5":{}},"component":{}}],["fit",{"_index":1408,"title":{},"name":{},"text":{"9":{}},"component":{}}],["fix",{"_index":675,"title":{},"name":{},"text":{"3":{}},"component":{}}],["fixtur",{"_index":659,"title":{},"name":{},"text":{"3":{}},"component":{}}],["flag",{"_index":222,"title":{},"name":{},"text":{"2":{},"8":{},"10":{}},"component":{}}],["fmt",{"_index":1026,"title":{"8-3":{}},"name":{},"text":{"8":{}},"component":{}}],["fmt_doc=off",{"_index":1083,"title":{},"name":{},"text":{"8":{}},"component":{}}],["fmt_test=off",{"_index":1084,"title":{},"name":{},"text":{"8":{}},"component":{}}],["follow",{"_index":72,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["foo",{"_index":207,"title":{},"name":{},"text":{"2":{}},"component":{}}],["footer",{"_index":268,"title":{},"name":{},"text":{"2":{}},"component":{}}],["forc",{"_index":755,"title":{},"name":{},"text":{"5":{}},"component":{}}],["foreach(header_fil",{"_index":1535,"title":{},"name":{},"text":{"10":{}},"component":{}}],["forget",{"_index":769,"title":{},"name":{},"text":{"5":{}},"component":{}}],["form",{"_index":14,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"7":{},"9":{},"10":{}},"component":{}}],["format",{"_index":8,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"7":{},"8":{},"9":{}},"component":{}}],["forward",{"_index":631,"title":{},"name":{},"text":{"3":{}},"component":{}}],["found",{"_index":116,"title":{},"name":{},"text":{"2":{},"10":{}},"component":{}}],["free",{"_index":1073,"title":{},"name":{},"text":{"8":{},"9":{}},"component":{}}],["frequent",{"_index":1010,"title":{},"name":{},"text":{"7":{}},"component":{}}],["friend",{"_index":480,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["friendinfo",{"_index":479,"title":{},"name":{},"text":{"3":{}},"component":{}}],["front",{"_index":861,"title":{},"name":{},"text":{"6":{}},"component":{}}],["frontend",{"_index":437,"title":{},"name":{},"text":{"3":{}},"component":{}}],["full",{"_index":509,"title":{},"name":{},"text":{"3":{},"7":{}},"component":{}}],["fulli",{"_index":306,"title":{},"name":{},"text":{"2":{},"7":{}},"component":{}}],["function",{"_index":22,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"10":{}},"component":{}}],["functioninfo",{"_index":466,"title":{},"name":{},"text":{"3":{}},"component":{}}],["furnish",{"_index":1486,"title":{},"name":{},"text":{"9":{}},"component":{}}],["further",{"_index":528,"title":{},"name":{},"text":{"3":{}},"component":{}}],["g",{"_index":402,"title":{},"name":{},"text":{"3":{},"8":{},"10":{}},"component":{}}],["g0",{"_index":182,"title":{},"name":{},"text":{"2":{}},"component":{}}],["g[gener",{"_index":394,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["gener",{"_index":93,"title":{"6":{},"2-11":{},"3-11":{},"3-13":{},"6-1":{},"6-2":{}},"name":{"6":{}},"text":{"2":{},"3":{},"4":{},"5":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["generator//layouts/singl",{"_index":867,"title":{},"name":{},"text":{"6":{}},"component":{}}],["generator//parti",{"_index":871,"title":{},"name":{},"text":{"6":{}},"component":{}}],["generator/common/parti",{"_index":875,"title":{},"name":{},"text":{"6":{}},"component":{}}],["get",{"_index":1495,"title":{},"name":{},"text":{"10":{}},"component":{}}],["git",{"_index":1067,"title":{},"name":{},"text":{"8":{}},"component":{}}],["github",{"_index":672,"title":{},"name":{},"text":{"3":{}},"component":{}}],["github/check_info_nodes_support.sh",{"_index":504,"title":{},"name":{},"text":{"3":{}},"component":{}}],["give",{"_index":1210,"title":{},"name":{},"text":{"8":{},"9":{}},"component":{}}],["glob",{"_index":1524,"title":{},"name":{},"text":{"10":{}},"component":{}}],["global",{"_index":584,"title":{},"name":{},"text":{"3":{}},"component":{}}],["go",{"_index":1065,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["goal",{"_index":856,"title":{},"name":{},"text":{"6":{},"7":{}},"component":{}}],["goe",{"_index":866,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["golden",{"_index":652,"title":{},"name":{},"text":{"3":{}},"component":{}}],["good",{"_index":1217,"title":{},"name":{},"text":{"8":{}},"component":{}}],["goodwil",{"_index":1429,"title":{},"name":{},"text":{"9":{}},"component":{}}],["govern",{"_index":1454,"title":{},"name":{},"text":{"9":{}},"component":{}}],["gplv2",{"_index":1459,"title":{},"name":{},"text":{"9":{}},"component":{}}],["grain",{"_index":179,"title":{},"name":{},"text":{"2":{}},"component":{}}],["grant",{"_index":1295,"title":{},"name":{},"text":{"9":{}},"component":{}}],["graph",{"_index":377,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["graph.if",{"_index":883,"title":{},"name":{},"text":{"6":{}},"component":{}}],["greet",{"_index":36,"title":{},"name":{},"text":{"1":{}},"component":{}}],["greet(person",{"_index":43,"title":{},"name":{},"text":{"1":{}},"component":{}}],["grossli",{"_index":1420,"title":{},"name":{},"text":{"9":{}},"component":{}}],["group",{"_index":902,"title":{},"name":{},"text":{"6":{}},"component":{}}],["grow",{"_index":767,"title":{},"name":{},"text":{"5":{}},"component":{}}],["guid",{"_index":368,"title":{"3":{}},"name":{},"text":{"3":{},"6":{},"10":{}},"component":{}}],["guideinfo",{"_index":485,"title":{},"name":{},"text":{"3":{}},"component":{}}],["hand",{"_index":209,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["handlebar",{"_index":863,"title":{},"name":{},"text":{"6":{}},"component":{}}],["handler",{"_index":644,"title":{},"name":{},"text":{"3":{}},"component":{}}],["happen",{"_index":529,"title":{},"name":{},"text":{"3":{}},"component":{}}],["hardwar",{"_index":335,"title":{},"name":{},"text":{"2":{}},"component":{}}],["harmless",{"_index":1442,"title":{},"name":{},"text":{"9":{}},"component":{}}],["hash",{"_index":290,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["hasnouniqueaddress",{"_index":965,"title":{},"name":{},"text":{"6":{}},"component":{}}],["hasoverrideattr",{"_index":925,"title":{},"name":{},"text":{"6":{}},"component":{}}],["hastrailingreturn",{"_index":926,"title":{},"name":{},"text":{"6":{}},"component":{}}],["have",{"_index":716,"title":{},"name":{},"text":{"5":{}},"component":{}}],["header",{"_index":255,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"8":{},"10":{}},"component":{}}],["header_fil",{"_index":1528,"title":{},"name":{},"text":{"10":{}},"component":{}}],["header_files_list",{"_index":1536,"title":{},"name":{},"text":{"10":{}},"component":{}}],["header_file}\\\"\\n",{"_index":1538,"title":{},"name":{},"text":{"10":{}},"component":{}}],["helper",{"_index":789,"title":{},"name":{},"text":{"5":{}},"component":{}}],["here",{"_index":128,"title":{},"name":{},"text":{"2":{},"5":{},"10":{}},"component":{}}],["herebi",{"_index":1341,"title":{},"name":{},"text":{"9":{}},"component":{}}],["herein",{"_index":1391,"title":{},"name":{},"text":{"9":{}},"component":{}}],["here’",{"_index":102,"title":{},"name":{},"text":{"2":{}},"component":{}}],["hidden",{"_index":803,"title":{},"name":{},"text":{"5":{}},"component":{}}],["hierarchi",{"_index":1271,"title":{},"name":{},"text":{"8":{}},"component":{}}],["higher",{"_index":828,"title":{},"name":{},"text":{"6":{}},"component":{}}],["highlight",{"_index":403,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["hint",{"_index":280,"title":{},"name":{},"text":{"2":{}},"component":{}}],["hold",{"_index":1441,"title":{},"name":{},"text":{"9":{}},"component":{}}],["holder",{"_index":1492,"title":{},"name":{},"text":{"9":{}},"component":{}}],["home",{"_index":994,"title":{},"name":{},"text":{"7":{}},"component":{}}],["hour",{"_index":53,"title":{},"name":{},"text":{"1":{}},"component":{}}],["hours_in_day",{"_index":57,"title":{},"name":{},"text":{"1":{}},"component":{}}],["hpp",{"_index":199,"title":{},"name":{},"text":{"2":{}},"component":{}}],["html",{"_index":277,"title":{},"name":{},"text":{"2":{},"4":{},"6":{}},"component":{}}],["http://llvm.org",{"_index":1484,"title":{},"name":{},"text":{"9":{}},"component":{}}],["http://www.apache.org/licens",{"_index":1285,"title":{},"name":{},"text":{"9":{}},"component":{}}],["http://www.apache.org/licenses/licens",{"_index":1453,"title":{},"name":{},"text":{"9":{}},"component":{}}],["https://cpplang.slack.com",{"_index":683,"title":{},"name":{},"text":{"3":{}},"component":{}}],["https://github.com/cppalliance/mrdoc",{"_index":1068,"title":{},"name":{},"text":{"8":{}},"component":{}}],["https://github.com/cppalliance/mrdocs/issu",{"_index":674,"title":{},"name":{},"text":{"3":{}},"component":{}}],["https://github.com/cppalliance/mrdocs/pul",{"_index":677,"title":{},"name":{},"text":{"3":{}},"component":{}}],["https://github.com/fmtlib/fmt",{"_index":1077,"title":{},"name":{},"text":{"8":{}},"component":{}}],["https://github.com/gnome/libxml2",{"_index":1140,"title":{},"name":{},"text":{"8":{}},"component":{}}],["https://github.com/llvm/llvm",{"_index":1181,"title":{},"name":{},"text":{"8":{}},"component":{}}],["https://github.com/microsoft/vcpkg.git",{"_index":1093,"title":{},"name":{},"text":{"8":{}},"component":{}}],["https://github.com/svaarala/duktape/releases/download/v2.7.0/duktap",{"_index":1110,"title":{},"name":{},"text":{"8":{}},"component":{}}],["https://llvm.org/docs/developerpolicy.html#legaci",{"_index":1475,"title":{},"name":{},"text":{"9":{}},"component":{}}],["https://mrdocs.com/demo",{"_index":686,"title":{},"name":{},"text":{"4":{}},"component":{}}],["https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json",{"_index":133,"title":{},"name":{},"text":{"2":{}},"component":{}}],["hypothet",{"_index":820,"title":{},"name":{},"text":{"6":{}},"component":{}}],["i.",{"_index":953,"title":{},"name":{},"text":{"6":{}},"component":{}}],["id",{"_index":120,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["ideal",{"_index":718,"title":{},"name":{},"text":{"5":{},"7":{}},"component":{}}],["ident",{"_index":567,"title":{},"name":{},"text":{"3":{}},"component":{}}],["identif",{"_index":1448,"title":{},"name":{},"text":{"9":{}},"component":{}}],["identifi",{"_index":186,"title":{},"name":{},"text":{"2":{},"6":{},"9":{},"10":{}},"component":{}}],["ifdef",{"_index":1553,"title":{},"name":{},"text":{"10":{}},"component":{}}],["ignor",{"_index":194,"title":{},"name":{},"text":{"2":{}},"component":{}}],["ii",{"_index":1302,"title":{},"name":{},"text":{"9":{}},"component":{}}],["iii",{"_index":1308,"title":{},"name":{},"text":{"9":{}},"component":{}}],["ill",{"_index":749,"title":{},"name":{},"text":{"5":{},"7":{},"10":{}},"component":{}}],["illinoi",{"_index":1479,"title":{},"name":{},"text":{"9":{}},"component":{}}],["illinois/ncsa",{"_index":1476,"title":{},"name":{},"text":{"9":{}},"component":{}}],["illog",{"_index":427,"title":{},"name":{},"text":{"3":{}},"component":{}}],["illustr",{"_index":818,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["immedi",{"_index":648,"title":{},"name":{},"text":{"3":{}},"component":{}}],["immens",{"_index":797,"title":{},"name":{},"text":{"5":{}},"component":{}}],["impl",{"_index":204,"title":{},"name":{},"text":{"2":{},"10":{}},"component":{}}],["impl::f_return_t",{"_index":1555,"title":{},"name":{},"text":{"10":{}},"component":{}}],["implement",{"_index":196,"title":{},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["implementation_defin",{"_index":1557,"title":{},"name":{},"text":{"10":{}},"component":{}}],["impli",{"_index":732,"title":{},"name":{},"text":{"5":{},"9":{}},"component":{}}],["implicit",{"_index":455,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["implicitli",{"_index":896,"title":{},"name":{},"text":{"6":{}},"component":{}}],["import",{"_index":502,"title":{},"name":{},"text":{"3":{},"9":{},"10":{}},"component":{}}],["improv",{"_index":713,"title":{},"name":{},"text":{"5":{},"9":{}},"component":{}}],["inabl",{"_index":1427,"title":{},"name":{},"text":{"9":{}},"component":{}}],["inaccess",{"_index":294,"title":{},"name":{},"text":{"2":{}},"component":{}}],["incident",{"_index":1423,"title":{},"name":{},"text":{"9":{}},"component":{}}],["includ",{"_index":106,"title":{"3-15":{}},"name":{},"text":{"2":{},"3":{},"6":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["include/mrdocs/adt—data",{"_index":589,"title":{},"name":{},"text":{"3":{}},"component":{}}],["include/mrdocs/dom—th",{"_index":590,"title":{},"name":{},"text":{"3":{}},"component":{}}],["include/mrdocs/metadata—info",{"_index":594,"title":{},"name":{},"text":{"3":{}},"component":{}}],["include/mrdocs/support—vari",{"_index":595,"title":{},"name":{},"text":{"3":{}},"component":{}}],["include/mrdocs/—th",{"_index":587,"title":{},"name":{},"text":{"3":{}},"component":{}}],["include/—th",{"_index":357,"title":{"3-15":{}},"name":{},"text":{},"component":{}}],["include_dir",{"_index":1542,"title":{},"name":{},"text":{"10":{}},"component":{}}],["include_dir}/*.hpp",{"_index":1529,"title":{},"name":{},"text":{"10":{}},"component":{}}],["inclus",{"_index":307,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["incorpor",{"_index":1008,"title":{},"name":{},"text":{"7":{},"9":{}},"component":{}}],["incur",{"_index":1443,"title":{},"name":{},"text":{"9":{}},"component":{}}],["indemn",{"_index":1436,"title":{},"name":{},"text":{"9":{}},"component":{}}],["indemnifi",{"_index":1439,"title":{},"name":{},"text":{"9":{}},"component":{}}],["index",{"_index":572,"title":{},"name":{"7":{}},"text":{"3":{}},"component":{}}],["indic",{"_index":853,"title":{},"name":{},"text":{"6":{},"8":{},"9":{}},"component":{}}],["indirect",{"_index":1298,"title":{},"name":{},"text":{"9":{}},"component":{}}],["individu",{"_index":180,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["infer",{"_index":497,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["influenc",{"_index":404,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["info",{"_index":349,"title":{"3-8":{},"6-6":{},"6-9":{},"6-10":{},"6-11":{},"6-13":{}},"name":{},"text":{"3":{},"6":{}},"component":{}}],["inform",{"_index":9,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"9":{},"10":{}},"component":{}}],["infring",{"_index":1357,"title":{},"name":{},"text":{"9":{}},"component":{}}],["inher",{"_index":1015,"title":{},"name":{},"text":{"7":{}},"component":{}}],["init",{"_index":1179,"title":{},"name":{},"text":{"8":{}},"component":{}}],["initi",{"_index":501,"title":{},"name":{},"text":{"3":{},"6":{},"8":{},"10":{}},"component":{}}],["inlin",{"_index":130,"title":{},"name":{},"text":{"2":{}},"component":{}}],["input",{"_index":198,"title":{},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["input.fil",{"_index":303,"title":{},"name":{},"text":{"2":{}},"component":{}}],["input.includ",{"_index":302,"title":{},"name":{},"text":{"2":{}},"component":{}}],["insert",{"_index":273,"title":{},"name":{},"text":{"2":{}},"component":{}}],["instal",{"_index":285,"title":{"8":{},"8-2":{}},"name":{"8":{}},"text":{"2":{},"3":{},"8":{},"10":{}},"component":{}}],["instanc",{"_index":426,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["instead",{"_index":251,"title":{},"name":{},"text":{"2":{},"8":{},"10":{}},"component":{}}],["institut",{"_index":1360,"title":{},"name":{},"text":{"9":{}},"component":{}}],["instruct",{"_index":1063,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["int",{"_index":35,"title":{},"name":{},"text":{"1":{}},"component":{}}],["integ",{"_index":318,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["integr",{"_index":1494,"title":{"10-5":{}},"name":{},"text":{},"component":{}}],["intend",{"_index":370,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"10":{}},"component":{}}],["intent",{"_index":1559,"title":{},"name":{},"text":{"10":{}},"component":{}}],["intention",{"_index":1328,"title":{},"name":{},"text":{"9":{}},"component":{}}],["interact",{"_index":406,"title":{},"name":{},"text":{"3":{}},"component":{}}],["interest",{"_index":794,"title":{},"name":{},"text":{"5":{}},"component":{}}],["interfac",{"_index":507,"title":{"6-8":{}},"name":{},"text":{"3":{},"6":{},"9":{}},"component":{}}],["intermediari",{"_index":812,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["intern",{"_index":422,"title":{},"name":{},"text":{"3":{}},"component":{}}],["interpret",{"_index":219,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["intervent",{"_index":742,"title":{},"name":{},"text":{"5":{}},"component":{}}],["invoc",{"_index":1493,"title":{"10-2":{},"10-3":{}},"name":{},"text":{},"component":{}}],["invok",{"_index":642,"title":{},"name":{},"text":{"3":{},"8":{},"10":{}},"component":{}}],["involv",{"_index":777,"title":{},"name":{},"text":{"5":{},"6":{}},"component":{}}],["irrevoc",{"_index":1346,"title":{},"name":{},"text":{"9":{}},"component":{}}],["isbitfield",{"_index":963,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isconst",{"_index":928,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isconstinit",{"_index":949,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isdefault",{"_index":918,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isdelet",{"_index":920,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isdeletedaswritten",{"_index":922,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isdeprec",{"_index":957,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isexplicitlydefault",{"_index":919,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isexplicitobjectmemberfunct",{"_index":934,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isfin",{"_index":931,"title":{},"name":{},"text":{"6":{}},"component":{}}],["ismaybeunus",{"_index":954,"title":{},"name":{},"text":{"6":{}},"component":{}}],["ismut",{"_index":961,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isnodiscard",{"_index":932,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isnoreturn",{"_index":923,"title":{},"name":{},"text":{"6":{}},"component":{}}],["ispur",{"_index":916,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isscop",{"_index":910,"title":{},"name":{},"text":{"6":{}},"component":{}}],["issu",{"_index":671,"title":{},"name":{},"text":{"3":{},"7":{},"9":{}},"component":{}}],["isthreadloc",{"_index":951,"title":{},"name":{},"text":{"6":{}},"component":{}}],["istypedef",{"_index":908,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isus",{"_index":948,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isvari",{"_index":959,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isvariad",{"_index":911,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isvirtu",{"_index":913,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isvirtualaswritten",{"_index":915,"title":{},"name":{},"text":{"6":{}},"component":{}}],["isvolatil",{"_index":929,"title":{},"name":{},"text":{"6":{}},"component":{}}],["ital",{"_index":74,"title":{},"name":{},"text":{"1":{}},"component":{}}],["iter",{"_index":655,"title":{},"name":{},"text":{"3":{}},"component":{}}],["itself",{"_index":215,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["it’",{"_index":839,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["januari",{"_index":1283,"title":{},"name":{},"text":{"9":{}},"component":{}}],["javadoc",{"_index":11,"title":{},"name":{},"text":{"1":{},"3":{}},"component":{}}],["javascript",{"_index":1107,"title":{},"name":{},"text":{"8":{}},"component":{}}],["jetbrain",{"_index":119,"title":{},"name":{},"text":{"2":{}},"component":{}}],["json",{"_index":234,"title":{},"name":{},"text":{"2":{}},"component":{}}],["juli",{"_index":1036,"title":{},"name":{},"text":{"8":{}},"component":{}}],["jurisdict",{"_index":1462,"title":{},"name":{},"text":{"9":{}},"component":{}}],["key",{"_index":159,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["keyword",{"_index":985,"title":{},"name":{},"text":{"6":{}},"component":{}}],["kind",{"_index":870,"title":{},"name":{},"text":{"6":{},"9":{}},"component":{}}],["know",{"_index":760,"title":{},"name":{},"text":{"5":{}},"component":{}}],["known",{"_index":10,"title":{},"name":{},"text":{"1":{}},"component":{}}],["lack",{"_index":1514,"title":{},"name":{},"text":{"10":{}},"component":{}}],["languag",{"_index":125,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["last",{"_index":432,"title":{},"name":{},"text":{"3":{}},"component":{}}],["later",{"_index":1076,"title":{},"name":{},"text":{"8":{}},"component":{}}],["latter",{"_index":450,"title":{},"name":{},"text":{"3":{}},"component":{}}],["law",{"_index":1403,"title":{},"name":{},"text":{"9":{}},"component":{}}],["lawsuit",{"_index":1365,"title":{},"name":{},"text":{"9":{}},"component":{}}],["layout",{"_index":356,"title":{"3-14":{},"8-9":{}},"name":{},"text":{"6":{},"8":{}},"component":{}}],["lazi",{"_index":710,"title":{},"name":{},"text":{"5":{}},"component":{}}],["legaci",{"_index":1474,"title":{},"name":{},"text":{"9":{}},"component":{}}],["legal",{"_index":1296,"title":{},"name":{},"text":{"9":{}},"component":{}}],["legibl",{"_index":265,"title":{},"name":{},"text":{"2":{}},"component":{}}],["less",{"_index":702,"title":{},"name":{},"text":{"5":{}},"component":{}}],["level",{"_index":324,"title":{"6-4":{}},"name":{},"text":{"2":{},"5":{},"6":{},"8":{}},"component":{}}],["liabil",{"_index":1414,"title":{},"name":{},"text":{"9":{}},"component":{}}],["liabl",{"_index":1421,"title":{},"name":{},"text":{"9":{}},"component":{}}],["lib",{"_index":1274,"title":{},"name":{},"text":{"8":{}},"component":{}}],["lib/lib/mrdocscompilationdatabase.hpp",{"_index":447,"title":{},"name":{},"text":{"3":{}},"component":{}}],["libc",{"_index":1028,"title":{"8-7":{}},"name":{},"text":{"8":{}},"component":{}}],["libclang",{"_index":508,"title":{},"name":{},"text":{"3":{}},"component":{}}],["libcxx",{"_index":1228,"title":{},"name":{},"text":{"8":{}},"component":{}}],["librari",{"_index":244,"title":{"3-19":{}},"name":{},"text":{"2":{},"3":{},"4":{},"5":{},"8":{},"10":{}},"component":{}}],["libtool",{"_index":352,"title":{"3-9":{}},"name":{},"text":{"3":{},"5":{}},"component":{}}],["libxml2",{"_index":1027,"title":{"8-5":{}},"name":{},"text":{"8":{}},"component":{}}],["libxml2[tool",{"_index":1176,"title":{},"name":{},"text":{"8":{}},"component":{}}],["licens",{"_index":1278,"title":{"9":{}},"name":{"9":{}},"text":{"9":{}},"component":{}}],["license.txt",{"_index":1472,"title":{},"name":{},"text":{"9":{}},"component":{}}],["licensor",{"_index":1291,"title":{},"name":{},"text":{"9":{}},"component":{}}],["lie",{"_index":860,"title":{},"name":{},"text":{"6":{}},"component":{}}],["limit",{"_index":780,"title":{},"name":{},"text":{"5":{},"9":{}},"component":{}}],["line",{"_index":50,"title":{"2-8":{},"3-3":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"8":{},"10":{}},"component":{}}],["link",{"_index":262,"title":{},"name":{},"text":{"2":{},"6":{},"9":{}},"component":{}}],["lint",{"_index":117,"title":{},"name":{},"text":{"2":{}},"component":{}}],["linux",{"_index":1030,"title":{},"name":{},"text":{"8":{}},"component":{}}],["linux.tar.gz",{"_index":1048,"title":{},"name":{},"text":{"8":{}},"component":{}}],["linux.tar.xz",{"_index":1046,"title":{},"name":{},"text":{"8":{}},"component":{}}],["list",{"_index":166,"title":{},"name":{},"text":{"2":{},"6":{},"9":{},"10":{}},"component":{}}],["litig",{"_index":1361,"title":{},"name":{},"text":{"9":{}},"component":{}}],["ljo",{"_index":1114,"title":{},"name":{},"text":{"8":{}},"component":{}}],["llvm",{"_index":625,"title":{"8-6":{}},"name":{},"text":{"3":{},"8":{},"9":{}},"component":{}}],["llvm/cmakeuserpresets.json",{"_index":1196,"title":{},"name":{},"text":{"8":{}},"component":{}}],["llvm::cl",{"_index":416,"title":{},"name":{},"text":{"3":{}},"component":{}}],["llvm_root",{"_index":1259,"title":{},"name":{},"text":{"8":{}},"component":{}}],["llvm_root=\"$(pwd)/third",{"_index":1256,"title":{},"name":{},"text":{"8":{}},"component":{}}],["llvm_root=\"%cd%/third",{"_index":1249,"title":{},"name":{},"text":{"8":{}},"component":{}}],["load",{"_index":412,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["loc",{"_index":903,"title":{},"name":{},"text":{"6":{}},"component":{}}],["local",{"_index":952,"title":{},"name":{},"text":{"6":{}},"component":{}}],["locat",{"_index":284,"title":{"6-14":{}},"name":{},"text":{"2":{},"3":{},"6":{},"10":{}},"component":{}}],["look",{"_index":237,"title":{},"name":{},"text":{"2":{},"5":{}},"component":{}}],["loss",{"_index":1428,"title":{},"name":{},"text":{"9":{}},"component":{}}],["lost",{"_index":764,"title":{},"name":{},"text":{"5":{}},"component":{}}],["low",{"_index":734,"title":{},"name":{},"text":{"5":{}},"component":{}}],["lower",{"_index":825,"title":{},"name":{},"text":{"6":{}},"component":{}}],["lua",{"_index":630,"title":{},"name":{},"text":{"3":{}},"component":{}}],["macro",{"_index":743,"title":{},"name":{},"text":{"5":{},"7":{},"8":{},"10":{}},"component":{}}],["made",{"_index":1318,"title":{},"name":{},"text":{"9":{},"10":{}},"component":{}}],["mail",{"_index":1335,"title":{},"name":{},"text":{"9":{}},"component":{}}],["main",{"_index":25,"title":{"3-15":{},"3-16":{}},"name":{},"text":{"1":{},"3":{},"6":{},"8":{}},"component":{}}],["maintain",{"_index":725,"title":{},"name":{},"text":{"5":{},"7":{},"8":{},"10":{}},"component":{}}],["mainten",{"_index":1012,"title":{},"name":{},"text":{"7":{}},"component":{}}],["make",{"_index":1312,"title":{},"name":{},"text":{"9":{}},"component":{}}],["malfunct",{"_index":1432,"title":{},"name":{},"text":{"9":{}},"component":{}}],["manag",{"_index":1300,"title":{},"name":{},"text":{"9":{}},"component":{}}],["mani",{"_index":1007,"title":{},"name":{},"text":{"7":{},"10":{}},"component":{}}],["manifest",{"_index":1100,"title":{},"name":{},"text":{"8":{}},"component":{}}],["manual",{"_index":741,"title":{},"name":{},"text":{"5":{},"8":{}},"component":{}}],["map",{"_index":326,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["mark",{"_index":68,"title":{},"name":{},"text":{"1":{},"2":{},"9":{}},"component":{}}],["markdown",{"_index":815,"title":{},"name":{},"text":{"6":{}},"component":{}}],["markup",{"_index":872,"title":{},"name":{},"text":{"6":{}},"component":{}}],["master",{"_index":690,"title":{},"name":{},"text":{"4":{},"8":{}},"component":{}}],["match",{"_index":165,"title":{},"name":{},"text":{"2":{},"5":{}},"component":{}}],["materi",{"_index":1487,"title":{},"name":{},"text":{"9":{}},"component":{}}],["maximum",{"_index":341,"title":{},"name":{},"text":{"2":{}},"component":{}}],["mayb",{"_index":955,"title":{},"name":{},"text":{"6":{}},"component":{}}],["mb",{"_index":1042,"title":{},"name":{},"text":{"8":{}},"component":{}}],["mdd",{"_index":1213,"title":{},"name":{},"text":{"8":{}},"component":{}}],["mean",{"_index":208,"title":{},"name":{},"text":{"2":{},"5":{},"9":{},"10":{}},"component":{}}],["mechan",{"_index":1315,"title":{},"name":{},"text":{"9":{},"10":{}},"component":{}}],["media",{"_index":1316,"title":{},"name":{},"text":{"9":{}},"component":{}}],["medium",{"_index":1371,"title":{},"name":{},"text":{"9":{}},"component":{}}],["meet",{"_index":1021,"title":{},"name":{},"text":{"7":{},"9":{}},"component":{}}],["member",{"_index":167,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["merchant",{"_index":1407,"title":{},"name":{},"text":{"9":{}},"component":{}}],["mere",{"_index":1326,"title":{},"name":{},"text":{"9":{}},"component":{}}],["merg",{"_index":564,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["messag",{"_index":39,"title":{},"name":{},"text":{"1":{}},"component":{}}],["metadata",{"_index":94,"title":{"2-13":{}},"name":{},"text":{"2":{},"3":{},"5":{}},"component":{}}],["method",{"_index":523,"title":{},"name":{},"text":{"3":{}},"component":{}}],["minim",{"_index":775,"title":{},"name":{},"text":{"5":{},"7":{}},"component":{}}],["minimum",{"_index":323,"title":{},"name":{},"text":{"2":{}},"component":{}}],["minor",{"_index":783,"title":{},"name":{},"text":{"5":{}},"component":{}}],["miscellan",{"_index":95,"title":{"2-14":{}},"name":{},"text":{"2":{}},"component":{}}],["mkdir",{"_index":1070,"title":{},"name":{},"text":{"8":{}},"component":{}}],["mode",{"_index":1101,"title":{},"name":{},"text":{"8":{}},"component":{}}],["model",{"_index":591,"title":{"6-3":{}},"name":{},"text":{"3":{},"6":{}},"component":{}}],["modif",{"_index":1313,"title":{},"name":{},"text":{"9":{}},"component":{}}],["modifi",{"_index":1373,"title":{},"name":{},"text":{"9":{}},"component":{}}],["modul",{"_index":376,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["moment",{"_index":698,"title":{},"name":{},"text":{"5":{}},"component":{}}],["more",{"_index":115,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["motiv",{"_index":704,"title":{},"name":{},"text":{"5":{}},"component":{}}],["mr",{"_index":751,"title":{},"name":{},"text":{"5":{}},"component":{}}],["mr.doc",{"_index":776,"title":{},"name":{},"text":{"5":{}},"component":{}}],["mrdoc",{"_index":82,"title":{"7":{},"8-8":{},"10-1":{},"10-2":{},"10-6":{}},"name":{},"text":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"10":{}},"component":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{}}}],["mrdocs.yml",{"_index":127,"title":{},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["mrdocs/config.hpp",{"_index":417,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/corpus.hpp",{"_index":438,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/generator.hpp",{"_index":585,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/alias.hpp",{"_index":490,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/concept.hpp",{"_index":495,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/enum.hpp",{"_index":469,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/enumerator.hpp",{"_index":484,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/field.hpp",{"_index":476,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/friend.hpp",{"_index":481,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/function.hpp",{"_index":467,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/guide.hpp",{"_index":487,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/info.hpp",{"_index":459,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/javadoc.hpp",{"_index":571,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/namespace.hpp",{"_index":462,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/record.hpp",{"_index":465,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/specialization.hpp",{"_index":478,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/typedef.hpp",{"_index":471,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/using.hpp",{"_index":492,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/metadata/variable.hpp",{"_index":474,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs/third",{"_index":1119,"title":{},"name":{},"text":{"8":{}},"component":{}}],["mrdocs::corpu",{"_index":552,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs::info",{"_index":551,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mrdocs_build",{"_index":142,"title":{},"name":{},"text":{"2":{}},"component":{}}],["mrdocs_build=on",{"_index":140,"title":{},"name":{},"text":{"2":{},"10":{}},"component":{}}],["mrdocscompilationdatabas",{"_index":446,"title":{},"name":{},"text":{"3":{}},"component":{}}],["msi",{"_index":1032,"title":{},"name":{},"text":{"8":{}},"component":{}}],["msvc",{"_index":1207,"title":{},"name":{},"text":{"8":{}},"component":{}}],["much",{"_index":699,"title":{},"name":{},"text":{"5":{}},"component":{}}],["multi",{"_index":687,"title":{},"name":{},"text":{"4":{}},"component":{}}],["multipag",{"_index":107,"title":{},"name":{},"text":{"2":{},"6":{},"10":{}},"component":{}}],["multipl",{"_index":441,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"10":{}},"component":{}}],["mutabl",{"_index":962,"title":{},"name":{},"text":{"6":{}},"component":{}}],["my_project_mrdocs_build",{"_index":1523,"title":{},"name":{},"text":{"10":{}},"component":{}}],["my_project_mrdocs_build=on",{"_index":1546,"title":{},"name":{},"text":{"10":{}},"component":{}}],["name",{"_index":28,"title":{"6-13":{}},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"8":{},"9":{}},"component":{}}],["namespac",{"_index":171,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"10":{}},"component":{}}],["namespaceinfo",{"_index":461,"title":{},"name":{},"text":{"3":{}},"component":{}}],["natur",{"_index":709,"title":{},"name":{},"text":{"5":{}},"component":{}}],["navig",{"_index":997,"title":{},"name":{},"text":{"7":{}},"component":{}}],["necess",{"_index":795,"title":{},"name":{},"text":{"5":{}},"component":{}}],["necessari",{"_index":562,"title":{},"name":{},"text":{"3":{},"5":{},"10":{}},"component":{}}],["necessarili",{"_index":1356,"title":{},"name":{},"text":{"9":{}},"component":{}}],["need",{"_index":30,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"7":{},"8":{},"10":{}},"component":{}}],["neglig",{"_index":1418,"title":{},"name":{},"text":{"9":{}},"component":{}}],["never",{"_index":298,"title":{},"name":{},"text":{"2":{}},"component":{}}],["new",{"_index":372,"title":{},"name":{},"text":{"3":{},"5":{}},"component":{}}],["newfrontendactionfactori",{"_index":518,"title":{},"name":{},"text":{"3":{}},"component":{}}],["nice",{"_index":752,"title":{},"name":{},"text":{"5":{}},"component":{}}],["niebloid",{"_index":805,"title":{},"name":{},"text":{"5":{}},"component":{}}],["ninja",{"_index":1226,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["node",{"_index":350,"title":{"3-8":{}},"name":{},"text":{"3":{}},"component":{}}],["nodiscard",{"_index":933,"title":{},"name":{},"text":{"6":{}},"component":{}}],["non",{"_index":458,"title":{},"name":{},"text":{"3":{},"6":{},"9":{}},"component":{}}],["noninfring",{"_index":1491,"title":{},"name":{},"text":{"9":{}},"component":{}}],["nonqualifi",{"_index":894,"title":{},"name":{},"text":{"6":{}},"component":{}}],["noreturn",{"_index":924,"title":{},"name":{},"text":{"6":{}},"component":{}}],["normal",{"_index":457,"title":{},"name":{},"text":{"3":{},"6":{},"9":{}},"component":{}}],["note",{"_index":694,"title":{"5":{}},"name":{"5":{}},"text":{"5":{}},"component":{}}],["noth",{"_index":1390,"title":{},"name":{},"text":{"9":{}},"component":{}}],["notic",{"_index":1319,"title":{},"name":{},"text":{"9":{}},"component":{}}],["notori",{"_index":735,"title":{},"name":{},"text":{"5":{}},"component":{}}],["notwithstand",{"_index":1389,"title":{},"name":{},"text":{"9":{}},"component":{}}],["now",{"_index":1126,"title":{},"name":{},"text":{"8":{}},"component":{}}],["number",{"_index":52,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"8":{}},"component":{}}],["object",{"_index":296,"title":{"6-3":{},"6-7":{},"6-8":{}},"name":{},"text":{"2":{},"3":{},"6":{},"9":{}},"component":{}}],["oblig",{"_index":1437,"title":{},"name":{},"text":{"9":{}},"component":{}}],["obtain",{"_index":1452,"title":{},"name":{},"text":{"9":{}},"component":{}}],["occur",{"_index":343,"title":{},"name":{},"text":{"2":{}},"component":{}}],["octob",{"_index":1050,"title":{},"name":{},"text":{"8":{}},"component":{}}],["off",{"_index":851,"title":{},"name":{},"text":{"6":{}},"component":{}}],["offer",{"_index":506,"title":{},"name":{},"text":{"3":{},"7":{},"8":{},"9":{}},"component":{}}],["offici",{"_index":1088,"title":{},"name":{},"text":{"8":{}},"component":{}}],["og",{"_index":1209,"title":{},"name":{},"text":{"8":{}},"component":{}}],["ok",{"_index":169,"title":{},"name":{},"text":{"2":{}},"component":{}}],["on",{"_index":1199,"title":{},"name":{},"text":{"8":{},"9":{},"10":{}},"component":{}}],["onc",{"_index":513,"title":{},"name":{},"text":{"3":{},"5":{}},"component":{}}],["open",{"_index":670,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["oper",{"_index":945,"title":{},"name":{},"text":{"6":{},"8":{}},"component":{}}],["operand",{"_index":984,"title":{},"name":{},"text":{"6":{}},"component":{}}],["optim",{"_index":854,"title":{},"name":{},"text":{"6":{},"8":{}},"component":{}}],["option",{"_index":86,"title":{"2-2":{},"2-8":{},"2-10":{},"3-2":{},"3-3":{},"3-5":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"10":{}},"component":{}}],["order",{"_index":183,"title":{},"name":{},"text":{"2":{}},"component":{}}],["organ",{"_index":586,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["origin",{"_index":449,"title":{},"name":{},"text":{"3":{},"8":{},"9":{},"10":{}},"component":{}}],["otherwis",{"_index":1301,"title":{},"name":{},"text":{"9":{}},"component":{}}],["out",{"_index":154,"title":{},"name":{},"text":{"2":{},"5":{},"9":{}},"component":{}}],["outcom",{"_index":714,"title":{},"name":{},"text":{"5":{}},"component":{}}],["outfil",{"_index":1112,"title":{},"name":{},"text":{"8":{}},"component":{}}],["output",{"_index":229,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"10":{}},"component":{}}],["output=../docs/refer",{"_index":1505,"title":{},"name":{},"text":{"10":{}},"component":{}}],["output=..\\docs\\refer",{"_index":1547,"title":{},"name":{},"text":{"10":{}},"component":{}}],["outsid",{"_index":270,"title":{},"name":{},"text":{"2":{}},"component":{}}],["outstand",{"_index":1307,"title":{},"name":{},"text":{"9":{}},"component":{}}],["over",{"_index":510,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["overload",{"_index":800,"title":{},"name":{},"text":{"5":{},"6":{}},"component":{}}],["overloadedoper",{"_index":944,"title":{},"name":{},"text":{"6":{}},"component":{}}],["overrid",{"_index":175,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"10":{}},"component":{}}],["overview",{"_index":346,"title":{"3-1":{}},"name":{},"text":{"3":{}},"component":{}}],["owner",{"_index":1293,"title":{},"name":{},"text":{"9":{}},"component":{}}],["ownership",{"_index":1303,"title":{},"name":{},"text":{"9":{}},"component":{}}],["p",{"_index":41,"title":{},"name":{},"text":{"1":{},"3":{},"8":{},"10":{}},"component":{}}],["p[configur",{"_index":391,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["pack",{"_index":982,"title":{},"name":{},"text":{"6":{}},"component":{}}],["packag",{"_index":1025,"title":{"8-1":{},"8-9":{}},"name":{},"text":{"8":{}},"component":{}}],["page",{"_index":81,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["parallel",{"_index":1218,"title":{},"name":{},"text":{"8":{}},"component":{}}],["param",{"_index":40,"title":{"6-12":{}},"name":{},"text":{"1":{},"6":{}},"component":{}}],["paramet",{"_index":71,"title":{},"name":{},"text":{"1":{},"6":{},"8":{},"10":{}},"component":{}}],["parent",{"_index":897,"title":{},"name":{},"text":{"6":{},"8":{}},"component":{}}],["pars",{"_index":347,"title":{"3-2":{}},"name":{},"text":{"3":{},"8":{}},"component":{}}],["parser",{"_index":228,"title":{},"name":{},"text":{"2":{}},"component":{}}],["part",{"_index":256,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["parti",{"_index":364,"title":{"3-19":{}},"name":{},"text":{"3":{},"8":{},"9":{}},"component":{}}],["partial",{"_index":869,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["particular",{"_index":1409,"title":{},"name":{},"text":{"9":{}},"component":{}}],["party/duktap",{"_index":1252,"title":{},"name":{},"text":{"8":{}},"component":{}}],["party/duktape/cmakelists.txt",{"_index":1120,"title":{},"name":{},"text":{"8":{}},"component":{}}],["party/duktape/duktapeconfig.cmake.in",{"_index":1122,"title":{},"name":{},"text":{"8":{}},"component":{}}],["party/duktape/—cmak",{"_index":626,"title":{},"name":{},"text":{"3":{}},"component":{}}],["party/llvm",{"_index":1189,"title":{},"name":{},"text":{"8":{}},"component":{}}],["party/llvm+clang/relwithdebinfo",{"_index":1250,"title":{},"name":{},"text":{"8":{}},"component":{}}],["party/llvm/cmakepresets.json",{"_index":1194,"title":{},"name":{},"text":{"8":{}},"component":{}}],["party/llvm/cmakeuserpresets.json",{"_index":1195,"title":{},"name":{},"text":{"8":{}},"component":{}}],["party/llvm/—cmak",{"_index":623,"title":{},"name":{},"text":{"3":{}},"component":{}}],["party/lua/—a",{"_index":628,"title":{},"name":{},"text":{"3":{}},"component":{}}],["party/vcpkg",{"_index":1138,"title":{},"name":{},"text":{"8":{}},"component":{}}],["party/vcpkg/scripts/buildsystems/vcpkg.cmak",{"_index":1254,"title":{},"name":{},"text":{"8":{}},"component":{}}],["party/—help",{"_index":363,"title":{"3-19":{}},"name":{},"text":{},"component":{}}],["party/—third",{"_index":622,"title":{},"name":{},"text":{"3":{}},"component":{}}],["pass",{"_index":146,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"10":{}},"component":{}}],["patch",{"_index":1115,"title":{},"name":{},"text":{"8":{}},"component":{}}],["patent",{"_index":1351,"title":{},"name":{},"text":{"9":{}},"component":{}}],["path",{"_index":92,"title":{"2-9":{},"3-21":{}},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"10":{}},"component":{}}],["path/to/custom/addon",{"_index":865,"title":{},"name":{},"text":{"6":{}},"component":{}}],["path/to/mrdocs.yml",{"_index":1504,"title":{},"name":{},"text":{"10":{}},"component":{}}],["pathnam",{"_index":633,"title":{},"name":{},"text":{"3":{}},"component":{}}],["pattern",{"_index":160,"title":{},"name":{},"text":{"2":{},"10":{}},"component":{}}],["percent",{"_index":1305,"title":{},"name":{},"text":{"9":{}},"component":{}}],["perform",{"_index":574,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["permiss",{"_index":1311,"title":{},"name":{},"text":{"9":{}},"component":{}}],["permit",{"_index":177,"title":{},"name":{},"text":{"2":{},"9":{}},"component":{}}],["perpetu",{"_index":1342,"title":{},"name":{},"text":{"9":{}},"component":{}}],["person",{"_index":26,"title":{},"name":{},"text":{"1":{},"9":{}},"component":{}}],["perspect",{"_index":729,"title":{},"name":{},"text":{"5":{}},"component":{}}],["pertain",{"_index":1378,"title":{},"name":{},"text":{"9":{}},"component":{}}],["philosophi",{"_index":773,"title":{},"name":{},"text":{"5":{}},"component":{}}],["place",{"_index":19,"title":{},"name":{},"text":{"1":{},"5":{},"9":{}},"component":{}}],["platform",{"_index":636,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["pleas",{"_index":669,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["plot",{"_index":817,"title":{},"name":{},"text":{"6":{}},"component":{}}],["plugin",{"_index":123,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"7":{}},"component":{}}],["plural",{"_index":975,"title":{},"name":{},"text":{"6":{}},"component":{}}],["point",{"_index":409,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["pointe",{"_index":987,"title":{},"name":{},"text":{"6":{}},"component":{}}],["pointer",{"_index":570,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["polici",{"_index":292,"title":{},"name":{},"text":{"2":{}},"component":{}}],["popular",{"_index":1004,"title":{},"name":{},"text":{"7":{}},"component":{}}],["portion",{"_index":1455,"title":{},"name":{},"text":{"9":{}},"component":{}}],["pose",{"_index":999,"title":{},"name":{},"text":{"7":{}},"component":{}}],["possibl",{"_index":442,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"9":{}},"component":{}}],["post",{"_index":827,"title":{},"name":{},"text":{"6":{}},"component":{}}],["potenti",{"_index":859,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["power",{"_index":1297,"title":{},"name":{},"text":{"9":{}},"component":{}}],["powershel",{"_index":1091,"title":{},"name":{},"text":{"8":{}},"component":{}}],["practic",{"_index":787,"title":{},"name":{},"text":{"5":{}},"component":{}}],["pre",{"_index":451,"title":{},"name":{},"text":{"3":{}},"component":{}}],["preced",{"_index":211,"title":{},"name":{},"text":{"2":{}},"component":{}}],["prefer",{"_index":826,"title":{},"name":{},"text":{"6":{},"8":{},"9":{}},"component":{}}],["prefix",{"_index":992,"title":{},"name":{},"text":{"6":{},"8":{}},"component":{}}],["prepar",{"_index":1348,"title":{},"name":{},"text":{"9":{}},"component":{}}],["preprocess",{"_index":1551,"title":{},"name":{},"text":{"10":{}},"component":{}}],["preprocessor",{"_index":148,"title":{},"name":{},"text":{"2":{},"5":{}},"component":{}}],["present",{"_index":578,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["preset",{"_index":624,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["preset=releas",{"_index":1197,"title":{},"name":{},"text":{"8":{}},"component":{}}],["pretti",{"_index":612,"title":{},"name":{},"text":{"3":{}},"component":{}}],["previous",{"_index":1225,"title":{},"name":{},"text":{"8":{}},"component":{}}],["primari",{"_index":978,"title":{},"name":{},"text":{"6":{}},"component":{}}],["primarili",{"_index":143,"title":{},"name":{},"text":{"2":{}},"component":{}}],["print",{"_index":38,"title":{},"name":{},"text":{"1":{},"3":{},"6":{},"9":{}},"component":{}}],["printer",{"_index":613,"title":{},"name":{},"text":{"3":{}},"component":{}}],["prior",{"_index":1490,"title":{},"name":{},"text":{"9":{}},"component":{}}],["privat",{"_index":90,"title":{"2-6":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"10":{}},"component":{}}],["problem",{"_index":757,"title":{},"name":{},"text":{"5":{}},"component":{}}],["problemat",{"_index":745,"title":{},"name":{},"text":{"5":{},"10":{}},"component":{}}],["process",{"_index":371,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"8":{},"10":{}},"component":{}}],["produc",{"_index":272,"title":{},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["product",{"_index":1397,"title":{},"name":{},"text":{"9":{},"10":{}},"component":{}}],["program",{"_index":333,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["project",{"_index":151,"title":{},"name":{},"text":{"2":{},"3":{},"8":{},"9":{},"10":{}},"component":{}}],["project.git",{"_index":1182,"title":{},"name":{},"text":{"8":{}},"component":{}}],["project/llvm",{"_index":1193,"title":{},"name":{},"text":{"8":{}},"component":{}}],["project’",{"_index":1102,"title":{},"name":{},"text":{"8":{}},"component":{}}],["promin",{"_index":1375,"title":{},"name":{},"text":{"9":{}},"component":{}}],["promot",{"_index":1489,"title":{},"name":{},"text":{"9":{}},"component":{}}],["prompt",{"_index":1013,"title":{},"name":{},"text":{"7":{}},"component":{}}],["propag",{"_index":640,"title":{},"name":{},"text":{"3":{}},"component":{}}],["properti",{"_index":884,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["prospect",{"_index":1466,"title":{},"name":{},"text":{"9":{}},"component":{}}],["protect",{"_index":895,"title":{},"name":{},"text":{"6":{}},"component":{}}],["provid",{"_index":111,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["provis",{"_index":1463,"title":{},"name":{},"text":{"9":{}},"component":{}}],["public",{"_index":418,"title":{},"name":{},"text":{"3":{},"6":{},"7":{}},"component":{}}],["publicli",{"_index":1349,"title":{},"name":{},"text":{"9":{}},"component":{}}],["publish",{"_index":1485,"title":{},"name":{},"text":{"9":{}},"component":{}}],["pull",{"_index":676,"title":{},"name":{},"text":{"3":{}},"component":{}}],["pure",{"_index":917,"title":{},"name":{},"text":{"6":{}},"component":{}}],["purpos",{"_index":813,"title":{},"name":{},"text":{"6":{},"8":{},"9":{}},"component":{}}],["qualifi",{"_index":161,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["qualiti",{"_index":1019,"title":{},"name":{},"text":{"7":{}},"component":{}}],["rare",{"_index":793,"title":{},"name":{},"text":{"5":{}},"component":{}}],["read",{"_index":220,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"8":{}},"component":{}}],["readabl",{"_index":1379,"title":{},"name":{},"text":{"9":{}},"component":{}}],["readili",{"_index":831,"title":{},"name":{},"text":{"6":{}},"component":{}}],["real",{"_index":537,"title":{},"name":{},"text":{"3":{}},"component":{}}],["reason",{"_index":715,"title":{},"name":{},"text":{"5":{},"8":{},"9":{}},"component":{}}],["receiv",{"_index":1338,"title":{},"name":{},"text":{"9":{}},"component":{}}],["recent",{"_index":1177,"title":{},"name":{},"text":{"8":{}},"component":{}}],["recipi",{"_index":1372,"title":{},"name":{},"text":{"9":{}},"component":{}}],["recogn",{"_index":227,"title":{},"name":{},"text":{"2":{}},"component":{}}],["recommend",{"_index":1106,"title":{},"name":{},"text":{"8":{},"9":{}},"component":{}}],["record",{"_index":464,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["recordinfo",{"_index":463,"title":{},"name":{},"text":{"3":{}},"component":{}}],["recurs",{"_index":542,"title":{},"name":{},"text":{"3":{}},"component":{}}],["redeclar",{"_index":835,"title":{},"name":{},"text":{"6":{}},"component":{}}],["redistribut",{"_index":1370,"title":{},"name":{},"text":{"9":{}},"component":{}}],["redund",{"_index":822,"title":{},"name":{},"text":{"6":{}},"component":{}}],["ref",{"_index":991,"title":{},"name":{},"text":{"6":{}},"component":{}}],["refer",{"_index":91,"title":{"2-7":{},"6-3":{}},"name":{},"text":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"10":{}},"component":{}}],["referenc",{"_index":291,"title":{},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["reflect",{"_index":830,"title":{},"name":{},"text":{"6":{}},"component":{}}],["refqualifi",{"_index":940,"title":{},"name":{},"text":{"6":{}},"component":{}}],["regard",{"_index":1394,"title":{},"name":{},"text":{"9":{}},"component":{}}],["regardless",{"_index":248,"title":{},"name":{},"text":{"2":{}},"component":{}}],["rel",{"_index":230,"title":{},"name":{},"text":{"2":{},"6":{},"10":{}},"component":{}}],["relat",{"_index":802,"title":{},"name":{},"text":{"5":{}},"component":{}}],["relationship",{"_index":397,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["releas",{"_index":1029,"title":{},"name":{},"text":{"8":{}},"component":{}}],["relev",{"_index":152,"title":{},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["reli",{"_index":1552,"title":{},"name":{},"text":{"10":{}},"component":{}}],["relwithdebinfo",{"_index":1201,"title":{},"name":{},"text":{"8":{}},"component":{}}],["remain",{"_index":1003,"title":{},"name":{},"text":{"7":{},"9":{}},"component":{}}],["rememb",{"_index":703,"title":{},"name":{},"text":{"5":{}},"component":{}}],["remot",{"_index":1180,"title":{},"name":{},"text":{"8":{}},"component":{}}],["remov",{"_index":315,"title":{},"name":{},"text":{"2":{},"3":{},"5":{}},"component":{}}],["render",{"_index":295,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["replac",{"_index":252,"title":{},"name":{},"text":{"2":{},"8":{},"9":{}},"component":{}}],["replic",{"_index":1190,"title":{},"name":{},"text":{"8":{}},"component":{}}],["report",{"_index":322,"title":{},"name":{},"text":{"2":{}},"component":{}}],["repositori",{"_index":673,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["repres",{"_index":27,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"9":{},"10":{}},"component":{}}],["represent",{"_index":419,"title":{},"name":{},"text":{"3":{}},"component":{}}],["reproduc",{"_index":1347,"title":{},"name":{},"text":{"9":{}},"component":{}}],["reproduct",{"_index":1287,"title":{},"name":{},"text":{"9":{}},"component":{}}],["request",{"_index":668,"title":{},"name":{},"text":{"3":{}},"component":{}}],["requir",{"_index":217,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["reserv",{"_index":1482,"title":{},"name":{},"text":{"9":{}},"component":{}}],["resolv",{"_index":888,"title":{},"name":{},"text":{"6":{}},"component":{}}],["resourc",{"_index":360,"title":{"3-17":{}},"name":{},"text":{"3":{},"8":{}},"component":{}}],["respect",{"_index":573,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["respons",{"_index":239,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"9":{}},"component":{}}],["rest",{"_index":435,"title":{},"name":{},"text":{"3":{}},"component":{}}],["restrict",{"_index":1473,"title":{},"name":{},"text":{"9":{}},"component":{}}],["result",{"_index":565,"title":{},"name":{},"text":{"3":{},"6":{},"9":{}},"component":{}}],["retain",{"_index":1376,"title":{},"name":{},"text":{"9":{}},"component":{}}],["retroact",{"_index":1465,"title":{},"name":{},"text":{"9":{}},"component":{}}],["return",{"_index":520,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"8":{},"10":{}},"component":{}}],["revert",{"_index":1014,"title":{},"name":{},"text":{"7":{}},"component":{}}],["revis",{"_index":1322,"title":{},"name":{},"text":{"9":{}},"component":{}}],["right",{"_index":744,"title":{"6-1":{}},"name":{},"text":{"5":{},"9":{}},"component":{}}],["risk",{"_index":1411,"title":{},"name":{},"text":{"9":{}},"component":{}}],["root",{"_index":105,"title":{},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["royalti",{"_index":1345,"title":{},"name":{},"text":{"9":{}},"component":{}}],["run",{"_index":135,"title":{},"name":{},"text":{"2":{},"3":{},"8":{},"10":{}},"component":{}}],["runtim",{"_index":1227,"title":{},"name":{},"text":{"8":{}},"component":{}}],["s",{"_index":1081,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["s/#defin",{"_index":1132,"title":{},"name":{},"text":{"8":{}},"component":{}}],["safe",{"_index":289,"title":{},"name":{},"text":{"2":{}},"component":{}}],["same",{"_index":568,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["save",{"_index":796,"title":{},"name":{},"text":{"5":{}},"component":{}}],["scatter",{"_index":816,"title":{},"name":{},"text":{"6":{}},"component":{}}],["schema",{"_index":84,"title":{"2-1":{}},"name":{},"text":{"2":{}},"component":{}}],["schema=https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json",{"_index":134,"title":{},"name":{},"text":{"2":{}},"component":{}}],["scope",{"_index":901,"title":{},"name":{},"text":{"6":{}},"component":{}}],["script",{"_index":145,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"8":{}},"component":{}}],["search",{"_index":254,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["second",{"_index":439,"title":{},"name":{},"text":{"3":{},"5":{}},"component":{}}],["secondari",{"_index":786,"title":{},"name":{},"text":{"5":{}},"component":{}}],["section",{"_index":66,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["section(",{"_index":1469,"title":{},"name":{},"text":{"9":{}},"component":{}}],["sed",{"_index":1131,"title":{},"name":{},"text":{"8":{}},"component":{}}],["see",{"_index":201,"title":{},"name":{},"text":{"2":{},"8":{},"9":{},"10":{}},"component":{}}],["see_below",{"_index":205,"title":{},"name":{},"text":{"2":{}},"component":{}}],["sell",{"_index":1353,"title":{},"name":{},"text":{"9":{}},"component":{}}],["semant",{"_index":579,"title":{},"name":{},"text":{"3":{}},"component":{}}],["sent",{"_index":1334,"title":{},"name":{},"text":{"9":{}},"component":{}}],["sentenc",{"_index":61,"title":{},"name":{},"text":{"1":{}},"component":{}}],["separ",{"_index":876,"title":{},"name":{},"text":{"6":{},"8":{},"9":{}},"component":{}}],["serv",{"_index":1275,"title":{},"name":{},"text":{"8":{}},"component":{}}],["server",{"_index":126,"title":{},"name":{},"text":{"2":{}},"component":{}}],["servic",{"_index":1396,"title":{},"name":{},"text":{"9":{}},"component":{}}],["set",{"_index":214,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"8":{},"10":{}},"component":{}}],["set(include_dir",{"_index":1525,"title":{},"name":{},"text":{"10":{}},"component":{}}],["set(temp_cpp_fil",{"_index":1530,"title":{},"name":{},"text":{"10":{}},"component":{}}],["sever",{"_index":375,"title":{},"name":{},"text":{"3":{}},"component":{}}],["sfina",{"_index":312,"title":{},"name":{},"text":{"2":{},"5":{}},"component":{}}],["sha1",{"_index":554,"title":{},"name":{},"text":{"3":{}},"component":{}}],["shadow",{"_index":970,"title":{},"name":{},"text":{"6":{}},"component":{}}],["shall",{"_index":1289,"title":{},"name":{},"text":{"9":{}},"component":{}}],["shallow",{"_index":1085,"title":{},"name":{},"text":{"8":{}},"component":{}}],["share",{"_index":607,"title":{},"name":{},"text":{"3":{},"8":{},"9":{}},"component":{}}],["share/cmake/—cmak",{"_index":610,"title":{},"name":{},"text":{"3":{}},"component":{}}],["share/gdb/—gdb",{"_index":611,"title":{},"name":{},"text":{"3":{}},"component":{}}],["share/mrdocs/addon",{"_index":264,"title":{},"name":{},"text":{"2":{}},"component":{}}],["share/mrdocs/addons/gener",{"_index":864,"title":{},"name":{},"text":{"6":{}},"component":{}}],["share/mrdocs/clang",{"_index":246,"title":{},"name":{},"text":{"2":{}},"component":{}}],["share/mrdocs/libcxx",{"_index":245,"title":{},"name":{},"text":{"2":{}},"component":{}}],["share/mrdocs/—shar",{"_index":614,"title":{},"name":{},"text":{"3":{}},"component":{}}],["share/—shar",{"_index":359,"title":{"3-17":{}},"name":{},"text":{"3":{}},"component":{}}],["show",{"_index":129,"title":{},"name":{},"text":{"2":{},"6":{},"10":{}},"component":{}}],["signatur",{"_index":697,"title":{},"name":{},"text":{"5":{}},"component":{}}],["signific",{"_index":1000,"title":{},"name":{},"text":{"7":{}},"component":{}}],["significantli",{"_index":995,"title":{},"name":{},"text":{"7":{}},"component":{}}],["similar",{"_index":842,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["simpl",{"_index":185,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["simpli",{"_index":886,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["simplic",{"_index":1071,"title":{},"name":{},"text":{"8":{}},"component":{}}],["simplifi",{"_index":1507,"title":{},"name":{},"text":{"10":{}},"component":{}}],["singl",{"_index":49,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"10":{}},"component":{}}],["sink",{"_index":225,"title":{},"name":{},"text":{"2":{}},"component":{}}],["skip",{"_index":1139,"title":{},"name":{},"text":{"8":{}},"component":{}}],["slack",{"_index":682,"title":{},"name":{},"text":{"3":{}},"component":{}}],["slash",{"_index":632,"title":{},"name":{},"text":{"3":{}},"component":{}}],["small",{"_index":763,"title":{},"name":{},"text":{"5":{}},"component":{}}],["softwar",{"_index":1314,"title":{},"name":{},"text":{"9":{}},"component":{}}],["sole",{"_index":1410,"title":{},"name":{},"text":{"9":{}},"component":{}}],["solut",{"_index":770,"title":{},"name":{},"text":{"5":{},"6":{},"7":{}},"component":{}}],["somewhat",{"_index":1214,"title":{},"name":{},"text":{"8":{}},"component":{}}],["sourc",{"_index":104,"title":{"3-16":{},"6-6":{},"8-2":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["sourcefil",{"_index":517,"title":{},"name":{},"text":{"3":{}},"component":{}}],["spatial",{"_index":719,"title":{},"name":{},"text":{"5":{}},"component":{}}],["spec",{"_index":990,"title":{},"name":{},"text":{"6":{}},"component":{}}],["special",{"_index":69,"title":{},"name":{},"text":{"1":{},"3":{},"9":{},"10":{}},"component":{}}],["specializationinfo",{"_index":477,"title":{},"name":{},"text":{"3":{}},"component":{}}],["specif",{"_index":176,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["specifi",{"_index":99,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"10":{}},"component":{}}],["src",{"_index":1503,"title":{},"name":{},"text":{"10":{}},"component":{}}],["src/duk_config.h",{"_index":1135,"title":{},"name":{},"text":{"8":{}},"component":{}}],["src/lib/ast/astvisitor.cpp",{"_index":536,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/ast/—th",{"_index":598,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/dom/—th",{"_index":599,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/gen/—gener",{"_index":600,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/lib/configimpl.hpp",{"_index":425,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/lib/corpusimpl.cpp",{"_index":531,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/lib/—th",{"_index":601,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/metadata/finalize.cpp",{"_index":576,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/metadata/—info",{"_index":602,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/support/—vari",{"_index":603,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/lib/—th",{"_index":597,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/test/testmain.cpp",{"_index":651,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/test/—th",{"_index":604,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/test_suite/test_suite.cpp",{"_index":658,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/test_suite/—th",{"_index":605,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/tool/generateaction.cpp",{"_index":411,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/tool/toolargs.hpp",{"_index":414,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/tool/—th",{"_index":606,"title":{},"name":{},"text":{"3":{}},"component":{}}],["src/—the",{"_index":358,"title":{"3-16":{}},"name":{},"text":{},"component":{}}],["src\\duk_config.h",{"_index":1128,"title":{},"name":{},"text":{"8":{}},"component":{}}],["stabl",{"_index":1515,"title":{},"name":{},"text":{"10":{}},"component":{}}],["stack",{"_index":645,"title":{},"name":{},"text":{"3":{}},"component":{}}],["stage",{"_index":436,"title":{},"name":{},"text":{"3":{}},"component":{}}],["standard",{"_index":243,"title":{"3-20":{}},"name":{},"text":{"2":{},"3":{},"8":{}},"component":{}}],["start",{"_index":900,"title":{},"name":{},"text":{"6":{},"10":{}},"component":{}}],["state",{"_index":1352,"title":{},"name":{},"text":{"9":{}},"component":{}}],["statement",{"_index":1385,"title":{},"name":{},"text":{"9":{}},"component":{}}],["static",{"_index":55,"title":{},"name":{},"text":{"1":{},"6":{},"8":{}},"component":{}}],["staticfunc",{"_index":976,"title":{},"name":{},"text":{"6":{}},"component":{}}],["staticoverload",{"_index":977,"title":{},"name":{},"text":{"6":{}},"component":{}}],["std::enable_if",{"_index":314,"title":{},"name":{},"text":{"2":{}},"component":{}}],["std::string",{"_index":34,"title":{},"name":{},"text":{"1":{}},"component":{}}],["stdlib",{"_index":241,"title":{},"name":{},"text":{"2":{}},"component":{}}],["step",{"_index":413,"title":{},"name":{},"text":{"3":{},"6":{},"7":{},"8":{},"10":{}},"component":{}}],["still",{"_index":288,"title":{},"name":{},"text":{"2":{}},"component":{}}],["stop",{"_index":332,"title":{},"name":{},"text":{"2":{}},"component":{}}],["stoppag",{"_index":1430,"title":{},"name":{},"text":{"9":{}},"component":{}}],["storag",{"_index":939,"title":{},"name":{},"text":{"6":{}},"component":{}}],["storageclass",{"_index":938,"title":{},"name":{},"text":{"6":{}},"component":{}}],["store",{"_index":31,"title":{},"name":{},"text":{"1":{},"3":{}},"component":{}}],["straightforward",{"_index":838,"title":{},"name":{},"text":{"6":{}},"component":{}}],["strategi",{"_index":249,"title":{},"name":{},"text":{"2":{},"5":{}},"component":{}}],["string",{"_index":240,"title":{},"name":{},"text":{"2":{},"6":{},"8":{}},"component":{}}],["strong",{"_index":79,"title":{},"name":{},"text":{"1":{}},"component":{}}],["struct",{"_index":33,"title":{},"name":{},"text":{"1":{},"3":{},"6":{}},"component":{}}],["structur",{"_index":580,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"8":{}},"component":{}}],["studio",{"_index":1244,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["style",{"_index":0,"title":{"1-1":{}},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"10":{}},"component":{}}],["subdirectori",{"_index":609,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["subgraph",{"_index":387,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["subject",{"_index":1340,"title":{},"name":{},"text":{"9":{}},"component":{}}],["sublicens",{"_index":1350,"title":{},"name":{},"text":{"9":{}},"component":{}}],["submiss",{"_index":1387,"title":{},"name":{},"text":{"9":{}},"component":{}}],["submit",{"_index":1329,"title":{},"name":{},"text":{"9":{}},"component":{}}],["subopt",{"_index":301,"title":{},"name":{},"text":{"2":{}},"component":{}}],["suboptim",{"_index":1005,"title":{},"name":{},"text":{"7":{}},"component":{}}],["subsequ",{"_index":1339,"title":{},"name":{},"text":{"9":{}},"component":{}}],["subset",{"_index":191,"title":{},"name":{},"text":{"2":{}},"component":{}}],["subsum",{"_index":193,"title":{},"name":{},"text":{"2":{}},"component":{}}],["subvert",{"_index":750,"title":{},"name":{},"text":{"5":{}},"component":{}}],["such",{"_index":70,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["suggest",{"_index":336,"title":{},"name":{},"text":{"2":{}},"component":{}}],["suit",{"_index":650,"title":{},"name":{},"text":{"3":{}},"component":{}}],["suitabl",{"_index":840,"title":{},"name":{},"text":{"6":{}},"component":{}}],["summari",{"_index":721,"title":{},"name":{},"text":{"5":{},"10":{}},"component":{}}],["supersed",{"_index":1392,"title":{},"name":{},"text":{"9":{}},"component":{}}],["support",{"_index":344,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"9":{}},"component":{}}],["suppos",{"_index":700,"title":{},"name":{},"text":{"5":{}},"component":{}}],["supress",{"_index":454,"title":{},"name":{},"text":{"3":{}},"component":{}}],["switch",{"_index":1512,"title":{},"name":{},"text":{"10":{}},"component":{}}],["symbol",{"_index":88,"title":{"2-4":{},"2-6":{},"3-6":{},"6-5":{}},"name":{},"text":{"2":{},"3":{},"6":{},"10":{}},"component":{}}],["symbol..hb",{"_index":868,"title":{},"name":{},"text":{"6":{}},"component":{}}],["symbol.on",{"_index":881,"title":{},"name":{},"text":{"6":{}},"component":{}}],["symbolid",{"_index":557,"title":{},"name":{},"text":{"3":{}},"component":{}}],["symlink",{"_index":1105,"title":{},"name":{},"text":{"8":{}},"component":{}}],["syntax",{"_index":833,"title":{},"name":{},"text":{"6":{},"9":{}},"component":{}}],["syntaxonlyact",{"_index":527,"title":{},"name":{},"text":{"3":{}},"component":{}}],["system",{"_index":32,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["tabl",{"_index":874,"title":{},"name":{},"text":{"6":{}},"component":{}}],["tag",{"_index":906,"title":{},"name":{},"text":{"6":{}},"component":{}}],["take",{"_index":37,"title":{},"name":{},"text":{"1":{},"2":{},"3":{}},"component":{}}],["tar",{"_index":1116,"title":{},"name":{},"text":{"8":{}},"component":{}}],["tar.gz",{"_index":1035,"title":{},"name":{},"text":{"8":{}},"component":{}}],["tar.xz",{"_index":1034,"title":{},"name":{},"text":{"8":{}},"component":{}}],["targ",{"_index":811,"title":{"6-16":{}},"name":{},"text":{"6":{}},"component":{}}],["target",{"_index":150,"title":{},"name":{},"text":{"2":{},"3":{},"10":{}},"component":{}}],["target_include_directories(my_project_mrdocs_target",{"_index":1541,"title":{},"name":{},"text":{"10":{}},"component":{}}],["target_link_libraries(my_project_mrdocs_target",{"_index":1543,"title":{},"name":{},"text":{"10":{}},"component":{}}],["td",{"_index":378,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["team",{"_index":1483,"title":{},"name":{},"text":{"9":{}},"component":{}}],["temp_cpp_fil",{"_index":1533,"title":{},"name":{},"text":{"10":{}},"component":{}}],["templat",{"_index":275,"title":{"6-2":{},"6-10":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{}},"component":{}}],["template.th",{"_index":890,"title":{},"name":{},"text":{"6":{}},"component":{}}],["tempor",{"_index":711,"title":{},"name":{},"text":{"5":{}},"component":{}}],["temporari",{"_index":1517,"title":{},"name":{},"text":{"10":{}},"component":{}}],["tend",{"_index":762,"title":{},"name":{},"text":{"5":{}},"component":{}}],["term",{"_index":821,"title":{},"name":{},"text":{"6":{},"9":{}},"component":{}}],["termin",{"_index":1369,"title":{},"name":{},"text":{"9":{}},"component":{}}],["test",{"_index":197,"title":{"3-23":{}},"name":{},"text":{"2":{},"3":{},"6":{},"8":{},"10":{}},"component":{}}],["text",{"_index":73,"title":{},"name":{},"text":{"1":{},"6":{},"9":{}},"component":{}}],["that’",{"_index":131,"title":{},"name":{},"text":{"2":{},"5":{},"6":{},"8":{}},"component":{}}],["theori",{"_index":1416,"title":{},"name":{},"text":{"9":{}},"component":{}}],["thereof",{"_index":1327,"title":{},"name":{},"text":{"9":{}},"component":{}}],["third",{"_index":362,"title":{"3-19":{}},"name":{},"text":{"3":{},"5":{},"8":{},"9":{}},"component":{}}],["those",{"_index":561,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["thread",{"_index":319,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["three",{"_index":788,"title":{},"name":{},"text":{"5":{},"6":{}},"component":{}}],["through",{"_index":852,"title":{},"name":{},"text":{"6":{},"9":{},"10":{}},"component":{}}],["thrown",{"_index":637,"title":{},"name":{},"text":{"3":{}},"component":{}}],["thu",{"_index":428,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["time",{"_index":701,"title":{},"name":{},"text":{"5":{},"6":{},"7":{}},"component":{}}],["titl",{"_index":1406,"title":{},"name":{},"text":{"9":{}},"component":{}}],["to.al",{"_index":887,"title":{},"name":{},"text":{"6":{}},"component":{}}],["tool",{"_index":617,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"7":{},"8":{},"10":{}},"component":{}}],["tool(compilationdatabas",{"_index":516,"title":{},"name":{},"text":{"3":{}},"component":{}}],["tool.run",{"_index":532,"title":{},"name":{},"text":{"3":{}},"component":{}}],["tool.run(actionfactory.get",{"_index":521,"title":{},"name":{},"text":{"3":{}},"component":{}}],["toolarg",{"_index":415,"title":{},"name":{},"text":{"3":{}},"component":{}}],["toolargs::appli",{"_index":430,"title":{},"name":{},"text":{"3":{}},"component":{}}],["top",{"_index":808,"title":{"6-4":{}},"name":{},"text":{"6":{},"9":{}},"component":{}}],["tort",{"_index":1417,"title":{},"name":{},"text":{"9":{}},"component":{}}],["tparam",{"_index":810,"title":{"6-15":{}},"name":{},"text":{"6":{}},"component":{}}],["trace",{"_index":646,"title":{},"name":{},"text":{"3":{}},"component":{}}],["track",{"_index":1336,"title":{},"name":{},"text":{"9":{}},"component":{}}],["trade",{"_index":850,"title":{},"name":{},"text":{"6":{},"9":{}},"component":{}}],["trademark",{"_index":1377,"title":{},"name":{},"text":{"9":{}},"component":{}}],["trail",{"_index":927,"title":{},"name":{},"text":{"6":{}},"component":{}}],["tranch",{"_index":809,"title":{"6-7":{}},"name":{},"text":{"6":{}},"component":{}}],["transfer",{"_index":1354,"title":{},"name":{},"text":{"9":{}},"component":{}}],["transform",{"_index":452,"title":{},"name":{},"text":{"3":{},"7":{},"9":{},"10":{}},"component":{}}],["translat",{"_index":545,"title":{},"name":{},"text":{"3":{},"6":{},"9":{}},"component":{}}],["translationunitdecl",{"_index":550,"title":{},"name":{},"text":{"3":{}},"component":{}}],["transport",{"_index":639,"title":{},"name":{},"text":{"3":{}},"component":{}}],["travers",{"_index":353,"title":{"3-10":{}},"name":{},"text":{"3":{}},"component":{}}],["tree",{"_index":593,"title":{},"name":{},"text":{"3":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["triplet",{"_index":1097,"title":{},"name":{},"text":{"8":{}},"component":{}}],["true",{"_index":250,"title":{},"name":{},"text":{"2":{}},"component":{}}],["truth",{"_index":733,"title":{},"name":{},"text":{"5":{},"7":{}},"component":{}}],["tu",{"_index":566,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["two",{"_index":65,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"9":{},"10":{}},"component":{}}],["type",{"_index":223,"title":{"6-11":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"9":{},"10":{}},"component":{}}],["typedef",{"_index":189,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"6":{}},"component":{}}],["typedefinfo",{"_index":470,"title":{},"name":{},"text":{"3":{}},"component":{}}],["typenam",{"_index":969,"title":{},"name":{},"text":{"6":{}},"component":{}}],["typic",{"_index":500,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"8":{}},"component":{}}],["uncaught",{"_index":643,"title":{},"name":{},"text":{"3":{}},"component":{}}],["uncompl",{"_index":791,"title":{},"name":{},"text":{"5":{}},"component":{}}],["undef",{"_index":1130,"title":{},"name":{},"text":{"8":{}},"component":{}}],["under",{"_index":1279,"title":{},"name":{},"text":{"9":{}},"component":{}}],["undermin",{"_index":1009,"title":{},"name":{},"text":{"7":{}},"component":{}}],["understand",{"_index":756,"title":{},"name":{},"text":{"5":{},"7":{}},"component":{}}],["unifi",{"_index":836,"title":{},"name":{},"text":{"6":{},"7":{},"10":{}},"component":{}}],["union",{"_index":905,"title":{},"name":{},"text":{"6":{},"9":{}},"component":{}}],["uniqu",{"_index":893,"title":{},"name":{},"text":{"6":{}},"component":{}}],["unit",{"_index":546,"title":{},"name":{},"text":{"3":{},"6":{}},"component":{}}],["unit_test_main",{"_index":657,"title":{},"name":{},"text":{"3":{}},"component":{}}],["univers",{"_index":553,"title":{},"name":{},"text":{"3":{},"9":{}},"component":{}}],["unix",{"_index":1092,"title":{},"name":{},"text":{"8":{}},"component":{}}],["unless",{"_index":1388,"title":{},"name":{},"text":{"9":{}},"component":{}}],["unlik",{"_index":1549,"title":{},"name":{},"text":{"10":{}},"component":{}}],["unmanag",{"_index":766,"title":{},"name":{},"text":{"5":{}},"component":{}}],["unnecessari",{"_index":1521,"title":{},"name":{},"text":{"10":{}},"component":{}}],["unread",{"_index":1560,"title":{},"name":{},"text":{"10":{}},"component":{}}],["unrecogn",{"_index":456,"title":{},"name":{},"text":{"3":{}},"component":{}}],["unsign",{"_index":317,"title":{},"name":{},"text":{"2":{}},"component":{}}],["unspecifi",{"_index":801,"title":{},"name":{},"text":{"5":{}},"component":{}}],["unstabl",{"_index":512,"title":{},"name":{},"text":{"3":{}},"component":{}}],["unstructur",{"_index":824,"title":{},"name":{},"text":{"6":{}},"component":{}}],["unus",{"_index":956,"title":{},"name":{},"text":{"6":{}},"component":{}}],["unwant",{"_index":1175,"title":{},"name":{},"text":{"8":{}},"component":{}}],["unwind",{"_index":1243,"title":{},"name":{},"text":{"8":{}},"component":{}}],["up",{"_index":753,"title":{},"name":{},"text":{"5":{},"7":{},"10":{}},"component":{}}],["urbana",{"_index":1480,"title":{},"name":{},"text":{"9":{}},"component":{}}],["uri",{"_index":1109,"title":{},"name":{},"text":{"8":{}},"component":{}}],["url",{"_index":261,"title":{},"name":{},"text":{"2":{},"6":{}},"component":{}}],["us",{"_index":47,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"8":{},"9":{},"10":{}},"component":{}}],["usabl",{"_index":845,"title":{},"name":{},"text":{"6":{},"7":{}},"component":{}}],["usag",{"_index":110,"title":{"10":{}},"name":{"10":{}},"text":{"2":{},"10":{}},"component":{}}],["user",{"_index":286,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"10":{}},"component":{}}],["user’",{"_index":779,"title":{},"name":{},"text":{"5":{}},"component":{}}],["usingdirect",{"_index":904,"title":{},"name":{},"text":{"6":{}},"component":{}}],["usinginfo",{"_index":491,"title":{},"name":{},"text":{"3":{}},"component":{}}],["usr",{"_index":354,"title":{"3-11":{}},"name":{},"text":{"3":{}},"component":{}}],["usual",{"_index":15,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"10":{}},"component":{}}],["util",{"_index":596,"title":{},"name":{},"text":{"3":{}},"component":{}}],["v0.0.1",{"_index":691,"title":{},"name":{},"text":{"4":{},"8":{}},"component":{}}],["v0.0.2",{"_index":692,"title":{},"name":{},"text":{"4":{},"8":{}},"component":{}}],["v2.0",{"_index":1281,"title":{},"name":{},"text":{"9":{}},"component":{}}],["v2.12.6",{"_index":1141,"title":{},"name":{},"text":{"8":{}},"component":{}}],["valid",{"_index":1550,"title":{},"name":{},"text":{"10":{}},"component":{}}],["valu",{"_index":224,"title":{},"name":{},"text":{"2":{},"6":{},"8":{}},"component":{}}],["vari",{"_index":635,"title":{},"name":{},"text":{"3":{}},"component":{}}],["variabl",{"_index":473,"title":{},"name":{},"text":{"3":{},"6":{},"8":{}},"component":{}}],["variableinfo",{"_index":472,"title":{},"name":{},"text":{"3":{}},"component":{}}],["variad",{"_index":912,"title":{},"name":{},"text":{"6":{}},"component":{}}],["variant",{"_index":960,"title":{},"name":{},"text":{"6":{},"8":{}},"component":{}}],["varieti",{"_index":846,"title":{},"name":{},"text":{"6":{}},"component":{}}],["variou",{"_index":862,"title":{},"name":{},"text":{"6":{},"7":{},"8":{}},"component":{}}],["vcpkg",{"_index":1090,"title":{},"name":{},"text":{"8":{}},"component":{}}],["vcpkg.bat",{"_index":1095,"title":{},"name":{},"text":{"8":{}},"component":{}}],["vcpkg.ex",{"_index":1096,"title":{},"name":{},"text":{"8":{}},"component":{}}],["vcpkg.json",{"_index":1103,"title":{},"name":{},"text":{"8":{}},"component":{}}],["vcpkg.json.exampl",{"_index":1104,"title":{},"name":{},"text":{"8":{}},"component":{}}],["vcpkg.sh",{"_index":1099,"title":{},"name":{},"text":{"8":{}},"component":{}}],["verbal",{"_index":1332,"title":{},"name":{},"text":{"9":{}},"component":{}}],["verbos",{"_index":321,"title":{},"name":{},"text":{"2":{}},"component":{}}],["veri",{"_index":781,"title":{},"name":{},"text":{"5":{}},"component":{}}],["version",{"_index":747,"title":{},"name":{},"text":{"5":{},"7":{},"8":{},"9":{},"10":{}},"component":{}}],["via",{"_index":212,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"6":{}},"component":{}}],["virtual",{"_index":914,"title":{},"name":{},"text":{"6":{}},"component":{}}],["visit",{"_index":331,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["visitor",{"_index":503,"title":{},"name":{},"text":{"3":{}},"component":{}}],["visual",{"_index":379,"title":{},"name":{},"text":{"3":{},"8":{},"10":{}},"component":{}}],["void",{"_index":42,"title":{},"name":{},"text":{"1":{},"2":{}},"component":{}}],["volatil",{"_index":930,"title":{},"name":{},"text":{"6":{}},"component":{}}],["waiv",{"_index":1468,"title":{},"name":{},"text":{"9":{}},"component":{}}],["walk",{"_index":548,"title":{},"name":{},"text":{"3":{}},"component":{}}],["want",{"_index":1075,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["warn",{"_index":258,"title":{},"name":{},"text":{"2":{},"3":{}},"component":{}}],["warranti",{"_index":1402,"title":{},"name":{},"text":{"9":{}},"component":{}}],["way",{"_index":153,"title":{},"name":{},"text":{"2":{},"5":{},"10":{}},"component":{}}],["web",{"_index":848,"title":{},"name":{},"text":{"6":{}},"component":{}}],["webrequest",{"_index":1108,"title":{},"name":{},"text":{"8":{}},"component":{}}],["websit",{"_index":1089,"title":{},"name":{},"text":{"8":{}},"component":{}}],["well",{"_index":748,"title":{},"name":{},"text":{"5":{},"7":{}},"component":{}}],["whatev",{"_index":445,"title":{},"name":{},"text":{"3":{}},"component":{}}],["wherev",{"_index":1380,"title":{},"name":{},"text":{"9":{}},"component":{}}],["whether",{"_index":281,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"9":{}},"component":{}}],["whole",{"_index":1325,"title":{},"name":{},"text":{"9":{}},"component":{}}],["wide",{"_index":1276,"title":{},"name":{},"text":{"8":{}},"component":{}}],["width",{"_index":967,"title":{},"name":{},"text":{"6":{}},"component":{}}],["width:2",{"_index":383,"title":{},"name":{},"text":{"3":{},"10":{}},"component":{}}],["wildcard",{"_index":162,"title":{},"name":{},"text":{"2":{}},"component":{}}],["win",{"_index":1198,"title":{},"name":{},"text":{"8":{}},"component":{}}],["win64.7z",{"_index":1040,"title":{},"name":{},"text":{"8":{}},"component":{}}],["win64.msi",{"_index":1043,"title":{},"name":{},"text":{"8":{}},"component":{}}],["win64.zip",{"_index":1045,"title":{},"name":{},"text":{"8":{}},"component":{}}],["window",{"_index":634,"title":{},"name":{},"text":{"3":{},"8":{}},"component":{}}],["within",{"_index":206,"title":{},"name":{},"text":{"2":{},"7":{},"9":{}},"component":{}}],["without",{"_index":192,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"7":{},"9":{}},"component":{}}],["word",{"_index":705,"title":{},"name":{},"text":{"5":{}},"component":{}}],["work",{"_index":538,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"9":{},"10":{}},"component":{}}],["workaround",{"_index":740,"title":{},"name":{},"text":{"5":{}},"component":{}}],["workflow",{"_index":785,"title":{},"name":{},"text":{"5":{},"6":{},"10":{}},"component":{}}],["worldwid",{"_index":1343,"title":{},"name":{},"text":{"9":{}},"component":{}}],["worri",{"_index":792,"title":{},"name":{},"text":{"5":{}},"component":{}}],["worst",{"_index":707,"title":{},"name":{},"text":{"5":{}},"component":{}}],["write",{"_index":696,"title":{},"name":{},"text":{"5":{},"6":{},"8":{},"9":{}},"component":{}}],["written",{"_index":187,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"9":{}},"component":{}}],["x64",{"_index":1098,"title":{},"name":{},"text":{"8":{}},"component":{}}],["xf",{"_index":1117,"title":{},"name":{},"text":{"8":{}},"component":{}}],["xml",{"_index":278,"title":{},"name":{},"text":{"2":{},"3":{},"4":{},"5":{},"6":{}},"component":{}}],["yaml",{"_index":83,"title":{"2-1":{}},"name":{},"text":{"2":{},"3":{}},"component":{}}],["yml",{"_index":664,"title":{},"name":{},"text":{"3":{}},"component":{}}],["you’r",{"_index":1501,"title":{},"name":{},"text":{"10":{}},"component":{}}],["yyyi",{"_index":1450,"title":{},"name":{},"text":{"9":{}},"component":{}}],["zi",{"_index":1206,"title":{},"name":{},"text":{"8":{}},"component":{}}],["zip",{"_index":1033,"title":{},"name":{},"text":{"8":{}},"component":{}}]],"pipeline":["stemmer"]},"store":{"documents":{"1":{"id":1,"text":"Documenting the Code arrow_back arrow_forward The code should be documented with the Doc Comment format, also informally known as \"javadoc\" format or Doxygen-style comments. In its most basic form, these are usually comment blocks between /** and */ placed above a class, function, or field declaration: /** The main information about a person This class represents a person with a name and an age. This is the information about a person that we need to store in our system. */ struct person { std::string name; int age; } /** A function to greet a person This function takes a person and prints a greeting message. @param p The person to greet */ void greet(person const& p); A common alternative is to use ///, especially for single-line comments: /// A constant representing the number of hours in a day static constexpr int hours_in_day = 24; Both the class and the function above have doc comments with a brief sentence and a detailed description. Most doc comments will contain these two sections, which could also be explicitly marked with @brief and @details commands. Doc comments can also contain a number of special commands such as @param that are used to document the parameters of a function. The following commands can be used to format the text in the doc comments: Command Description @a Formats the text in italics @e Formats the text in italics @em Formats the text in italics @b Formats the text in bold @strong Formats the text in bold Edit this Page","title":"Commands","component":"mrdocs","version":"develop","name":"commands","url":"/mrdocs/develop/commands.html","titles":[{"text":"Style","hash":"_style","id":1}]},"2":{"id":2,"text":"The Configuration File arrow_back arrow_forward MrDocs uses a configuration file to control how the documentation is generated. The file is used to specify options such as the generator to use, additional compilation options, and filters. Here’s an example of a configuration file: source-root: ../include multipage: false generate: adoc The Usage page provides a detailed explanation of what to combine options from the configuration file and the command line. The Reference section provides a detailed explanation of the options available. More information about the generators can be found in the Generators page. To get linting and autocompletion in the config file, a schema for the config can be specified. In JetBrains IDEs, # $schema: can be used to bind a schema to a file. In editors with plugins based on the YAML language server, # yaml-language-server: $schema= can be used. The schema for mrdocs.yml is provided here. The following shows an example of a file specifying an inline-schema that’s compatible with JetBrains IDEs and editors using the YAML language server. # $schema: https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json # yaml-language-server: $schema=https://mrdocs.com/docs/mrdocs/develop/_attachments/mrdocs.schema.json source-root: ../include multipage: false generate: adoc A number of options can be used to specify with which compile options MrDocs should be run. source-root: .. compilation-database: ../CMakeLists.txt cmake: '-D MRDOCS_BUILD=ON' defines: 'MRDOCS_BUILD' The compile options primarily come from the compilation-database file. When this file is generated from a CMakeLists.txt script, the cmake option can be used to specify additional options to pass to CMake. Additionally, the defines option can be used to specify preprocessor definitions that should be used when generating the documentation. These definitions are included in all targets of the compilation database. Not all symbols in a project may be relevant to the documentation. MrDocs provides a way to filter out symbols based on their names. filters: symbols: (1) exclude: (2) include: (3) 1 Optional symbols key 2 Optional exclude key 3 Optional include key Symbol filter patterns are specified using (optionally) qualified names, and may contain wildcards: filters: symbols: exclude: - 'A::B' - 'A::f*' If a symbol matches a pattern in the exclude list, that symbol and its members will not be extracted: filters: symbols: exclude: - 'A' // ok, does not match any excluded pattern void f0(); namespace A // matches the pattern 'A', will not be extracted { // enclosing namespace matches an excluded pattern: // the symbol will not be extracted void f1(); } The filters.symbols.include key can be used to override the exclude list for specific symbols. A symbol which matches an included pattern and an excluded pattern will be extracted. This permits fine-grained control of extraction for individual members of a class or namespace: filters: symbols: exclude: - 'A' include: - 'A::g*' namespace A { // enclosing namespace matches an excluded pattern, will not be extracted void f0(); // ok, matches the pattern 'A::g*' which overrides the exclude list void g0(); } In order for a filter pattern to match a symbol, it must consist of simple identifiers that match the name as written in its declaration: namespace aliases, typedef-names, and decltype specifiers naming the symbol cannot be used. Specifying include patterns is only useful when the pattern would match a subset of symbols matched by an exclude pattern. An include pattern without a subsuming exclude pattern will be ignored. Symbols can also be filtered based on the files they are declared in. This can be useful for excluding files that exclusively contain implementation details or test code. input: include: - ../include (1) file-patterns: - *.hpp (2) 1 A list of directories to include. Only symbols defined in these files will be extracted. 2 A list of file patterns to include. Only symbols defined in files matching these patterns will be extracted. The implementation-detail and see-below options can be used to designate namespaces as implementation detail namespaces. implementation-detail: 'impl' see-below: 'see_below' If a namespace is designated as an implementation detail namespace, all symbols within that namespace will be marked as implementation details in the documentation. namespace impl { class A {}; } /// @brief A foo function A foo(); The impl namespace is designated as an implementation detail namespace, so all symbols within it will be marked as implementation details in the documentation. This means the symbol A would not be documented and the function foo could be documented as follows: /* implementation detail */ foo(); On the other hand, if a namespace is designated as a see_below namespace, all symbols within that namespace will be marked as \"see below\" in the documentation. namespace see_below { class B {}; } In the documentation, the symbol B would be marked as \"see-below\" and could be documented as: class B { /* see below */ }; The following options can be defined both in the configuration file and on the command line, where the command line options always take precedence. Options that can only be provided via the command line The following options can be used to control the general behavior of MrDocs and can only be provided via the command line. These include options to specify inputs and the configuration file, which cannot be set on the configuration file itself. Name Description Default inputs (list of paths) (Command line only) Configuration or compilation database files [] config (file path) (Required, Command line only) MrDocs configuration file \"/mrdocs.yml\" inputs Configuration or compilation database files The inputs are configuration files or compilation database files that used to generate the documentation. When the input ends with mrdocs.yml, it is interpreted as a configuration file, the file is read and the options are used to generate the documentation as if it was provided to the config option. When the input ends with compilation_database.json or CMakeLists.txt, it is interpreted as a compilation database file, the file is read and the compiler flags are used to generate the documentation as if it was provided to the compilation-database option. Type: list of paths Command line only Default value: [] This command is a command line sink. Any command line argument that is not recognized by the parser will be passed to this command. config MrDocs configuration file The configuration file is a YAML file that contains the options used to generate the documentation. The configuration file is read and the options are used to generate the documentation. The configuration file can be used to specify the source code, the output directory, the compilation database, the generator, and the filters. Type: file path Required Command line only Default value: \"/mrdocs.yml\" Relative paths are relative to: \"\" Paths to the source code and output directories Name Description Default source-root (directory path) Path to the root directory of the source code \"\" output (path) Directory or file for generating output \"/reference-output\" compilation-database (file path) Path to the compilation database source-root Path to the root directory of the source code Type: directory path Default value: \"\" Relative paths are relative to: \"\" output Directory or file for generating output Multipage generators expect a directory. Single page generators expect a file or a directory where the file will be created. If the directory does not exist, it will be created. Type: path Default value: \"/reference-output\" Relative paths are relative to: \"\" compilation-database Path to the compilation database Path to the compilation database or a build script to generate it. The compilation database is a JSON file that contains the compiler commands used to build the source code. The compilation database is used to extract the compiler flags and the source files used to build the source code and extract symbols. This option also accepts the path to a build script such as CMakeLists.txt to be used to generate the compilation database. In this case, MrDocs will look for CMake in PATH or in CMAKE_ROOT and run the script to generate the compilation database file. Type: file path Default value: Relative paths are relative to: \"\" Options for building the source code When MrDocs is responsible to running the build scripts and generating the compilation database, these options are used to build the source code. Name Description Default cmake (string) CMake arguments when generating the compilation database from CMakeLists.txt defines (list of strings) Additional defines passed to the compiler [] use-system-stdlib (boolean) Use the system standard library false stdlib-includes (list of paths) Standard Library include paths [\"/share/mrdocs/libcxx\", \"/share/mrdocs/clang\"] system-includes (list of paths) System include paths [] includes (list of paths) Include paths [] cmake CMake arguments when generating the compilation database from CMakeLists.txt When the compilation-database option is a CMakeLists.txt file, these arguments are passed to the cmake command to generate the compilation_database.json. Type: string Default value: defines Additional defines passed to the compiler Additional defines passed to the compiler when building the source code. These defines are added to the compilation database regardless of the strategy to generate it. Type: list of strings Default value: [] use-system-stdlib Use the system standard library True if the compiler has to use just the system standard library. When set to true, the compiler uses the system standard library instead of the standard library provided by the compiler. Type: boolean Default value: false stdlib-includes Standard Library include paths Standard Library include paths. These paths are used to replace the standard library paths provided by the compiler. Type: list of paths Default value: [\"/share/mrdocs/libcxx\", \"/share/mrdocs/clang\"] Relative paths are relative to: \"\" system-includes System include paths System include paths. These paths are used to add directories to the system include search path. The system include search path is used to search for system headers. The system headers are headers that are provided by the system and are not part of the project. The system headers are used to provide the standard library headers and other system headers. The system headers are not part of the project and are not checked for warnings and errors. Type: list of paths Default value: [] includes Include paths Include paths. These paths are used to add directories to the include search path. The include search path is used to search for headers. The headers are used to provide declarations and definitions of symbols. The headers are part of the project and are checked for warnings and errors. Type: list of paths Default value: [] Generators to create the documentation and their options Name Description Default generate (enum) Generator used to create the documentation \"adoc\" multipage (boolean) Generate a multipage documentation true base-url (string) Base URL for links to source code addons (path) Path to the Addons directory \"/share/mrdocs/addons\" legible-names (boolean) Use legible names true embedded (boolean) Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. This option is useful for producing documents that can be inserted into an external template. false generate Generator used to create the documentation Type: enum Default value: \"adoc\" Allowed values: [\"adoc\", \"html\", \"xml\"] multipage Generate a multipage documentation Generates a multipage documentation. The output directory must be a directory. This option acts as a hint to the generator to create a multipage documentation. Whether the hint is followed or not depends on the generator. Type: boolean Default value: true base-url Base URL for links to source code Base URL for links to source code. The base URL is used to create links to the source code in the documentation. The base URL is combined with the path to the source file to create the link. Type: string Default value: addons Path to the Addons directory Path to the Addons directory. The Addons directory contains the template files used by generators to create the documentation. When a custom Addons directory is not specified, the default templates are used. The default templates are located at the share/mrdocs/addons directory of the MrDocs installation. Users can create custom templates by copying the default templates to a custom directory and specifying the custom directory using this option. Type: path Default value: \"/share/mrdocs/addons\" Relative paths are relative to: \"\" legible-names Use legible names Use legible names for ids in the documentation. When set to true, MrDocs uses legible names for symbols in the documentation. These are symbols that are legible but still safe for URLs. When the option is set to false, MrDocs uses a hash of the symbol ID. Type: boolean Default value: true embedded Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. This option is useful for producing documents that can be inserted into an external template. Type: boolean Default value: false Filters to include or exclude files and symbols from the documentation Name Description Default referenced-declarations (enum) Extraction policy for references to external declarations \"dependency\" anonymous-namespaces (enum) Extraction policy for anonymous namespaces \"always\" inaccessible-members (enum) Extraction policy for inaccessible members \"always\" inaccessible-bases (enum) Extraction policy for inaccessible base classes \"always\" see-below (list of strings) Namespaces for symbols rendered as \"see-below\" [] implementation-defined (list of strings) Namespaces for symbols rendered as \"implementation-defined\" [] input (object) Include files to extract filters (object) Filters referenced-declarations Extraction policy for references to external declarations Determine whether external declarations should be extracted when they are referenced in the source code. When set to always, external declarations are always extracted. When set to dependency, external declarations are extracted only if they are referenced by the source code. When set to never, external declarations are never extracted. Type: enum Default value: \"dependency\" Allowed values: [\"always\", \"dependency\", \"never\"] anonymous-namespaces Extraction policy for anonymous namespaces Determine whether symbols in anonymous namespaces should be extracted. When set to always, symbols in anonymous namespaces are always extracted. When set to dependency, symbols in anonymous namespaces are extracted only if they are referenced by the source code. When set to never, symbols in anonymous namespaces are never extracted. Type: enum Default value: \"always\" Allowed values: [\"always\", \"dependency\", \"never\"] inaccessible-members Extraction policy for inaccessible members Determine whether inaccessible members should be extracted. When set to always, inaccessible members are always extracted. When set to dependency, inaccessible members are extracted only if they are referenced by the source code. When set to never, inaccessible members are never extracted. Type: enum Default value: \"always\" Allowed values: [\"always\", \"dependency\", \"never\"] inaccessible-bases Extraction policy for inaccessible base classes Determine whether inaccessible base classes should be extracted. When set to always, inaccessible base classes are always extracted. When set to dependency, inaccessible base classes are extracted only if they are referenced by the source code. When set to never, inaccessible base classes are never extracted. Type: enum Default value: \"always\" Allowed values: [\"always\", \"dependency\", \"never\"] see-below Namespaces for symbols rendered as \"see-below\" Namespaces for symbols rendered as \"see-below\". Symbols in these namespaces are not extracted and are rendered as \"see-below\" in the documentation. This option is used to exclude symbols from the documentation that are considered part of the private API of the project. Type: list of strings Default value: [] implementation-defined Namespaces for symbols rendered as \"implementation-defined\" Namespaces for symbols rendered as \"implementation-defined\". Symbols in these namespaces are not extracted and are rendered as \"implementation-defined\" in the documentation. This option is used to exclude symbols from the documentation that are considered part of the private API of the project. Type: list of strings Default value: [] input Include files to extract Include files to extract. Only the files listed in this option are extracted. The paths are relative to the mrdocs configuration file. Type: object (See below) filters Filters Type: object (See below) input suboptions Name Description Default input.include (list of paths) Input directories to include [] input.file-patterns (list of strings) File patterns to include [] input.include Input directories to include Input directories to include. Only the files in these directories are extracted. The paths are relative to the mrdocs configuration file. Type: list of paths Default value: [] input.file-patterns File patterns to include File patterns to include. Only the files that match these patterns are extracted. The patterns are relative to the input directories. Type: list of strings Default value: [] filters suboptions Name Description Default filters.symbols (object) Symbol filters filters.symbols Symbol filters Symbol filters. Symbols that match these filters are extracted. The filters are applied to the fully qualified name of the symbol. Type: object (See below) symbols suboptions Name Description Default filters.symbols.include (list of strings) Specifies symbol inclusion patterns [] filters.symbols.exclude (list of strings) Specifies symbol exclusion patterns [] filters.symbols.include Specifies symbol inclusion patterns Specifies symbol inclusion patterns. Symbols that match these patterns are extracted. The patterns are applied to the fully qualified name of the symbol. Type: list of strings Default value: [] filters.symbols.exclude Specifies symbol exclusion patterns Specifies symbol exclusion patterns. Symbols that match these patterns are not extracted. The patterns are applied to the fully qualified name of the symbol. Type: list of strings Default value: [] Metadata and C++ constructs to extract Name Description Default detect-sfinae (boolean) Detect SFINAE expressions true detect-sfinae Detect SFINAE expressions When set to true, MrDocs detects SFINAE expressions in the source code and extracts them as part of the documentation. Expressions such as std::enable_if are detected, removed, and documented as a requirement. Type: boolean Default value: true Miscellaneous options Name Description Default concurrency (unsigned integer) (Command line only) Number of threads to use 0 verbose (boolean) Verbose output false report (unsigned integer) The minimum reporting level: 0 to 4 1 ignore-map-errors (boolean) Continue if files are not mapped correctly false ignore-failures (boolean) Whether AST visitation failures should not stop the program false concurrency Number of threads to use The desired level of concurrency: 0 for hardware-suggested. Type: unsigned integer Command line only Default value: 0 Minimum value: 0 verbose Verbose output Verbose output. When set to true, MrDocs outputs additional information during the generation of the documentation. Type: boolean Default value: false report The minimum reporting level: 0 to 4 The reporting level determines the amount of information displayed during the generation of the documentation. The levels are: 0 - no output, 1 - errors only, 2 - errors and warnings, 3 - errors, warnings, and information, 4 - errors, warnings, information, and debug information. Type: unsigned integer Default value: 1 Minimum value: 0 Maximum value: 4 ignore-map-errors Continue if files are not mapped correctly When set to true, MrDocs continues to generate the documentation even if some files are not mapped correctly. Files are not mapped correctly when the source file is not found or the compilation database does not contain the compiler flags for the source file. Type: boolean Default value: false ignore-failures Whether AST visitation failures should not stop the program When set to true, MrDocs continues to generate the documentation even if there are AST visitation failures. AST visitation failures occur when the source code contains constructs that are not supported by MrDocs. Type: boolean Default value: false Edit this Page","title":"The Configuration File","component":"mrdocs","version":"develop","name":"config-file","url":"/mrdocs/develop/config-file.html","titles":[{"text":"YAML Schema","hash":"_yaml_schema","id":1},{"text":"Build Options","hash":"_build_options","id":2},{"text":"Filters","hash":"_filters","id":3},{"text":"Symbol Filters","hash":"_symbol_filters","id":4},{"text":"File Filters","hash":"_file_filters","id":5},{"text":"Private Symbols","hash":"_private_symbols","id":6},{"text":"Reference","hash":"config-options-reference","id":7},{"text":"\n\nCommand Line Options\n","hash":"_command_line_options_options_reference","id":8},{"text":"\n\nPaths\n","hash":"_paths_options_reference","id":9},{"text":"\n\nBuild options\n","hash":"_build_options_options_reference","id":10},{"text":"\n\nGenerators\n","hash":"_generators_options_reference","id":11},{"text":"\n\nFilters\n","hash":"_filters_options_reference","id":12},{"text":"\n\nMetadata\n","hash":"_metadata_options_reference","id":13},{"text":"\n\nMiscellaneous\n","hash":"_miscellaneous_options_reference","id":14}]},"3":{"id":3,"text":"Contributor’s Guide arrow_back arrow_forward This page contains information for contributors to the MrDocs project. It is intended to provide an overview of the codebase and the process of adding new features. The MrDocs codebase is divided into several modules: graph TD %% Define styles for visual clarity classDef input fill:#D1E8FF,stroke:#005CFF,stroke-width:2; classDef artifact fill:#FFF5D1,stroke:#FFA500,stroke-width:2; classDef output fill:#D1FFD1,stroke:#008000,stroke-width:2; %% Define Inputs subgraph Inputs CF[Configuration File] CL[Command Line Arguments] end class CL,CF input %% Define Artifacts subgraph Processes P[Configuration Options] CD[Compilation Database] C[Corpus] G[Generator] end class P artifact class CD,C,G artifact %% Define Outputs subgraph Outputs D[Documentation] end class D output %% Relationships CF -->|Define| P CL -->|Define| P P -->|Defines| CD CD -->|Extract Symbols| C C -->|Feeds| G G -->|Produces| D %% Highlight dependencies for clarity P -->|Influences| G This section provides an overview of each module and how they interact with each other in the MrDocs codebase. MrDocs options affect the behavior of the compilation database, how symbols are extracted, and how the documentation is generated. They are parsed from the command line and configuration file. The main entry point of MrDocs is the DoGenerateAction function in src/tool/GenerateAction.cpp. It loads the options, creates the compilation database, and runs the extraction and generation steps. The options formed from a combination of command line arguments and configuration file settings. Command line and common options are defined in src/tool/ToolArgs.hpp. The ToolArgs class uses the llvm::cl library to define and parse the command line arguments. Common options are defined in mrdocs/Config.hpp. The Config class represents all public options that could be defined in a configuration file. It also provides a representation plugins can use to access public options from the command line or configuration file. The function clang::mrdocs::loadConfig is also provided to parse all public options from a YAML configuration file. Internally, MrDocs uses the derived clang::mrdocs::ConfigImpl class (src/lib/Lib/ConfigImpl.hpp) to also store the private representation of parsed options, such as filters. Common options are stored in the Config class, while the ToolArgs class stores common options and the command line options. For instance, the config option can only be set from the command line, as it would be illogical to expect the location of the configuration file to be defined in the configuration file itself. On the other hand, the output option can be set from both the command line and the configuration file so that the user can define a default output location in the configuration file. Thus, after the command line and configuration file options are parsed, they are finalized in the DoGenerateAction function by calling ToolArgs::apply, which overrides the configuration file options in Config with the command line options, when applicable. As a last step, DoGenerateAction converts the public Config settings into a ConfigImpl object, which is used by the rest of the program with the parsed options. At this stage, the clang frontend is used to parse the source code and generate an AST. The AST information is extracted and stored in a Corpus object (mrdocs/Corpus.hpp). The second step in DoGenerateAction is to create a CompilationDatabase object, so we can extract symbols from its source files. There are multiple possible sources for this file according to the configuration options: the file might be read directly from the path specified in the options, or it might be generated by MrDocs from build scripts. Whatever the source, a derived MrDocsCompilationDatabase object (lib/Lib/MrDocsCompilationDatabase.hpp) is created to represent the compilation database. The difference between the original CompilationDatabase and the MrDocsCompilationDatabase is that the latter includes a number of pre-processing steps to filter and transform compilation commands. For each compilation command: Command line arguments are adjusted Warnings are supressed Additional defines are added Implicit include directories are added Unrecognized arguments are removed Paths are normalized Non C++ files are filtered MrDocs represents each C++ symbol or construct as an Info node (mrdocs/Metadata/Info.hpp). MrDocs currently defines the following Info nodes: Name Description Declaration NamespaceInfo The symbol is a namespace mrdocs/Metadata/Namespace.hpp RecordInfo The symbol is a record (class or struct) mrdocs/Metadata/Record.hpp FunctionInfo The symbol is a function mrdocs/Metadata/Function.hpp EnumInfo The symbol is an enum mrdocs/Metadata/Enum.hpp TypedefInfo The symbol is a typedef mrdocs/Metadata/Typedef.hpp VariableInfo The symbol is a variable mrdocs/Metadata/Variable.hpp FieldInfo The symbol is a field mrdocs/Metadata/Field.hpp SpecializationInfo The symbol is a template specialization mrdocs/Metadata/Specialization.hpp FriendInfo The symbol is a friend declaration mrdocs/Metadata/Friend.hpp EnumeratorInfo The symbol is an enumerator mrdocs/Metadata/Enumerator.hpp GuideInfo The symbol is a deduction guide mrdocs/Metadata/Guide.hpp AliasInfo The symbol is a namespace alias mrdocs/Metadata/Alias.hpp UsingInfo The symbol is a using declaration mrdocs/Metadata/Using.hpp ConceptInfo The symbol is a concept mrdocs/Metadata/Concept.hpp Info can not only represent direct AST symbols but also C++ constructs that need to be inferred from these symbols. Nodes in the first category will typically be created in the initial extraction step, and nodes in the second category will be created in the finalization step. When defining a new Info type, it is important to consider how this type will be supported in all other modules of the codebase, including the AST visitor, generators, tests, and the documentation. The script .github/check_info_nodes_support.sh will attempt to infer whether most of these features have been implemented for each node type. MrDocs uses Clang to extract Info objects from the C++ AST. Clang offers two interfaces to access the C++ AST: the LibClang and LibTooling libraries. MrDocs uses the latter, as it provides full control over the AST traversal process at the cost of an unstable API. In LibTooling, once we have a Compilation Database, we can create a ClangTool object to run the Clang frontend on a set of source files. clang::tooling::ClangTool Tool(compilationDatabase, sourceFiles); newFrontendActionFactory actionFactory(); return Tool.run(actionFactory.get()); The clang::tooling::ClangTool::run method takes a clang::tooling::ToolAction object that defines how to process the AST. The action object that usually comes from a clang::tooling::FrontendActionFactory. In the example above, the SyntaxOnlyAction is used to parse the source code and generate the AST without any further processing. In MrDocs, this process happens in clang::mrdocs::CorpusImpl::build (src/lib/Lib/CorpusImpl.cpp), where we call Tool.run for each object in the database with our custom ASTAction action and ASTActionFactory factory (src/lib/AST/ASTVisitor.cpp). While ASTAction is the entry point for processing the AST, the real work is done by the ASTVisitor class. As the AST is generated, it is traversed by the ASTVisitor class. The entry point of this class is ASTVisitor::build, which recursively calls ASTVisitor::traverseDecl for the root clang::TranslationUnitDecl node of the translation unit. During the AST traversal stage, the complete AST generated by the clang frontend is walked beginning with this root TranslationUnitDecl node. Each clang node is converted into a mrdocs::Info node, which is then stored with any relevant information in a mrdocs::Corpus object. It is during this stage that USRs (universal symbol references) are generated and hashed with SHA1 to form the 160 bit SymbolID for an entity. Except for built-in types, all entities referenced in the corpus will be traversed and be assigned a SymbolID; including those from the standard library. This is necessary to generate the full interface for user-defined types. After running the AST traversal on all translation units, CorpusImpl::build contains finalization steps for the Corpus object. At this point, we process C++ constructs that are not directly represented in the AST. The first finalization step happens in CorpusImpl::build (src/lib/Lib/CorpusImpl.cpp), where the Info objects from a single translation unit are merged into a map containing the merged results from all other TUs. The merging step is necessary as there may be multiple identical definitions of the same entity. For instance, this represents the case where a function is declared at different points in the code base and might have different attributes or comments. At this step, the doc comments are also finalized. Each Info object has a pointer to its Javadoc object (mrdocs/Metadata/Javadoc.hpp), which is a representation of the documentation comments. After AST traversal and Info merging, the result is stored as a map of Info objects indexed by their respective SymbolID. A second finalization step is then performed in clang::mrdocs::finalize (src/lib/Metadata/Finalize.cpp), where any references to SymbolID objects that don’t exist are removed. This is necessary because the AST traversal will generate references to entities that should be filtered and are not present in the corpus. At this point, the Corpus object contains representations of all entities in the code base and further semantic C++ constructs that are not directly represented in the AST can be inferred. Documentation generators may traverse this structure by calling Corpus::traverse with a Corpus::Visitor derived visitor and the SymbolID of the entity to visit (e.g. the global namespace). Documentation generators are responsible for traversing the corpus and generating documentation in the desired format. The API for documentation generators is defined in mrdocs/Generator.hpp. The MrDocs codebase is organized as follows: This directory contains the public headers for the MrDocs library. include/mrdocs/—The core library headers include/mrdocs/ADT—Data Structures include/mrdocs/Dom—The Document Object Model for Abstract Trees include/mrdocs/Metadata—Info nodes and metadata classes include/mrdocs/Support—Various utility classes This directory contains the source code for the MrDocs library and private headers. src/lib/—The core library src/lib/AST/—The AST traversal code src/lib/Dom/—The Document Object Model for Abstract Trees src/lib/Gen/—Generators src/lib/Lib/—The core library classes src/lib/Metadata/—Info nodes and metadata classes src/lib/Support/—Various utility classes src/test/—The test directory src/test_suite/—The library used for testing src/tool/—The main program This directory contains shared resources for the documentation generators and utilities for developers. Its subdirectories are installed in the share directory of the installation. share/—Shared resources for the documentation generators share/cmake/—CMake modules to generate the documentation share/gdb/—GDB pretty printers share/mrdocs/—Shared resources for the documentation generators This directory contains the documentation for the MrDocs project. The documentation is written in AsciiDoc and can be built using the Antora tool. docs/—Documentation configuration files and scripts docs/modules/—The documentation asciidoc files docs/extensions—Antora extensions for the documentation This directory contains build scripts and configuration files for third-party libraries. third-party/—Third-party libraries third-party/llvm/—CMake Presets for LLVM third-party/duktape/—CMake scripts for Duktape third-party/lua/—A bundled Lua interpreter The AST visitor and metadata all use forward slashes to represent file pathnames, even on Windows. This is so the generated reference documentation does not vary based on the platform. Errors thrown by the program should always have type Exception. Objects of this type are capable of transporting an Error object. This is important for the scripting to work; exceptions are used to propagate errors from library code to scripts and back to the invoking code. For exceptional cases, these thrown exceptions should be uncaught. The tool installs an uncaught exception handler that prints a stack trace and exits the process immediately. All new features should be accompanied by tests. The mrdocs-test target is used to run the test suites. This target has its entry point in src/test/TestMain.cpp, which can take two paths: Golden testing: When input paths are provided to the test executable via the command line, the test suite will run the DoTestAction() that iterates all files in test-files comparing the input source files with the expected XML output files. Unit testing: When no input paths are provided, all unit tests will be run via unit_test_main(), defined by the our test-suite library in src/test_suite/test_suite.cpp. The fixtures for golden testing are defined in test-files/golden-tests, where files in each directory have the following format: mrdocs.yml: Basic configuration options for all files in this directory. .cpp: The input source file to extract symbols from. .xml: The expected XML output file generated with the XML generator. .bad.xml: The test output file generated when the test fails. .yml: Extra configuration options for this specific file. If you find a bug or have a feature request, please open an issue on the MrDocs GitHub repository: https://github.com/cppalliance/mrdocs/issues If you would like to contribute a feature or bug fix, please open a pull request on the MrDocs GitHub repository: https://github.com/cppalliance/mrdocs/pulls If you would like to discuss a feature or bug fix before opening a pull request, discussing happen in the #mrdocs channel on the Cpplang Slack: https://cpplang.slack.com/ Edit this Page","title":"Contributor’s Guide","component":"mrdocs","version":"develop","name":"contribute","url":"/mrdocs/develop/contribute.html","titles":[{"text":"Codebase Overview","hash":"_codebase_overview","id":1},{"text":"Parsing options","hash":"options","id":2},{"text":"Command Line Options","hash":"_command_line_options","id":3},{"text":"Configuration File","hash":"_configuration_file","id":4},{"text":"Finalizing Options","hash":"_finalizing_options","id":5},{"text":"Extracting Symbols","hash":"extract_symbols","id":6},{"text":"Compilation Database","hash":"compilation_database","id":7},{"text":"Info Nodes","hash":"info_nodes","id":8},{"text":"Clang LibTooling","hash":"_clang_libtooling","id":9},{"text":"AST Traversal","hash":"_ast_traversal","id":10},{"text":"USR Generation","hash":"_usr_generation","id":11},{"text":"Finalizing the Corpus","hash":"_finalizing_the_corpus","id":12},{"text":"Generators","hash":"_generators","id":13},{"text":"Directory Layout","hash":"_directory_layout","id":14},{"text":"include/—The main include directory","hash":"_includethe_main_include_directory","id":15},{"text":"src/—The main source directory","hash":"_srcthe_main_source_directory","id":16},{"text":"share/—Shared resources","hash":"_shareshared_resources","id":17},{"text":"docs—Documentation","hash":"_docsdocumentation","id":18},{"text":"third-party/—Helpers for third-party libraries","hash":"_third_partyhelpers_for_third_party_libraries","id":19},{"text":"Coding Standards","hash":"_coding_standards","id":20},{"text":"Paths","hash":"_paths","id":21},{"text":"Exceptions","hash":"_exceptions","id":22},{"text":"Testing","hash":"_testing","id":23},{"text":"Contributing","hash":"_contributing","id":24}]},"4":{"id":4,"text":"Demos arrow_back arrow_forward A few examples of reference documentation generated with MrDocs are available in https://mrdocs.com/demos/: develop Multi Page Single Page Library Asciidoc HTML Asciidoc HTML XML Boost.Scope Boost.URL master Multi Page Single Page Library Asciidoc HTML Asciidoc HTML XML Boost.URL v0.0.1 Multi Page Single Page Library Asciidoc HTML Asciidoc HTML XML Boost.URL v0.0.2 Multi Page Single Page Library Asciidoc HTML Asciidoc HTML XML Boost.URL Edit this Page","title":"Demos","component":"mrdocs","version":"develop","name":"demos","url":"/mrdocs/develop/demos.html","titles":[]},"5":{"id":5,"text":"Design Notes arrow_back arrow_forward C++ API design is challenging. When you write a function signature, or declare a class, it is at that moment when you are likely to have as much information as you will ever have about what it is supposed to do. The more time passes before you write the documentation, the less likely you are to remember all the details of what motivated the API in the first place. In other words, because best and worst engineers are naturally lazy, the temporal adjacency of the C++ declaration to the documentation improves outcomes. For this reason, having the documentation be as close as possible to the declaration is ideal. That is, the spatial adjacency of the C++ declaration to the documentation improves outcomes because it facilitates temporal adjacency. In summary, the automated extraction of reference documentation from C++ declarations containing attached documentation comments is ideal because: Temporally adjacent documentation is more comprehensive Spatially adjacent documentation requires less effort to maintain And causally connected documentation is more accurate From the perspective of engineers, however, the biggest advantage of automated documentation is that it implies a single source of truth for the API at a low cost. However, C++ codebases are notoriously difficult to document automatically because of constructs where the code needs to diverge from the intended API that represents the contract with the user. Tools like Doxygen typically require workarounds and manual intervention via preprocessor macros to get the documentation right. These workarounds are problematic because they effectively mean that there are two versions of the code: the well-formed and the ill-formed versions. This subverts the single sources of truth for the code. Mr. Docs Automatic Manual No Reference No workarounds ✅ ❌ ✅ ❌ Nice for users ✅ ✅ ✅ ❌ Single Source of Truth ✅ ❌ ❌ ❌ Less Work for Developers ✅ ❌ ❌ ✅ Always up-to-date ✅ ✅ ❌ ❌ By providing no reference to users, they are forced to read header files to understand the API. This is a problem because header files are not always the best source of truth for the API. Developers familiar with cppreference.com will know that the documentation there is often more informative than the header files. A common alternative is to provide a manual reference to the API. Developers duplicate the signatures, which requires extra work. This strategy tends to work well for small libraries and allows the developer to directly express the contract with the user. However, as the single source of truth is lost, it becomes unmanageable as the codebase grows. When the declaration changes, they forget to edit the docs, and the reference becomes out of date. In this case, it looks like the best solution is to automate the documentation. The causal connection between the declaration and the generated documentation improves outcomes. That’s when developers face difficulties with existing tools like Doxygen, which require workarounds and manual intervention to get the documentation right. The workarounds mean that there are two versions of the code: the well-formed and the ill-formed versions. The philosophy behind MrDocs is to provide solutions to these workarounds so that the single source of truth can be maintained with minimal effort by developers. With Mr.Docs, the documented C++ code should be the same as the code that is compiled. Once the documentation is extracted from the code, it is necessary to format it in a way that is useful to the user. This usually involves generating output files that match the content of the documentation to the user’s needs. A limitation of existing tools like Doxygen is that their output formats are not very customizable. It supports minor customization in the output style and, for custom content formats, it requires much more complex workflows, like generating XML files and writing secondary applications to process them. MrDocs attempts to support multiple output formats and customization options. In practice, MrDocs attempts to provide three levels of customization: At the first level, the user can use an existing generator and customize its templates and helper functions. The user can write a MrDocs plugin at a second level that defines a new generator. At a third level, it can use a generator for a structured file format and consume the output in a more uncomplicated secondary application or script. These multiple levels of complexity mean developers can worry only about the documentation content. In practice, developers rarely need new generators and are usually only interested in changing how an existing generator formats the output. Removing the necessity of writing and maintaining a secondary application only to customize the output via XML files can save these developers an immense amount of time. To deal with the complexity of C++ constructs, MrDocs uses clang’s libtooling API. That means MrDocs understands all C++: if clang can compile it, MrDocs knows about it. Here are a few constructs MrDocs attempts to understand and document automatically from the metadata: Overload sets Private APIs Unspecified Return Types Concepts Typedef / Aliases Constants Automatic Related Types Macros SFINAE Hidden Base Classes Hidden EBO Niebloids Coroutines Edit this Page","title":"Design Notes","component":"mrdocs","version":"develop","name":"design-notes","url":"/mrdocs/develop/design-notes.html","titles":[{"text":"Why automate documentation?","hash":"_why_automate_documentation","id":1},{"text":"Customization","hash":"_customization","id":2},{"text":"C++ Constructs","hash":"_c_constructs","id":3}]},"6":{"id":6,"text":"Generators arrow_back arrow_forward MrDocs uses a generator to convert the extracted symbols into documentation. MrDocs supports multiple output formats that can be specified via the generate option: The generate option can be used to specify the output format: # ... generate: adoc # ... Three output formats are supported: Format Description adoc AsciiDoc format. html HTML format. xml XML format. The corpus of symbols is provided to the generator responsible for converting these symbols into the desired output format. The xml generator is used as an intermediary format for other tools or for testing purposes. Users can write their own tools to process the XML output and generate custom documentation. The adoc and html generators use templates to generate the documentation. These templates can be customized to change the output format and style. Asciidoc is a text-based format that is easy to read and write. It can also be converted to other formats such as HTML and Markdown. HTML can be generated directly with the html format. The scatter plot below illustrates the available output formats for MrDocs, along with hypothetical solutions, in terms of redundancy and convenience. Redundancy: The amount of duplicated or unstructured information in the output format. Lower redundancy is generally preferred for post-processing, while higher redundancy can allow the output to use formats that are easier to use directly. Convenience: Reflects how readily the output format can be used without requiring additional tools or steps. Although Clang can generate and print an Abstract Syntax Tree (AST) directly for a Translation Unit (TU), it is not the most convenient format for generating documentation: It does not provide the AST in a format that’s easy to process. Equivalent symbols can be redeclared multiple times in the same translation unit and across translation units. The documentation for equivalent symbols also needs to be unified. The scatter plot shows the following output formats supported by MrDocs: XML: Aggregates all symbols and their documentation in a format that is straightforward to process. It’s suitable for advanced use cases involving custom post-processing tools. Asciidoc: Similar to HTML in convenience, Asciidoc files can be easily converted to HTML and multiple other formats with backends. HTML: Generates output that is directly usable in a variety of contexts, such as web pages or documentation systems. The Asciidoc and HTML generators also support Custom Templates to change the output format and style. This forms another possibility in the trade-off between redundancy and convenience. The best trade-offs, represented by the line passing through the generators, indicate the optimal solutions in terms of redundancy and convenience. Solutions on this line balance these goals effectively. Dots in the background represent other potential formats that do not lie on the front of best trade-offs, as they fail to optimize either redundancy or convenience compared to the available generators. MrDocs attempts to support various alternatives for customizing the output format and style without complex workflows to post-process XML output. The adoc and html generators use Handlebars templates. These templates can be customized to change the output format and style of the documentation. The templates used to generate the documentation are located in the share/mrdocs/addons/generator directory. Users can create a copy of these files and provide their own addons directory via the addons option in the configuration file or via the command line. addons: /path/to/custom/addons Each symbol goes through a main layout template in the /generator//layouts/single-symbol..hbs directory. This template is a simple entry point that renders the partial relative to the symbol kind. The partials are located in the /generator//partials directory. It typically contains the following files and subdirectories: symbol: A generic partial for rendering symbols. location: Partials for rendering location objects. symbol: Partials for rendering Symbol Objects. template: Partials for rendering Template Info Objects. type: Partials for rendering Type Info Objects. markup: partials for rendering markup elements such as lists, tables, and code blocks, in the output format. Please refer to the Document Object Model Reference for more information on each type of object. Partials common to all generators are available in the /generator/common/partials directory. The common partials are loaded before the generator-specific partials, which can override any common partials. The multipage generator renders the layout multiple times as separate pages for each symbol. The single-page generator renders the layout multiple times and concatenates the results in a single page. Each time the generator encounters a symbol, it renders the layout template with the symbol data as the Handlebars context. The layout template can include other partial templates to render the symbol data. These partials are available in the /generator//partials directory. The Document Object Model (DOM) for each symbol includes all information about the symbol.One advantage of custom templates over post-processing XML files is the ability to access symbols as a graph.If symbol A refers to symbol B, some properties of symbol B are likely to be required in the documentation of A.All templates and generators can access a reference to B by searching the symbol tree or simply by accessing the elements A refers to.All references to other symbols are resolved in the templates. The Document Object Model (DOM) is a tree structure that represents the symbols extracted from the source code.The DOM is used by the generator to render the documentation. The top-level object in the DOM is the context for a template.The top-level object has the following properties: Property Type Description symbol Symbol Object The symbol being rendered. config Config Object The configuration object. The Symbol object represents a symbol extracted from the source code.The symbol being rendered is available in the symbol object in the Handlebars context.The symbol object has the following properties: Property Type Description id string A unique identifier for the symbol. name string The nonqualified name of the symbol. kind string The kind of symbol. (e.g., class, function, variable) access string The access level of the symbol. (e.g., public, protected, private) implicit string Whether the symbol was implicitly extracted as a dependency. namespace Symbol Object[] The namespaces of the symbol. parent Symbol Object The parent namespace of the symbol. doc Any The documentation for the symbol. Handlebars generators extend each symbol with the following fields: Property Type Description url string The URL of the symbol. If the documentation is a single page, this is the anchor link to the symbol starting with #. If the documentation is multipage, this is the path to the symbol starting with /. anchor string The anchor link to the symbol. This is used for section IDs in the documentation. The Symbol object has additional properties based on the kind of symbol. The following table lists the additional properties for symbols that contain information about their scope (such as Namespaces and Classes): Property Type Description members Symbol Object[] The members of that scope (e.g., member functions, namespace symbols). overloads Symbol Object[] Same as members, but groups overloaded functions as unique symbols of kind overload. Symbol objects that contain information about the location include the following properties: Property Type Description loc Source Info Object The location of the symbol in the source code. When the symbol kind is namespace, the symbol object has the following additional properties: Property Type Description interface Tranche Object The interface of the namespace. usingDirectives Symbol Object[] The using directives of the namespace. When the symbol kind is record (e.g., class, struct, union), the symbol object has the following additional properties: Property Type Description tag string The type of record (e.g., class, struct, union). defaultAccess string The default access level of the record members (e.g., public, private). isTypedef bool Whether the record is a typedef. bases Base Info Object[] The base classes of the record. interface Interface Object The interface of the record. template Template Info Object The template information of the record. When the symbol kind is enum, the symbol object has the following additional properties: Property Type Description type Type Info Object The type information of the enum. isScoped bool Whether the enum is scoped. When the symbol kind is function, the symbol object has the following additional properties: Property Type Description isVariadic bool Whether the function is variadic. isVirtual bool Whether the function is virtual. isVirtualAsWritten bool Whether the function is virtual as written. isPure bool Whether the function is pure. isDefaulted bool Whether the function is defaulted. isExplicitlyDefaulted bool Whether the function is explicitly defaulted. isDeleted bool Whether the function is deleted. isDeletedAsWritten bool Whether the function is deleted as written. isNoReturn bool Whether the function is noreturn. hasOverrideAttr bool Whether the function has the override attribute. hasTrailingReturn bool Whether the function has a trailing return type. isConst bool Whether the function is const. isVolatile bool Whether the function is volatile. isFinal bool Whether the function is final. isNodiscard bool Whether the function is nodiscard. isExplicitObjectMemberFunction bool Whether the function is an explicit object member function. constexprKind string The constexpr kind of the function (e.g., consteval, constexpr). storageClass string The storage class of the function (e.g., static, extern). refQualifier string The reference qualifier of the function (e.g., &, &&). class string The function class (e.g., constructor, conversion, destructor). params Param Object[] The parameters of the function. return Type Info Object The return type of the function. template Template Info Object The template information of the function. overloadedOperator string The overloaded operator of the function. exceptionSpec string The exception specification of the function. explicitSpec string The explicit specification of the function. requires string The requires expression of the function. When the symbol kind is typedef, the symbol object has the following additional properties: Property Type Description type Type Info Object The type information of the typedef. template Template Info Object The template information of the typedef. isUsing bool Whether the typedef is a using declaration. When the symbol kind is variable, the symbol object has the following additional properties: Property Type Description type Type Info Object The type information of the variable. template Template Info Object The template information of the variable. constexprKind string The constexpr kind of the variable (e.g., consteval, constexpr). storageClass string The storage class of the variable (e.g., static, extern). isConstinit bool Whether the variable is constinit. isThreadLocal bool Whether the variable is thread-local. initializer string The initializer of the variable. When the symbol kind is field (i.e. non-static data members), the symbol object has the following additional properties: Property Type Description type Type Info Object The type information of the field. default string The default value of the field. isMaybeUnused bool Whether the field is maybe unused. isDeprecated bool Whether the field is deprecated. isVariant bool Whether the field is a variant. isMutable bool Whether the field is mutable. isBitfield bool Whether the field is a bitfield. hasNoUniqueAddress string Whether the field has the attribute. bitfieldWidth string The width of the bitfield. When the symbol kind is friend, the symbol object has the following additional properties: Property Type Description name string The name of the friend symbol or type. symbol Symbol Object The friend symbol. type Type Info Object The friend type. When the symbol kind is alias, the symbol object has the following additional properties: Property Type Description aliasedSymbol Name Info Object The aliased symbol. When the symbol kind is using, the symbol object has the following additional properties: Property Type Description class string The class of the using declaration (e.g., normal, typename, enum). shadows Symbol Object[] The symbols being used. qualifier Name Info Object The qualifier of the using declaration. When the symbol kind is enumerator, the symbol object has the following additional properties: Property Type Description initializer string The initializer of the enumerator. When the symbol kind is guide, the symbol object has the following additional properties: Property Type Description params Param Object[] The parameters of the guide. deduced Type Info Object The deduced type of the guide. template Template Info Object The template information of the guide. explicitSpec string The explicit specification of the guide. When the symbol kind is concept, the symbol object has the following additional properties: Property Type Description template Template Info Object The template information of the concept. constraint string The constraint of the concept. The Source Info object represents the location of the symbol in the source code. The source info object has the following properties: Property Type Description def Location Object Location where the entity was defined. decl Location Object[] Locations where the entity was declared. The Tranche object represents the symbols in a scope (e.g., namespace). The tranche object has the following properties: Property Type Description (symbol kind in plural form: e.g., classes, functions, variables) Symbol Object[] The symbols of that kind in the scope. types Symbol Object[] The types in the scope. staticfuncs Symbol Object[] The static functions in the scope. overloads Symbol Object[] The overloads in the scope. staticoverloads Symbol Object[] The static overloads in the scope. The Interface object represents the interface of a record (e.g., class, struct, union). The interface object has the following properties: Property Type Description public Tranche Object The public interface of the record. protected Tranche Object The protected interface of the record. private Tranche Object The private interface of the record. The Base Info object represents a base class of a record. The base info object has the following properties: Property Type Description access string The access level of the base class. isVirtual bool Whether the base class is virtual. type Type Info Object The type information of the base class. The Template Info object represents the template information of a record, function, or typedef. The template info object has the following properties: Property Type Description kind string The kind of template (e.g., explicit, partial). primary Symbol Object The primary template. params tParam Object[] The template parameters. args Type Info Object[] The template arguments. requires string The requires expression of the template. The Type Info object represents the type information of a symbol. The type info object has the following properties: Property Type Description kind string The kind of type (e.g., named, decltype, auto, pointer, reference, array, function). is-pack bool Whether the type is a pack expansion. name string The name of the type. operand string The operand of the type. keyword string The keyword of the type. constraint string The constraint of the type. cv-qualifiers string The cv qualifier of the type (e.g., const, volatile). parent-type Type Info Object The parent type of the type. pointee-type Type Info Object The pointee type of the type. element-type Type Info Object The element type of the type. bounds-value string The bounds value of the type. bounds-expr string The bounds expression of the type. return-type Type Info Object The return type of the type. param-types Type Info Object[] The parameter types of the type. exception-spec string The exception specification of the type. ref-qualifier string The reference qualifier of the type. is-variadic bool Whether the type is variadic. The Param object represents the parameter of a function. The param object has the following properties: Property Type Description name string The name of the parameter. type Type Info Object The type information of the parameter. default string The default value of the parameter. The Name Info object represents the name of a symbol. The name info object has the following properties: Property Type Description name string The name of the symbol. symbol string The unique identifier of the symbol. args Type Info Object[] The template arguments of the symbol. prefix string The prefix of the symbol. The Location object represents the location of a symbol in the source code. The location object has the following properties: Property Type Description path string The path of the source file. file string The filename of the source file. line integer The line number of the symbol. kind string The kind of file (e.g., source, system, other). documented bool Whether the symbol is documented. The TParam object represents a template parameter of a record, function, or typedef. The tparam object has the following properties: Property Type Description kind string The kind of template parameter (e.g., type, non-type, template). name string The name of the template parameter. is-pack bool Whether the template parameter is a pack expansion. default string The default value of the template parameter. key string The key kind of the template parameter. constraint string The constraint of the template parameter. type Type Info Object The type information of the template parameter. params TParam Object[] The template parameters of the template parameter. The Targ object represents a template argument of a record, function, or typedef. The targ object has the following properties: Property Type Description kind string The kind of template argument (e.g., type, non-type, template). is-pack bool Whether the template argument is a pack expansion. type Type Info Object The type information of the template argument. value string The value of the template argument. name string The name of the template argument. template Template Info Object The template information of the template argument. The Config object represents the configuration object. It includes all values provided to MrDocs in the configuration file or via the command line. Please refer to the configuration file reference for more information. Edit this Page","title":"Generators","component":"mrdocs","version":"develop","name":"generators","url":"/mrdocs/develop/generators.html","titles":[{"text":"Choosing the Right Generator","hash":"_choosing_the_right_generator","id":1},{"text":"Generator Templates","hash":"generator-templates","id":2},{"text":"Document Object Model Reference","hash":"dom_reference","id":3},{"text":"Top-Level Fields","hash":"_top_level_fields","id":4},{"text":"Symbol","hash":"symbol-fields","id":5},{"text":"Source Info Fields","hash":"source-info-fields","id":6},{"text":"Tranche Object Fields","hash":"tranche-fields","id":7},{"text":"Interface Object Fields","hash":"interface-fields","id":8},{"text":"Base Info Fields","hash":"base-info-fields","id":9},{"text":"Template Info Fields","hash":"template-info-fields","id":10},{"text":"Type Info Fields","hash":"type-info-fields","id":11},{"text":"Param Fields","hash":"param-fields","id":12},{"text":"Name Info Fields","hash":"name-info-fields","id":13},{"text":"Location Fields","hash":"location-fields","id":14},{"text":"TParam Fields","hash":"tparam-fields","id":15},{"text":"Targ Fields","hash":"targ-fields","id":16},{"text":"Config Fields","hash":"config-fields","id":17}]},"7":{"id":7,"text":"Home arrow_forward Automating C++ reference documentation significantly enhances usability by providing a navigable API and ensuring a single, up-to-date source of truth with minimal effort. However, documenting C++ poses significant challenges due to discrepancies between the codebase and the public API. Doxygen remains a popular tool, yet it is suboptimal for C++ as it fails to fully comprehend C++ constructs and requires many transformation steps, including the incorporation of many macros within the C++ code. These macros maintain well-formed and ill-formed versions of the code, undermining the goal of unifying the source of truth. Existing solutions frequently need better maintenance or usability issues, prompting users to revert to Doxygen. An ideal solution would inherently understand C++ constructs, be actively maintained, and offer diverse options for customizing the output format. MrDocs embodies these qualities. Supported by full-time developers from the C++ Alliance, MrDocs inherently comprehends C++ constructs without the need for macros and provides various output formats, customizable templates, and plugin support, ensuring it meets the demands of comprehensive and efficient documentation. Edit this Page","title":"MrDocs","component":"mrdocs","version":"develop","name":"index","url":"/mrdocs/develop/index.html","titles":[]},"8":{"id":8,"text":"Installation arrow_back arrow_forward Binary packages are available from our Release Page. Most users should use these packages. 🪟 Windows 🐧 Linux 📃 Release 📦 7z 📦 msi 📦 zip 📦 tar.xz 📦 tar.gz v0.0.2 July 10, 2024 🔗 MrDocs-0.0.2-win64.7z (20 MB) 🔗 MrDocs-0.0.2-win64.msi (37 MB) 🔗 MrDocs-0.0.2-win64.zip (37 MB) 🔗 MrDocs-0.0.2-Linux.tar.xz (52 MB) 🔗 MrDocs-0.0.2-Linux.tar.gz (80 MB) develop October 24, 2024 🔗 MrDocs-0.0.2-win64.7z (21 MB) 🔗 MrDocs-0.0.2-win64.msi (38 MB) 🔗 MrDocs-0.0.2-win64.zip (39 MB) 🔗 MrDocs-0.0.2-Linux.tar.xz (22 MB) 🔗 MrDocs-0.0.2-Linux.tar.gz (32 MB) v0.0.1 December 1, 2023 🔗 MrDocs-0.0.1-win64.7z (11 MB) 🔗 MrDocs-0.0.1-win64.msi (18 MB) - 🔗 MrDocs-0.0.1-Linux.tar.xz (19 MB) 🔗 MrDocs-0.0.1-Linux.tar.gz (28 MB) master December 1, 2023 🔗 MrDocs-0.0.1-win64.7z (20 MB) 🔗 MrDocs-0.0.1-win64.msi (37 MB) 🔗 MrDocs-0.0.1-win64.zip (37 MB) 🔗 MrDocs-0.0.1-Linux.tar.xz (52 MB) 🔗 MrDocs-0.0.1-Linux.tar.gz (80 MB) The following instructions assume we are at a parent directory that’s going to contain both the MrDocs and the third-party dependencies directories. + + mrdocs + third-party Clone the MrDocs repository with: git clone https://github.com/cppalliance/mrdocs Also create and go to the third-party directory, where we are going to download and install our dependencies: mkdir third-party cd third-party These instructions assume all dependencies are installed in the third-party directory for simplicity. Fell free to install them anywhere you want and adjust the main MrDocs configuration command later. MrDocs uses the fmt library for formatting strings. From the third-party directory, you can clone the fmt repository and install it with the following commands: git clone https://github.com/fmtlib/fmt --branch 10.2.1 --depth 1 (1) cd fmt cmake -S . -B ./build -DCMAKE_BUILD_TYPE=Release -D FMT_DOC=OFF -D FMT_TEST=OFF (2) cmake --build ./build --config Release (3) cmake --install ./build --prefix ./install (4) cd .. 1 Shallow clones the fmt repository. 2 Configure the fmt library with CMake, excluding the documentation and tests. 3 Builds the fmt library in the build directory. 4 Installs the fmt library in the install directory. All instructions in this document assume you are using a CMake version above 3.26. Binaries are available at CMake’s official website. If you prefer using Vcpkg to install dependencies, you can install VcPkg and fmt with the following commands from the third-party directory: Windows PowerShell Unix Variants git clone https://github.com/microsoft/vcpkg.git -b master (1) cd vcpkg bootstrap-vcpkg.bat (2) vcpkg.exe install fmt --triplet x64-windows (3) 1 Clones the Vcpkg repository. 2 Bootstraps Vcpkg. 3 Installs the fmt library. git clone https://github.com/microsoft/vcpkg.git -b master (1) cd vcpkg ./bootstrap-vcpkg.sh (2) ./vcpkg install fmt (3) 1 Clones the Vcpkg repository. 2 Bootstraps Vcpkg. 3 Installs the fmt library. You can also install fmt with Vcpkg in Manifest mode. In manifest mode, you declare your project’s direct dependencies in a manifest file named vcpkg.json. MrDocs includes a vcpkg.json.example file you can duplicate or create a symlink as vcpkg.json to use this mode. This file includes all the dependencies MrDocs needs, except for LLVM. In this mode, VcPkg will create separate installed trees for each project and configuration. This is the recommended vcpkg mode for most users, according to the vcpkg documentation. MrDocs uses the duktape library for JavaScript parsing. From the third-party directory, you can download the duktape source code from the official release: Windows PowerShell Unix Variants Invoke-WebRequest -Uri \"https://github.com/svaarala/duktape/releases/download/v2.7.0/duktape-2.7.0.tar.xz\" -OutFile \"duktape-2.7.0.tar.xz\" (1) 1 Downloads the duktape source code. curl -LJO https://github.com/svaarala/duktape/releases/download/v2.7.0/duktape-2.7.0.tar.xz (1) 1 Downloads the duktape source code. Then patch the Duktape source code to provide CMake support. tar -xf duktape-2.7.0.tar.xz (1) cp ../mrdocs/third-party/duktape/CMakeLists.txt ./duktape-2.7.0/CMakeLists.txt (2) cp ../mrdocs/third-party/duktape/duktapeConfig.cmake.in ./duktape-2.7.0/duktapeConfig.cmake.in (3) cd duktape-2.7.0 1 Extracts the duktape source code. 2 Patches the source code with a CMakeLists.txt file to the duktape-2.7.0 directory so that we can build it with CMake. 3 Copies the duktapeConfig.cmake.in file to the duktape-2.7.0 directory so that we can install it with CMake and find it later from other CMake projects. Now adjust the duk_config.h file to indicate we are statically building Duktape. Windows PowerShell Unix Variants $content = Get-Content -Path \"src\\duk_config.h\" (1) $content = $content -replace '#define DUK_F_DLL_BUILD', '#undef DUK_F_DLL_BUILD' (2) $content | Set-Content -Path \"src\\duk_config.h\" (3) 1 Read the content of duk_config.h 2 Replace the DUK_F_DLL_BUILD macro with #undef DUK_F_DLL_BUILD 3 Write the content back to the file sed -i 's/#define DUK_F_DLL_BUILD/#undef DUK_F_DLL_BUILD/g' \"src/duk_config.h\" (1) 1 Disables the DUK_F_DLL_BUILD macro in the duk_config.h file to indicate we are statically building duktape. And finally install the library with CMake: cmake -S . -B ./build -DCMAKE_BUILD_TYPE=Release (1) cmake --build ./build --config Release (2) cmake --install ./build --prefix ./install (3) 1 Configures the duktape library with CMake. 2 Builds the duktape library in the build directory. 3 Installs the duktape library with CMake support in the install directory. The scripts above downloads the duktape source code, extracts it, and configures it with CMake. The CMake scripts provided by MrDocs are copied to the duktape-2.7.0 directory to facilitate the build process with CMake and provide CMake installation scripts for other projects. If you prefer using Vcpkg to install dependencies, you can install duktape with the following commands from the third-party directory: Windows PowerShell Unix Variants cd vcpkg vcpkg.exe install duktape --triplet x64-windows (1) 1 Installs the duktape library. cd vcpkg ./vcpkg install duktape (1) 1 Installs the duktape library. These examples assume VcPkg is already installed in the third-party/vcpkg directory (see the Fmt section). MrDocs uses libxml2 tools for tests. Only developers need to install this dependency. Users can skip this step. From the third-party directory, you can clone the libxml2 repository and install it with the following commands: git clone https://github.com/GNOME/libxml2 --branch v2.12.6 --depth 1 (1) cd libxml2 cmake -S . -B ./build -DCMAKE_BUILD_TYPE=Release -DLIBXML2_WITH_PROGRAMS=ON -DLIBXML2_WITH_FTP=OFF -DLIBXML2_WITH_HTTP=OFF -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_LEGACY=OFF -DLIBXML2_WITH_LZMA=OFF -DLIBXML2_WITH_ZLIB=OFF -DLIBXML2_WITH_ICU=OFF -DLIBXML2_WITH_TESTS=OFF -DLIBXML2_WITH_HTML=ON -DLIBXML2_WITH_C14N=ON -DLIBXML2_WITH_CATALOG=ON -DLIBXML2_WITH_DEBUG=ON -DLIBXML2_WITH_ISO8859X=ON -DLIBXML2_WITH_MEM_DEBUG=OFF -DLIBXML2_WITH_MODULES=ON -DLIBXML2_WITH_OUTPUT=ON -DLIBXML2_WITH_PATTERN=ON -DLIBXML2_WITH_PUSH=ON -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_READER=ON -DLIBXML2_WITH_REGEXPS=ON -DLIBXML2_WITH_SAX1=ON -DLIBXML2_WITH_SCHEMAS=ON -DLIBXML2_WITH_SCHEMATRON=ON -DLIBXML2_WITH_THREADS=ON -DLIBXML2_WITH_THREAD_ALLOC=OFF -DLIBXML2_WITH_TREE=ON -DLIBXML2_WITH_VALID=ON -DLIBXML2_WITH_WRITER=ON -DLIBXML2_WITH_XINCLUDE=ON -DLIBXML2_WITH_XPATH=ON -DLIBXML2_WITH_XPTR=ON (2) cmake --build ./build --config Release (3) cmake --install ./build --prefix ./install (4) cd .. 1 Shallow clones the libxml2 repository. 2 Configure the libxml2 with CMake, excluding the documentation, tests, and unwanted dependencies. 3 Builds libxml2 in the build directory. 4 Installs libxml2 in the install directory. If you prefer using Vcpkg to install dependencies, you can install libxml2 with the following commands from the third-party directory: Windows PowerShell Unix Variants cd vcpkg vcpkg.exe install libxml2[tools] --triplet x64-windows (1) 1 Installs libxml2. cd vcpkg ./vcpkg install libxml2[tools] (1) 1 Installs libxml2. These examples assume VcPkg is already installed in the third-party/vcpkg directory (see the Fmt section). MrDocs uses LLVM to parse C++ code and extract documentation from it. It depends on a recent version of LLVM: e1065370 Download: You can shallow-clone the project from the official repository. From the third-party directory, run the following commands: mkdir -p llvm-project (1) cd llvm-project git init (2) git remote add origin https://github.com/llvm/llvm-project.git (3) git fetch --depth 1 origin e1065370aaacb1b1cb48e77d37d376bf024f4a39 (4) git checkout FETCH_HEAD (5) 1 Create a directory for the llvm-project instead of cloning it 2 Initialize a git repository 3 Add the official LLVM repository as a remote 4 Fetch the commit we want to use: this allows us to shallow-clone the repository at this commit 5 Checkout the commit we want to use Configure: The mrdocs/third-party/llvm directory provides CMake presets to build LLVM. We recommend using preset files as they contain a replicable set of CMake configuration values that can be used for a project. From third-party/llvm-project, you can copy the CMakePresets.json and CMakeUserPresets.json files to the llvm-project/llvm directory. cp ../../mrdocs/third-party/llvm/CMakePresets.json ./llvm cp ../../mrdocs/third-party/llvm/CMakeUserPresets.json ./llvm/CMakeUserPresets.json Run a command such as the following to configure LLVM: Windows PowerShell Unix Variants cd llvm cmake -S . -B ./build --preset=release-win cd llvm cmake -S . -B ./build --preset=release-unix In the example above, we configure a Release version of LLVM for MrDocs. Choose one of the presets from CMakePresets.json or edit the variants in CMakeUserPresets.json to customize the configurations. Developers might also want to build a custom Debug LLVM configuration including optimizations, which allows for faster execution of tests. The relwithdebinfo and debwithopt presets are provided for this purpose. Or if you prefer using the command line, set CMAKE_CONFIGURATION_TYPES or CMAKE_BUILD_TYPE to Debug and manually include the optimization flags to -D CMAKE_CXX_FLAGS=\"/O2 /Zi\" (MSVC) or -D CMAKE_CXX_FLAGS=\"-Og -g\". This should give you an optimized build with all debug features and flags, such as an appropriate _ITERATOR_DEBUG_LEVEL and the /MDd flag in MSVC. In other platforms, this should give you a release somewhat equivalent to RelWithDebInfo optimized for debugging experience. -Og offers a reasonable level of optimization while maintaining fast compilation and a good debugging experience. Build: Build and install the configured version of LLVM with: cmake --build ./build --config Release --parallel 4 cmake --install ./build --prefix ../install Replace 4 with the number of cores you want to use for building LLVM. Return from ./third-party/llvm-project/llvm to the LLVM project directory: cd ../.. In addition to LLVM, MrDocs requires a deterministic version of the C standard library (LibC) to ensure consistent behavior across various environments. This step is crucial for replicating specific compiler and library configurations. Download: Continue using the same LLVM project directory. Configure: Configure and build LibC++ using the existing structure: export CXX=\"./install/bin/clang++\" export CC=\"./install/bin/clang\" These options set the C and C++ compilers to the ones previously installed by LLVM. MrDocs only depends on the LibC++ headers, so any compiler that works for this step should be fine. Run a command such as the following to configure LLVM: Windows PowerShell Unix Variants cmake -G Ninja \\ -S runtimes \\ -B build-libcxx \\ -DLLVM_ENABLE_RUNTIMES=\"libcxx;libcxxabi\" \\ -DCMAKE_INSTALL_PREFIX=\"$(pwd)/install\" \\ -DLIBCXXABI_USE_LLVM_UNWINDER=OFF \\ -DLIBCXXABI_ENABLE_SHARED=OFF \\ -DLIBCXXABI_ENABLE_STATIC=ON \\ -DLIBCXX_ENABLE_SHARED=OFF \\ -DLIBCXX_NO_VCRUNTIME=ON \\ -DCMAKE_CXX_FLAGS=\"-D__ORDER_LITTLE_ENDIAN__=1234 -D__ORDER_BIG_ENDIAN__=4321 -D__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__\" cmake -G Ninja \\ -S runtimes \\ -B build-libcxx \\ -DLLVM_ENABLE_RUNTIMES=\"libcxx;libcxxabi;libunwind\" \\ -DCMAKE_INSTALL_PREFIX=\"$(pwd)/install\" Build: Build and install the configured version of LibC++ with: Windows PowerShell Unix Variants ninja -C build-libcxx cxx ninja -C build-libcxx install-cxx ninja -C build-libcxx cxx cxxabi unwind ninja -C build-libcxx install-cxx install-cxxabi install-unwind Return from ./third-party/llvm-project to the parent directory to build and install MrDocs: cd ../.. Return from ./third-party/vcpkg to the parent directory of third-party (the one containing the mrdocs directory) to build and install MrDocs: cd ../.. Configure: You can also configure MrDocs with command line arguments or CMake presets. Configure with Command Line Arguments: With the dependencies are available in third-party, you can configure MrDocs with: Windows PowerShell Unix Variants cmake -S mrdocs -B build -G \"Visual Studio 17 2022\" -A x64 -D CMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo\" -D CMAKE_EXPORT_COMPILE_COMMANDS=ON -D LLVM_ROOT=\"%cd%/third-party/llvm+clang/RelWithDebInfo\" -D DUKTAPE_SOURCE_ROOT=\"%cd%/third-party/duktape-2.7.0\" -D CMAKE_TOOLCHAIN_FILE=\"%cd%/third-party/vcpkg/scripts/buildsystems/vcpkg.cmake\" cmake -S mrdocs -B build -D CMAKE_BUILD_TYPE=RelWithDebInfo -D CMAKE_EXPORT_COMPILE_COMMANDS=ON -D LLVM_ROOT=\"$(pwd)/third-party/llvm+clang/RelWithDebInfo\" -D DUKTAPE_SOURCE_ROOT=\"$(pwd)/third-party/duktape-2.7.0\" -D CMAKE_TOOLCHAIN_FILE=\"$(pwd)/third-party/vcpkg/scripts/buildsystems/vcpkg.cmake\" Configure with CMake Presets: The MrDocs repository also includes a CMakePresets.json file that contains the parameters to configure MrDocs with CMake. To specify the installation directories, you can use the LLVM_ROOT, DUKTAPE_SOURCE_ROOT, CMAKE_TOOLCHAIN_FILE environment variables. To specify a generator (-G) and platform name (-A), you can use the CMAKE_GENERATOR and CMAKE_GENERATOR_PLATFORM environment variables. You can also customize the presets by duplicating and editing the CMakeUserPresets.json.example file in the mrdocs directory. This is typically more convenient than using environment variables. Build: Then build and install MrDocs with: cd build cmake --build . cmake --install . To customize the installation directory, use the CMAKE_INSTALL_PREFIX option or use the --prefix option for the cmake --install . command. To customize the C and C++ compilers, use the CMAKE_C_COMPILER and CMAKE_CXX_COMPILER options. Developers should also enable -D BUILD_TESTING=ON. If any custom build of LLVM other than RelWithDebInfo is being used, the LLVM_ROOT variable should be set to the installation directory of that build. The MrDocs installation directory follows the \"Filesystem Hierarchy Standard\" (FHS) layout: bin: the MrDocs executable intended to be used by users or invoked from the command line. share: resource files installed by MrDocs doc: the MrDocs documentation include: the MrDocs headers lib: the MrDocs library The FHS layout provides a directory structure that also serves as a widely accepted convention for organizing files and directories in Unix-like systems, but that can be used in any operating system. Edit this Page","title":"Install","component":"mrdocs","version":"develop","name":"install","url":"/mrdocs/develop/install.html","titles":[{"text":"Binary Packages","hash":"mrdocs-binaries","id":1},{"text":"Install from Source","hash":"mrdocs-source","id":2},{"text":"Fmt","hash":"install-fmt","id":3},{"text":"Duktape","hash":"_duktape","id":4},{"text":"Libxml2","hash":"_libxml2","id":5},{"text":"LLVM","hash":"_llvm","id":6},{"text":"LibC++","hash":"_libc","id":7},{"text":"MrDocs","hash":"_mrdocs","id":8},{"text":"Package layout","hash":"_package_layout","id":9}]},"9":{"id":9,"text":"License arrow_back ============================================================================== The LLVM Project is under the Apache License v2.0 with LLVM Exceptions: ============================================================================== Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. \"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. \"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. \"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. \"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License. \"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. \"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. \"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). \"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. \"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\" \"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets \"[]\" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same \"printed page\" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ---- LLVM Exceptions to the Apache 2.0 License ---- As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into an Object form of such source code, you may redistribute such embedded portions in such Object form without complying with the conditions of Sections 4(a), 4(b) and 4(d) of the License. In addition, if you combine or link compiled forms of this Software with software that is licensed under the GPLv2 (\"Combined Software\") and if a court of competent jurisdiction determines that the patent provision (Section 3), the indemnity provision (Section 9) or other Section of the License conflicts with the conditions of the GPLv2, you may retroactively and prospectively choose to deem waived or otherwise exclude such Section(s) of the License, but only in their entirety and only with respect to the Combined Software. ============================================================================== Software from third parties included in the LLVM Project: ============================================================================== The LLVM Project contains third party software which is under different license terms. All such code will be identified clearly using at least one of two mechanisms: 1) It will be in a separate directory tree with its own `LICENSE.txt` or `LICENSE` file at the top containing the specific license and restrictions which apply to that software, or 2) It will contain specific license and restriction terms at the top of every file. ============================================================================== Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy): ============================================================================== University of Illinois/NCSA Open Source License Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at Urbana-Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. Edit this Page","title":"License","component":"mrdocs","version":"develop","name":"license","url":"/mrdocs/develop/license.html","titles":[]},"10":{"id":10,"text":"Getting Started arrow_back arrow_forward The diagram below illustrates the workflow of the MrDocs documentation tool. It shows how inputs are transformed step by step into the final documentation output. Each component in the diagram represents a distinct type of entity: Inputs: Provide the initial parameters and settings required to configure and run the tool. These include the configuration file and command-line arguments. Processes: Represent intermediary outputs or data generated during the workflow. Outputs: The final product, in this case, the generated documentation. graph TD %% Define styles for visual clarity classDef input fill:#D1E8FF,stroke:#005CFF,stroke-width:2; classDef artifact fill:#FFF5D1,stroke:#FFA500,stroke-width:2; classDef output fill:#D1FFD1,stroke:#008000,stroke-width:2; %% Define Inputs subgraph Inputs CF[Configuration File] CL[Command Line Arguments] end class CL,CF input %% Define Artifacts subgraph Processes P[Configuration Options] CD[Compilation Database] C[Corpus] G[Generator] end class P artifact class CD,C,G artifact %% Define Outputs subgraph Outputs D[Documentation] end class D output %% Relationships CF -->|Define| P CL -->|Define| P P -->|Defines| CD CD -->|Extract Symbols| C C -->|Feeds| G G -->|Produces| D %% Highlight dependencies for clarity P -->|Influences| G In summary: Begin by specifying the configuration file and command-line arguments to set up the options. The configuration options affect all processes. The configuration options define a Compilation Database. All symbols are extracted with Clang to generate a unified corpus of symbols with their corresponding documentation. Finally, This corpus is then fed to a Generator that produces the desired documentation. For more details on each component, refer to the corresponding sections of this guide. The mrdocs.yml configuration file contains information about the project. If you’re used to Doxygen, this file is similar to the Doxyfile configuration file. Here is an example of a mrdocs.yml file: source-root: ../include multipage: false generate: adoc In many projects, it is common to have the documentation in a docs directory, which can also contain this configuration file. + + docs + mrdocs.yml + ... + include + src + test + ... The most important information is the source-root option, which determines the root of the source tree relative to the mrdocs.yml file. The list of all available options can be found in the The Configuration File page. For consistency, these instructions assume you have the mrdocs executable in PATH. You can invoke MrDocs from the command line with the following command: mrdocs path/to/mrdocs.yml If you are at the path of the mrdocs.yml file, you can simply run: mrdocs You can also specify other commands to MrDocs directly from the command line to set or override options from the mrdocs.yml file (See all options in The Configuration File page). mrdocs path/to/mrdocs.yml --output=../docs/reference Except for the path to the mrdocs.yml file, all other relative paths are made absolute relative to the mrdocs.yml file. One way to simplify the documentation generation process is by using a compile_commands.json file generated by CMake to determine the source files to process and their compile options. This file is generated by the CMake configuration step when the CMAKE_EXPORT_COMPILE_COMMANDS option is set to ON. cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=ON At this step, you can also add any other flags you want to pass to cmake, such as -DCMAKE_BUILD_TYPE=Release or -DCMAKE_CXX_COMPILER=clang++. If you are using the Visual Studio generator, you might need to switch to the Ninja generator to generate the compile_commands.json file. This will generate a compile_commands.json file in the build directory containing all commands needed to compile your project. This file can be used by MrDocs to determine the source files to process and their compile options. mrdocs --compilation-database=../build/compile_commands.json --output=../docs/reference MrDocs will go through all the source files listed in the compile_commands.json file and generate the documentation for them. When MrDocs goes through the commands in the compilation database, it will go through the same targets as the compiler. Only symbols present in these targets will be documented. In the case of header-only libraries, the symbols will be documented only if they are included in one of these targets. It’s common to have different configurations for the documentation generation than for the project build. This means CMake is often being run just to generate a custom compile_commands.json for the documentation. Also, the compile_commands.json file is a configuration artifact, which means it often lacks a stable location that can be referenced in the mrdocs.yml configuration file. Thus, the pattern of using a compile_commands.json file generated by CMake is so common that MrDocs provides a CMake module to simplify the process. You can let MrDocs generate the compile_commands.json file for you by providing the path to the CMakeLists.txt file of your project. mrdocs --compilation-database=../CMakeLists.txt --output=../docs/reference By providing your CMakeLists.txt file as the reference for you compilation database, MrDocs will automatically run CMake to generate the compile_commands.json file in a temporary directory. Not only this simplifies the usage but also ensures that the stable compilation database file can be used in the mrdocs.yml configuration file. MrDocs does not bundle CMake. If you want to use this feature, you need to have CMake installed on your system and available in PATH. Parameters for cmake, such as -D BUILDING_TEST=OFF -D MRDOCS_BUILD=ON can also be specified with the cmake option in configuration file. MrDocs will always append the CMAKE_EXPORT_COMPILE_COMMANDS=ON flag to the cmake command. In many projects, a common pattern is to define a special build configuration for the documentation generation such that: Tests, examples, and auxiliary targets excluded All header-only files are included in targets Unnecessary sources files are excluded from targets This can usually be achieved by defining a custom target in the CMakeLists.txt with a single source file that includes all the necessary header files. if (MY_PROJECT_MRDOCS_BUILD) # Glob all header files set(INCLUDE_DIR \"${CMAKE_SOURCE_DIR}/include\") file(GLOB_RECURSE HEADER_FILES \"${INCLUDE_DIR}/*.hpp\") # Create a temporary source file that includes all header files set(TEMP_CPP_FILE \"${CMAKE_CURRENT_BINARY_DIR}/all_headers.cpp\") file(WRITE ${TEMP_CPP_FILE} \"// This file is generated automatically by CMake\\n\\n\") foreach(HEADER_FILE ${HEADER_FILES_LIST}) file(APPEND ${TEMP_CPP_FILE} \"#include \\\"${HEADER_FILE}\\\"\\n\") endforeach() # Create a custom target for MrDocs add_library(my_project_mrdocs_target ${TEMP_CPP_FILE}) # Set any other target properties here target_include_directories(my_project_mrdocs_target PRIVATE ${INCLUDE_DIR}) target_link_libraries(my_project_mrdocs_target PRIVATE an_external_library) # Don't create any other targets return() endif() To use this target, you can run CMake with the MY_PROJECT_MRDOCS_BUILD flag set to ON: mrdocs --cmake=\"-D MY_PROJECT_MRDOCS_BUILD=ON\" --compilation-database=../CMakeLists.txt --output=..\\docs\\reference Because these paths and options are stable, you can specify them in the mrdocs.yml configuration file. cmake: \"-D MY_PROJECT_MRDOCS_BUILD=ON\" compilation-database: ../CMakeLists.txt output: ../docs/reference Unlike other documentation generators, MrDocs only works with valid C++ code. Instead of partially preprocessing the source files and inferring symbols from potentially ill-formed code, MrDocs relies on the compilation database and Clang to preprocess the source files. Thus, for each common C++ construct, MrDocs provides commands or options to identify and extract the relevant information as intended by the user. For instance, a common ill-formed Doxygen pattern to specify a class as an implementation detail is: #ifdef DOCS __implementation_defined__ #else impl::f_return_t #endif f(); In this pattern, the user wants to document the function f as implementation_defined f(); because the library contract is that the user should not rely on a specific return type here. However, this ill-formed pattern is problematic: implementation_defined is not a valid symbol so the code is ill-formed impl::f_return_t doesn’t express the intent of the user for the documentation the developer has to effectively maintain two versions of the code the original source code becomes more and more unreadable Instead, when using MrDocs, the same function could be documented as: impl::f_return_t f(); And the user can specify that impl as a namespace for implementation details in the configuration file: # ... implementation-detail: impl # ... The Commands and The Configuration File pages contain a list of all available commands and options to identify and extract the relevant information as intended by the user. MrDocs provides multiple mechanisms are provided to specify special C++ patterns, such as the example above. For each common C++ construct that would require macros and two versions of the code, MrDocs provides commands to identify the construct and extract the relevant information as intented by the user. Edit this Page","title":"Basic Usage","component":"mrdocs","version":"develop","name":"usage","url":"/mrdocs/develop/usage.html","titles":[{"text":"MrDocs configuration file","hash":"config-file","id":1},{"text":"MrDocs invocation","hash":"cli","id":2},{"text":"Basic invocation","hash":"_basic_invocation","id":3},{"text":"Compilation databases","hash":"compilation-database","id":4},{"text":"CMake integration","hash":"_cmake_integration","id":5},{"text":"MrDocs Builds","hash":"_mrdocs_builds","id":6},{"text":"Extracting Documentation","hash":"_extracting_documentation","id":7}]}},"components":{},"componentVersions":{"mrdocs/develop":{"displayVersion":"develop","title":"MrDocs","version":"develop","name":"mrdocs","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"MrDocs","site-url":"https://www.mrdocs.com/","logo-img":"","logo-text":"Mr. Docs","icon-img":"","source-language":"asciidoc@","table-caption":false},"sourcemap":false,"extensions":[{},{}]},"url":"/mrdocs/develop/index.html","navigation":[{"items":[{"content":"Home","url":"/mrdocs/develop/index.html","urlType":"internal"},{"content":"Demos","url":"/mrdocs/develop/demos.html","urlType":"internal"},{"content":"Installation","url":"/mrdocs/develop/install.html","urlType":"internal"},{"content":"Getting Started","url":"/mrdocs/develop/usage.html","urlType":"internal"},{"content":"Documenting the Code","url":"/mrdocs/develop/commands.html","urlType":"internal"},{"content":"The Configuration File","url":"/mrdocs/develop/config-file.html","urlType":"internal"},{"content":"Generators","url":"/mrdocs/develop/generators.html","urlType":"internal"},{"content":"Design Notes","url":"/mrdocs/develop/design-notes.html","urlType":"internal"},{"content":"Contributor’s Guide","url":"/mrdocs/develop/contribute.html","urlType":"internal"},{"content":"License","url":"/mrdocs/develop/license.html","urlType":"internal"}],"root":true,"order":0}]}}}}) \ No newline at end of file diff --git a/docs/sitemap.xml b/docs/sitemap.xml new file mode 100644 index 000000000..be1b9868d --- /dev/null +++ b/docs/sitemap.xml @@ -0,0 +1,43 @@ + + + +https://www.mrdocs.com/mrdocs/develop/commands.html +2024-12-03T14:15:36.167Z + + +https://www.mrdocs.com/mrdocs/develop/config-file.html +2024-12-03T14:15:36.167Z + + +https://www.mrdocs.com/mrdocs/develop/contribute.html +2024-12-03T14:15:36.167Z + + +https://www.mrdocs.com/mrdocs/develop/demos.html +2024-12-03T14:15:36.167Z + + +https://www.mrdocs.com/mrdocs/develop/design-notes.html +2024-12-03T14:15:36.167Z + + +https://www.mrdocs.com/mrdocs/develop/generators.html +2024-12-03T14:15:36.167Z + + +https://www.mrdocs.com/mrdocs/develop/index.html +2024-12-03T14:15:36.167Z + + +https://www.mrdocs.com/mrdocs/develop/install.html +2024-12-03T14:15:36.167Z + + +https://www.mrdocs.com/mrdocs/develop/license.html +2024-12-03T14:15:36.167Z + + +https://www.mrdocs.com/mrdocs/develop/usage.html +2024-12-03T14:15:36.167Z + + diff --git a/index.html b/index.html new file mode 100644 index 000000000..3781151a2 --- /dev/null +++ b/index.html @@ -0,0 +1,565 @@ + + + + + + + + + + + MrDocs + + + + + + + + + + + + + + + +
+
+

MrDocs

+

MrDocs is a C++ documentation generator for your projects.

+

+ + Get started + + + Download + +

+

No workarounds: A tool that fully understands C++

+
+
+
+ +
+
+
+

Simple code, simple documentation

+

MrDocs understands C++ so you can focus on keeping the code simple.

+
+
+
+ +

Single Source of Truth

+

Mr. Docs takes a specially formatted comment, called a Javadoc, which precedes a C++ declaration and renders it to form a reference as part of documentation.

+
+
+ +

It understands C++

+

Mr. Docs understands C++: Overload sets, private APIs, Concepts and constraints, unspecified return types, aliases, constants, SFINAE, hidden base classes, niebloids, and coroutines.

+
+
+ +

Multiple output formats

+

Choose from multiple output formats: Asciidoc, HTML, or XML.

+
+
+ +

Customizable

+

Mr. Docs is highly customizable. You can change the output format, the theme, and even the way the documentation is generated.

+
+
+
+
+
+
+
+

Examples

+

Examples to discover MrDocs in action.

+
+
+
+ + Boost.URL +
+
+
+
+
+

Boost.URL Antora documentation.

+
+
+ + Boost.URL +
+
+
+
+
+

Boost.URL multi-page Asciidoc documentation.

+
+
+ + Boost.URL +
+
+
+
+
+

Boost.URL single-page Asciidoc documentation.

+
+
+ + Boost.URL +
+
+
+
+
+

Boost.URL single-page HTML documentation.

+
+
+ + Boost.URL +
+
+
+
+
+

Boost.URL XML documentation.

+
+
+ + Boost.Scope +
+
+
+
+
+

Boost.Scope multi-page Asciidoc documentation.

+
+
+ + Boost.Scope +
+
+
+
+
+

Boost.Scope single-page Asciidoc documentation.

+
+
+
+
+
+
+
+

More Code, Fewer Workarounds

+

MrDocs let's you keep the code simple and maintainable.

+
+
+
    +
  • MrDocs understands C++ features such as attributes and noexcept functions.
  • +
+
+
+
/** Exit the program.
+
+    The program will end immediately.
+
+    @note This function does not return.
+*/
+[[noreturn]]
+void
+terminate() noexcept;
+
+
+
+
+

terminate

+
+

Exit the program.

+ + + +
+
+
+

Synopsis

+
+Declared in <terminate.cpp>
+
+
+void
+terminate() noexcept;
+
+
+
+
+

Description

+

The program will end immediately.

+ +
+

NOTE

+

This function does not return.

+ +
+ + +
+
+ +
+
+
+
+
    +
  • Specially formatted comments are rendered to form a reference as part of documentation.
  • +
+
+
+
/** Return the distance between two points
+
+    This function returns the distance between two points
+    according to the Euclidean distance formula.
+
+    @param x0 The x-coordinate of the first point
+    @param y0 The y-coordinate of the first point
+    @param x1 The x-coordinate of the second point
+    @param y1 The y-coordinate of the second point
+    @return The distance between the two points
+*/
+double
+distance(double x0, double y0, double x1, double y1);
+
+
+
+
+

distance

+
+

Return the distance between two points

+ + + +
+
+
+

Synopsis

+
+Declared in <distance.cpp>
+
+
+double
+distance(
+    double x0,
+    double y0,
+    double x1,
+    double y1);
+
+
+
+
+

Description

+

This function returns the distance between two points according to the Euclidean distance formula.

+ + + +
+
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
x0
y0
x1
y1
+
+
+ +
+
+
+
+
    +
  • Special directives are used to describe details about the symbols.
  • +
+
+
+
/** Return true if a number is prime.
+
+    @par Complexity
+
+    Linear in n.
+
+    @return Whether or not n is prime.
+    @param n The number to test
+
+*/
+bool
+is_prime(unsigned long long n) noexcept;
+
+
+
+
+

is_prime

+
+

Return true if a number is prime.

+ + + +
+
+
+

Synopsis

+
+Declared in <is_prime.cpp>
+
+
+bool
+is_prime(unsigned long long n) noexcept;
+
+
+
+
+

Description

+

Linear in n.

+ + + +
+
+

Parameters

+ + + + + + + + + + + + + +
NameDescription
n
+
+
+ +
+
+
+
+
    +
  • It understands concepts, constraints and SFINAE.
  • +
+
+
+
#include <type_traits>
+#include <stdexcept>
+
+/** Computes the square root of an integral value.
+
+    This function calculates the square root of a
+    given integral value using bit manipulation.
+
+    @throws std::invalid_argument if the input value is negative.
+
+    @tparam T The type of the input value. Must be an integral type.
+    @param value The integral value to compute the square root of.
+    @return The square root of the input value.
+ */
+template <typename T>
+std::enable_if_t<std::is_integral_v<T>, T> sqrt(T value) {
+    if (value < 0) {
+        throw std::invalid_argument(
+            "Cannot compute square root of a negative number");
+    }
+    T result = 0;
+    // The second-to-top bit is set
+    T bit = 1 << (sizeof(T) * 8 - 2);
+    while (bit > value) bit >>= 2;
+    while (bit != 0) {
+        if (value >= result + bit) {
+            value -= result + bit;
+            result += bit << 1;
+        }
+        result >>= 1;
+        bit >>= 2;
+    }
+    return result;
+}
+
+
+
+
+
+

sqrt

+
+

Computes the square root of an integral value.

+ + + +
+
+
+

Synopsis

+
+Declared in <sqrt.cpp>
+
+
+template<typename T>
+std::T
+sqrt(T value);
+
+
+
+
+

Description

+

This function calculates the square root of a given integral value using bit manipulation.

+ + + +
+
+

Exceptions

+ + + + + + + + + + + + + +
NameThrown on
if
+
+
+

Template Parameters

+ + + + + + + + + + + + + +
NameDescription
T
+
+
+

Parameters

+ + + + + + + + + + + + + +
NameDescription
value
+
+
+ +
+
+
+
+
+
+
+

Give us a Star on GitHub: + +

+
+
+
+ + \ No newline at end of file diff --git a/styles.css b/styles.css new file mode 100644 index 000000000..08e49a8ee --- /dev/null +++ b/styles.css @@ -0,0 +1,2743 @@ +@charset "UTF-8"; +:root { + --font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --line-height: 1.5; + --font-weight: 400; + --font-size: 16px; + --border-radius: 0.25rem; + --border-width: 1px; + --outline-width: 3px; + --spacing: 1rem; + --typography-spacing-vertical: 1.5rem; + --block-spacing-vertical: calc(var(--spacing) * 2); + --block-spacing-horizontal: var(--spacing); + --grid-spacing-vertical: 0; + --grid-spacing-horizontal: var(--spacing); + --form-element-spacing-vertical: 0.75rem; + --form-element-spacing-horizontal: 1rem; + --nav-element-spacing-vertical: 1rem; + --nav-element-spacing-horizontal: 0.5rem; + --nav-link-spacing-vertical: 0.5rem; + --nav-link-spacing-horizontal: 0.5rem; + --form-label-font-weight: var(--font-weight); + --transition: 0.2s ease-in-out +} + +@media (min-width: 576px) { + :root { + --font-size: 17px + } +} + +@media (min-width: 768px) { + :root { + --font-size: 18px + } +} + +@media (min-width: 992px) { + :root { + --font-size: 19px + } +} + +@media (min-width: 1200px) { + :root { + --font-size: 20px + } +} + +a { + --text-decoration: none +} + +a.contrast, a.secondary { + --text-decoration: underline +} + +small { + --font-size: 0.875em +} + +h1, h2, h3, h4, h5, h6 { + --font-weight: 700 +} + +h1 { + --font-size: 2rem; + --typography-spacing-vertical: 3rem +} + +h2 { + --font-size: 1.75rem; + --typography-spacing-vertical: 2.625rem +} + +h3 { + --font-size: 1.5rem; + --typography-spacing-vertical: 2.25rem +} + +h4 { + --font-size: 1.25rem; + --typography-spacing-vertical: 1.874rem +} + +h5 { + --font-size: 1.125rem; + --typography-spacing-vertical: 1.6875rem +} + +[type=checkbox], [type=radio] { + --border-width: 2px +} + +[type=checkbox][role=switch] { + --border-width: 3px +} + +tfoot td, tfoot th, thead td, thead th { + --border-width: 3px +} + +:not(thead):not(tfoot) > * > td { + --font-size: 0.875em +} + +code, kbd, pre, samp { + --font-family: "Menlo", "Consolas", "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" +} + +kbd { + --font-weight: bolder +} + +:root:not([data-theme=dark]), [data-theme=light] { + color-scheme: light; + --background-color: #fff; + --color: hsl(205deg, 20%, 32%); + --h1-color: hsl(205deg, 30%, 15%); + --h2-color: #24333e; + --h3-color: hsl(205deg, 25%, 23%); + --h4-color: #374956; + --h5-color: hsl(205deg, 20%, 32%); + --h6-color: #4d606d; + --muted-color: hsl(205deg, 10%, 50%); + --muted-border-color: hsl(205deg, 20%, 94%); + --primary: hsl(195deg, 85%, 41%); + --primary-hover: hsl(195deg, 90%, 32%); + --primary-focus: rgba(16, 149, 193, 0.125); + --primary-inverse: #fff; + --secondary: hsl(205deg, 15%, 41%); + --secondary-hover: hsl(205deg, 20%, 32%); + --secondary-focus: rgba(89, 107, 120, 0.125); + --secondary-inverse: #fff; + --contrast: hsl(205deg, 30%, 15%); + --contrast-hover: #000; + --contrast-focus: rgba(89, 107, 120, 0.125); + --contrast-inverse: #fff; + --mark-background-color: #fff2ca; + --mark-color: #543a26; + --ins-color: #388e3c; + --del-color: #c62828; + --blockquote-border-color: var(--muted-border-color); + --blockquote-footer-color: var(--muted-color); + --button-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + --button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + --form-element-background-color: transparent; + --form-element-border-color: hsl(205deg, 14%, 68%); + --form-element-color: var(--color); + --form-element-placeholder-color: var(--muted-color); + --form-element-active-background-color: transparent; + --form-element-active-border-color: var(--primary); + --form-element-focus-color: var(--primary-focus); + --form-element-disabled-background-color: hsl(205deg, 18%, 86%); + --form-element-disabled-border-color: hsl(205deg, 14%, 68%); + --form-element-disabled-opacity: 0.5; + --form-element-invalid-border-color: #c62828; + --form-element-invalid-active-border-color: #d32f2f; + --form-element-invalid-focus-color: rgba(211, 47, 47, 0.125); + --form-element-valid-border-color: #388e3c; + --form-element-valid-active-border-color: #43a047; + --form-element-valid-focus-color: rgba(67, 160, 71, 0.125); + --switch-background-color: hsl(205deg, 16%, 77%); + --switch-color: var(--primary-inverse); + --switch-checked-background-color: var(--primary); + --range-border-color: hsl(205deg, 18%, 86%); + --range-active-border-color: hsl(205deg, 16%, 77%); + --range-thumb-border-color: var(--background-color); + --range-thumb-color: var(--secondary); + --range-thumb-hover-color: var(--secondary-hover); + --range-thumb-active-color: var(--primary); + --table-border-color: var(--muted-border-color); + --table-row-stripped-background-color: #f6f8f9; + --code-background-color: hsl(205deg, 20%, 94%); + --code-color: var(--muted-color); + --code-kbd-background-color: var(--contrast); + --code-kbd-color: var(--contrast-inverse); + --code-tag-color: hsl(330deg, 40%, 50%); + --code-property-color: hsl(185deg, 40%, 40%); + --code-value-color: hsl(40deg, 20%, 50%); + --code-comment-color: hsl(205deg, 14%, 68%); + --accordion-border-color: var(--muted-border-color); + --accordion-close-summary-color: var(--color); + --accordion-open-summary-color: var(--muted-color); + --card-background-color: var(--background-color); + --card-border-color: var(--muted-border-color); + --card-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(27, 40, 50, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(27, 40, 50, 0.024), 0.0625rem 0.125rem 0.75rem rgba(27, 40, 50, 0.03), 0.1125rem 0.225rem 1.35rem rgba(27, 40, 50, 0.036), 0.2085rem 0.417rem 2.502rem rgba(27, 40, 50, 0.04302), 0.5rem 1rem 6rem rgba(27, 40, 50, 0.06), 0 0 0 0.0625rem rgba(27, 40, 50, 0.015); + --card-sectionning-background-color: #fbfbfc; + --dropdown-background-color: #fbfbfc; + --dropdown-border-color: #e1e6eb; + --dropdown-box-shadow: var(--card-box-shadow); + --dropdown-color: var(--color); + --dropdown-hover-background-color: hsl(205deg, 20%, 94%); + --modal-overlay-background-color: rgba(213, 220, 226, 0.8); + --progress-background-color: hsl(205deg, 18%, 86%); + --progress-color: var(--primary); + --loading-spinner-opacity: 0.5; + --tooltip-background-color: var(--contrast); + --tooltip-color: var(--contrast-inverse); + --icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23FFF' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(65, 84, 98, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-chevron-button: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(255, 255, 255, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-chevron-button-inverse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(255, 255, 255, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(115, 130, 140, 0.999)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E"); + --icon-date: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(65, 84, 98, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); + --icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(198, 40, 40, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E"); + --icon-minus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23FFF' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E"); + --icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(65, 84, 98, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); + --icon-time: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(65, 84, 98, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(56, 142, 60, 0.999)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E") +} + +@media only screen and (prefers-color-scheme: dark) { + :root:not([data-theme=light]) { + color-scheme: dark; + --background-color: #11191f; + --color: hsl(205deg, 16%, 77%); + --h1-color: hsl(205deg, 20%, 94%); + --h2-color: #e1e6eb; + --h3-color: hsl(205deg, 18%, 86%); + --h4-color: #c8d1d8; + --h5-color: hsl(205deg, 16%, 77%); + --h6-color: #afbbc4; + --muted-color: hsl(205deg, 10%, 50%); + --muted-border-color: #1f2d38; + --primary: hsl(195deg, 85%, 41%); + --primary-hover: hsl(195deg, 80%, 50%); + --primary-focus: rgba(16, 149, 193, 0.25); + --primary-inverse: #fff; + --secondary: hsl(205deg, 15%, 41%); + --secondary-hover: hsl(205deg, 10%, 50%); + --secondary-focus: rgba(115, 130, 140, 0.25); + --secondary-inverse: #fff; + --contrast: hsl(205deg, 20%, 94%); + --contrast-hover: #fff; + --contrast-focus: rgba(115, 130, 140, 0.25); + --contrast-inverse: #000; + --mark-background-color: #d1c284; + --mark-color: #11191f; + --ins-color: #388e3c; + --del-color: #c62828; + --blockquote-border-color: var(--muted-border-color); + --blockquote-footer-color: var(--muted-color); + --button-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + --button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + --form-element-background-color: #11191f; + --form-element-border-color: #374956; + --form-element-color: var(--color); + --form-element-placeholder-color: var(--muted-color); + --form-element-active-background-color: var(--form-element-background-color); + --form-element-active-border-color: var(--primary); + --form-element-focus-color: var(--primary-focus); + --form-element-disabled-background-color: hsl(205deg, 25%, 23%); + --form-element-disabled-border-color: hsl(205deg, 20%, 32%); + --form-element-disabled-opacity: 0.5; + --form-element-invalid-border-color: #b71c1c; + --form-element-invalid-active-border-color: #c62828; + --form-element-invalid-focus-color: rgba(198, 40, 40, 0.25); + --form-element-valid-border-color: #2e7d32; + --form-element-valid-active-border-color: #388e3c; + --form-element-valid-focus-color: rgba(56, 142, 60, 0.25); + --switch-background-color: #374956; + --switch-color: var(--primary-inverse); + --switch-checked-background-color: var(--primary); + --range-border-color: #24333e; + --range-active-border-color: hsl(205deg, 25%, 23%); + --range-thumb-border-color: var(--background-color); + --range-thumb-color: var(--secondary); + --range-thumb-hover-color: var(--secondary-hover); + --range-thumb-active-color: var(--primary); + --table-border-color: var(--muted-border-color); + --table-row-stripped-background-color: rgba(115, 130, 140, 0.05); + --code-background-color: #18232c; + --code-color: var(--muted-color); + --code-kbd-background-color: var(--contrast); + --code-kbd-color: var(--contrast-inverse); + --code-tag-color: hsl(330deg, 30%, 50%); + --code-property-color: hsl(185deg, 30%, 50%); + --code-value-color: hsl(40deg, 10%, 50%); + --code-comment-color: #4d606d; + --accordion-border-color: var(--muted-border-color); + --accordion-active-summary-color: var(--primary); + --accordion-close-summary-color: var(--color); + --accordion-open-summary-color: var(--muted-color); + --card-background-color: #141e26; + --card-border-color: var(--card-background-color); + --card-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(0, 0, 0, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(0, 0, 0, 0.024), 0.0625rem 0.125rem 0.75rem rgba(0, 0, 0, 0.03), 0.1125rem 0.225rem 1.35rem rgba(0, 0, 0, 0.036), 0.2085rem 0.417rem 2.502rem rgba(0, 0, 0, 0.04302), 0.5rem 1rem 6rem rgba(0, 0, 0, 0.06), 0 0 0 0.0625rem rgba(0, 0, 0, 0.015); + --card-sectionning-background-color: #18232c; + --dropdown-background-color: hsl(205deg, 30%, 15%); + --dropdown-border-color: #24333e; + --dropdown-box-shadow: var(--card-box-shadow); + --dropdown-color: var(--color); + --dropdown-hover-background-color: rgba(36, 51, 62, 0.75); + --modal-overlay-background-color: rgba(36, 51, 62, 0.9); + --progress-background-color: #24333e; + --progress-color: var(--primary); + --loading-spinner-opacity: 0.5; + --tooltip-background-color: var(--contrast); + --tooltip-color: var(--contrast-inverse); + --icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23FFF' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(162, 175, 185, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-chevron-button: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(255, 255, 255, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-chevron-button-inverse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(0, 0, 0, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(115, 130, 140, 0.999)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E"); + --icon-date: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(162, 175, 185, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); + --icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(183, 28, 28, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E"); + --icon-minus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23FFF' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E"); + --icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(162, 175, 185, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); + --icon-time: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(162, 175, 185, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(46, 125, 50, 0.999)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E") + } +} + +[data-theme=dark] { + color-scheme: dark; + --background-color: #11191f; + --color: hsl(205deg, 16%, 77%); + --h1-color: hsl(205deg, 20%, 94%); + --h2-color: #e1e6eb; + --h3-color: hsl(205deg, 18%, 86%); + --h4-color: #c8d1d8; + --h5-color: hsl(205deg, 16%, 77%); + --h6-color: #afbbc4; + --muted-color: hsl(205deg, 10%, 50%); + --muted-border-color: #1f2d38; + --primary: hsl(195deg, 85%, 41%); + --primary-hover: hsl(195deg, 80%, 50%); + --primary-focus: rgba(16, 149, 193, 0.25); + --primary-inverse: #fff; + --secondary: hsl(205deg, 15%, 41%); + --secondary-hover: hsl(205deg, 10%, 50%); + --secondary-focus: rgba(115, 130, 140, 0.25); + --secondary-inverse: #fff; + --contrast: hsl(205deg, 20%, 94%); + --contrast-hover: #fff; + --contrast-focus: rgba(115, 130, 140, 0.25); + --contrast-inverse: #000; + --mark-background-color: #d1c284; + --mark-color: #11191f; + --ins-color: #388e3c; + --del-color: #c62828; + --blockquote-border-color: var(--muted-border-color); + --blockquote-footer-color: var(--muted-color); + --button-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + --button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + --form-element-background-color: #11191f; + --form-element-border-color: #374956; + --form-element-color: var(--color); + --form-element-placeholder-color: var(--muted-color); + --form-element-active-background-color: var(--form-element-background-color); + --form-element-active-border-color: var(--primary); + --form-element-focus-color: var(--primary-focus); + --form-element-disabled-background-color: hsl(205deg, 25%, 23%); + --form-element-disabled-border-color: hsl(205deg, 20%, 32%); + --form-element-disabled-opacity: 0.5; + --form-element-invalid-border-color: #b71c1c; + --form-element-invalid-active-border-color: #c62828; + --form-element-invalid-focus-color: rgba(198, 40, 40, 0.25); + --form-element-valid-border-color: #2e7d32; + --form-element-valid-active-border-color: #388e3c; + --form-element-valid-focus-color: rgba(56, 142, 60, 0.25); + --switch-background-color: #374956; + --switch-color: var(--primary-inverse); + --switch-checked-background-color: var(--primary); + --range-border-color: #24333e; + --range-active-border-color: hsl(205deg, 25%, 23%); + --range-thumb-border-color: var(--background-color); + --range-thumb-color: var(--secondary); + --range-thumb-hover-color: var(--secondary-hover); + --range-thumb-active-color: var(--primary); + --table-border-color: var(--muted-border-color); + --table-row-stripped-background-color: rgba(115, 130, 140, 0.05); + --code-background-color: #18232c; + --code-color: var(--muted-color); + --code-kbd-background-color: var(--contrast); + --code-kbd-color: var(--contrast-inverse); + --code-tag-color: hsl(330deg, 30%, 50%); + --code-property-color: hsl(185deg, 30%, 50%); + --code-value-color: hsl(40deg, 10%, 50%); + --code-comment-color: #4d606d; + --accordion-border-color: var(--muted-border-color); + --accordion-active-summary-color: var(--primary); + --accordion-close-summary-color: var(--color); + --accordion-open-summary-color: var(--muted-color); + --card-background-color: #141e26; + --card-border-color: var(--card-background-color); + --card-box-shadow: 0.0145rem 0.029rem 0.174rem rgba(0, 0, 0, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(0, 0, 0, 0.024), 0.0625rem 0.125rem 0.75rem rgba(0, 0, 0, 0.03), 0.1125rem 0.225rem 1.35rem rgba(0, 0, 0, 0.036), 0.2085rem 0.417rem 2.502rem rgba(0, 0, 0, 0.04302), 0.5rem 1rem 6rem rgba(0, 0, 0, 0.06), 0 0 0 0.0625rem rgba(0, 0, 0, 0.015); + --card-sectionning-background-color: #18232c; + --dropdown-background-color: hsl(205deg, 30%, 15%); + --dropdown-border-color: #24333e; + --dropdown-box-shadow: var(--card-box-shadow); + --dropdown-color: var(--color); + --dropdown-hover-background-color: rgba(36, 51, 62, 0.75); + --modal-overlay-background-color: rgba(36, 51, 62, 0.9); + --progress-background-color: #24333e; + --progress-color: var(--primary); + --loading-spinner-opacity: 0.5; + --tooltip-background-color: var(--contrast); + --tooltip-color: var(--contrast-inverse); + --icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23FFF' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(162, 175, 185, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-chevron-button: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(255, 255, 255, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-chevron-button-inverse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(0, 0, 0, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(115, 130, 140, 0.999)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E"); + --icon-date: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(162, 175, 185, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); + --icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(183, 28, 28, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E"); + --icon-minus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23FFF' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E"); + --icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(162, 175, 185, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); + --icon-time: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(162, 175, 185, 0.999)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(46, 125, 50, 0.999)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E") +} + +*, ::after, ::before { + box-sizing: border-box; + background-repeat: no-repeat +} + +::after, ::before { + text-decoration: inherit; + vertical-align: inherit +} + +:where(:root) { + -webkit-tap-highlight-color: transparent; + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + text-size-adjust: 100%; + text-rendering: optimizeLegibility; + background-color: var(--background-color); + color: var(--color); + font-weight: var(--font-weight); + font-size: var(--font-size); + line-height: var(--line-height); + font-family: var(--font-family); + overflow-wrap: break-word; + cursor: default; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4 +} + +.container, .container-fluid { + width: 100%; + margin-right: auto; + margin-left: auto; + padding-right: var(--spacing); + padding-left: var(--spacing) +} + +@media (min-width: 576px) { + .container { + max-width: 510px; + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width: 768px) { + .container { + max-width: 700px + } +} + +@media (min-width: 992px) { + .container { + max-width: 920px + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1130px + } +} + +b, strong { + font-weight: bolder +} + +sub, sup { + position: relative; + font-size: .75em; + line-height: 0; + vertical-align: baseline +} + +sub { + bottom: -.25em +} + +sup { + top: -.5em +} + +address, blockquote, dl, figure, form, ol, p, pre, table, ul { + margin-top: 0; + margin-bottom: var(--typography-spacing-vertical); + color: var(--color); + font-style: normal; + font-weight: var(--font-weight); + font-size: var(--font-size) +} + +[role=link], a { + --color: var(--primary); + --background-color: transparent; + outline: 0; + background-color: var(--background-color); + color: var(--color); + -webkit-text-decoration: var(--text-decoration); + text-decoration: var(--text-decoration); + transition: background-color var(--transition), color var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition); + transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition); + transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition) +} + +[role=link]:is([aria-current],:hover,:active,:focus), a:is([aria-current],:hover,:active,:focus) { + --color: var(--primary-hover); + --text-decoration: underline +} + +[role=link]:focus, a:focus { + --background-color: var(--primary-focus) +} + +[role=link].secondary, a.secondary { + --color: var(--secondary) +} + +[role=link].secondary:is([aria-current],:hover,:active,:focus), a.secondary:is([aria-current],:hover,:active,:focus) { + --color: var(--secondary-hover) +} + +[role=link].secondary:focus, a.secondary:focus { + --background-color: var(--secondary-focus) +} + +[role=link].contrast, a.contrast { + --color: var(--contrast) +} + +[role=link].contrast:is([aria-current],:hover,:active,:focus), a.contrast:is([aria-current],:hover,:active,:focus) { + --color: var(--contrast-hover) +} + +[role=link].contrast:focus, a.contrast:focus { + --background-color: var(--contrast-focus) +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: var(--typography-spacing-vertical); + color: var(--color); + font-weight: var(--font-weight); + font-size: var(--font-size); + font-family: var(--font-family) +} + +h1 { + --color: var(--h1-color) +} + +h2 { + --color: var(--h2-color) +} + +h3 { + --color: var(--h3-color) +} + +h4 { + --color: var(--h4-color) +} + +h5 { + --color: var(--h5-color) +} + +h6 { + --color: var(--h6-color) +} + +:where(address,blockquote,dl,figure,form,ol,p,pre,table,ul) ~ :is(h1,h2,h3,h4,h5,h6) { + margin-top: var(--typography-spacing-vertical) +} + +.headings, hgroup { + margin-bottom: var(--typography-spacing-vertical) +} + +.headings > *, hgroup > * { + margin-bottom: 0 +} + +.headings > :last-child, hgroup > :last-child { + --color: var(--muted-color); + --font-weight: unset; + font-size: 1rem; + font-family: unset +} + +p { + margin-bottom: var(--typography-spacing-vertical) +} + +small { + font-size: var(--font-size) +} + +:where(dl,ol,ul) { + padding-right: 0; + padding-left: var(--spacing); + -webkit-padding-start: var(--spacing); + padding-inline-start: var(--spacing); + -webkit-padding-end: 0; + padding-inline-end: 0 +} + +:where(dl,ol,ul) li { + margin-bottom: calc(var(--typography-spacing-vertical) * .25) +} + +:where(dl,ol,ul) :is(dl,ol,ul) { + margin: 0; + margin-top: calc(var(--typography-spacing-vertical) * .25) +} + +ul li { + list-style: square +} + +mark { + padding: .125rem .25rem; + background-color: var(--mark-background-color); + color: var(--mark-color); + vertical-align: baseline +} + +blockquote { + display: block; + margin: var(--typography-spacing-vertical) 0; + padding: var(--spacing); + border-right: none; + border-left: .25rem solid var(--blockquote-border-color); + -webkit-border-start: .25rem solid var(--blockquote-border-color); + border-inline-start: .25rem solid var(--blockquote-border-color); + -webkit-border-end: none; + border-inline-end: none +} + +blockquote footer { + margin-top: calc(var(--typography-spacing-vertical) * .5); + color: var(--blockquote-footer-color) +} + +abbr[title] { + border-bottom: 1px dotted; + text-decoration: none; + cursor: help +} + +ins { + color: var(--ins-color); + text-decoration: none +} + +del { + color: var(--del-color) +} + +::-moz-selection { + background-color: var(--primary-focus) +} + +::selection { + background-color: var(--primary-focus) +} + +button { + margin: 0; + overflow: visible; + font-family: inherit; + text-transform: none +} + +[type=button], [type=reset], [type=submit], button { + -webkit-appearance: button +} + +button { + display: block; + width: 100%; + margin-bottom: var(--spacing) +} + +[role=button] { + display: inline-block; + text-decoration: none +} + +[role=button], button, input[type=button], input[type=reset], input[type=submit] { + --background-color: var(--primary); + --border-color: var(--primary); + --color: var(--primary-inverse); + --box-shadow: 0 0 0 rgba(0, 0, 0, 0); + padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal); + border: var(--border-width) solid var(--border-color); + border-radius: var(--border-radius); + outline: 0; + background-color: var(--background-color); + box-shadow: var(--box-shadow); + color: var(--color); + font-weight: var(--font-weight); + font-size: 1rem; + line-height: var(--line-height); + text-align: center; + cursor: pointer; + transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition) +} + +[role=button]:is([aria-current],:hover,:active,:focus), button:is([aria-current],:hover,:active,:focus), input[type=button]:is([aria-current],:hover,:active,:focus), input[type=reset]:is([aria-current],:hover,:active,:focus), input[type=submit]:is([aria-current],:hover,:active,:focus) { + --background-color: var(--primary-hover); + --border-color: var(--primary-hover); + --box-shadow: 0 0 0 rgba(0, 0, 0, 0); + --color: var(--primary-inverse) +} + +[role=button]:focus, button:focus, input[type=button]:focus, input[type=reset]:focus, input[type=submit]:focus { + --box-shadow: 0 0 0 rgba(0, 0, 0, 0), 0 0 0 var(--outline-width) var(--primary-focus) +} + +:is(button,input[type=submit],input[type=button],[role=button]).secondary, input[type=reset] { + --background-color: var(--secondary); + --border-color: var(--secondary); + --color: var(--secondary-inverse); + cursor: pointer +} + +:is(button,input[type=submit],input[type=button],[role=button]).secondary:is([aria-current],:hover,:active,:focus), input[type=reset]:is([aria-current],:hover,:active,:focus) { + --background-color: var(--secondary-hover); + --border-color: var(--secondary-hover); + --color: var(--secondary-inverse) +} + +:is(button,input[type=submit],input[type=button],[role=button]).secondary:focus, input[type=reset]:focus { + --box-shadow: 0 0 0 rgba(0, 0, 0, 0), 0 0 0 var(--outline-width) var(--secondary-focus) +} + +:is(button,input[type=submit],input[type=button],[role=button]).contrast { + --background-color: var(--contrast); + --border-color: var(--contrast); + --color: var(--contrast-inverse) +} + +:is(button,input[type=submit],input[type=button],[role=button]).contrast:is([aria-current],:hover,:active,:focus) { + --background-color: var(--contrast-hover); + --border-color: var(--contrast-hover); + --color: var(--contrast-inverse) +} + +:is(button,input[type=submit],input[type=button],[role=button]).contrast:focus { + --box-shadow: 0 0 0 rgba(0, 0, 0, 0), 0 0 0 var(--outline-width) var(--contrast-focus) +} + +:is(button,input[type=submit],input[type=button],[role=button]).outline, input[type=reset].outline { + --background-color: transparent; + --color: var(--primary) +} + +:is(button,input[type=submit],input[type=button],[role=button]).outline:is([aria-current],:hover,:active,:focus), input[type=reset].outline:is([aria-current],:hover,:active,:focus) { + --background-color: transparent; + --color: var(--primary-hover) +} + +:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary, input[type=reset].outline { + --color: var(--secondary) +} + +:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary:is([aria-current],:hover,:active,:focus), input[type=reset].outline:is([aria-current],:hover,:active,:focus) { + --color: var(--secondary-hover) +} + +:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast { + --color: var(--contrast) +} + +:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast:is([aria-current],:hover,:active,:focus) { + --color: var(--contrast-hover) +} + +:where(button,[type=submit],[type=button],[type=reset],[role=button])[disabled], :where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]), a[role=button]:not([href]) { + opacity: .5; + pointer-events: none +} + +input, optgroup, select, textarea { + margin: 0; + font-size: 1rem; + line-height: var(--line-height); + font-family: inherit; + letter-spacing: inherit +} + +input { + overflow: visible +} + +select { + text-transform: none +} + +legend { + max-width: 100%; + padding: 0; + color: inherit; + white-space: normal +} + +textarea { + overflow: auto +} + +[type=checkbox], [type=radio] { + padding: 0 +} + +::-webkit-inner-spin-button, ::-webkit-outer-spin-button { + height: auto +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px +} + +[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit +} + +::-moz-focus-inner { + padding: 0; + border-style: none +} + +:-moz-focusring { + outline: 0 +} + +:-moz-ui-invalid { + box-shadow: none +} + +::-ms-expand { + display: none +} + +[type=file], [type=range] { + padding: 0; + border-width: 0 +} + +input:not([type=checkbox]):not([type=radio]):not([type=range]) { + height: calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2) +} + +fieldset { + margin: 0; + margin-bottom: var(--spacing); + padding: 0; + border: 0 +} + +fieldset legend, label { + display: block; + margin-bottom: calc(var(--spacing) * .25); + font-weight: var(--form-label-font-weight, var(--font-weight)) +} + +input:not([type=checkbox]):not([type=radio]), select, textarea { + width: 100% +} + +input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]), select, textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding: var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal) +} + +input, select, textarea { + --background-color: var(--form-element-background-color); + --border-color: var(--form-element-border-color); + --color: var(--form-element-color); + --box-shadow: none; + border: var(--border-width) solid var(--border-color); + border-radius: var(--border-radius); + outline: 0; + background-color: var(--background-color); + box-shadow: var(--box-shadow); + color: var(--color); + font-weight: var(--font-weight); + transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition) +} + +:where(select,textarea):is(:active,:focus), input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):is(:active,:focus) { + --background-color: var(--form-element-active-background-color) +} + +:where(select,textarea):is(:active,:focus), input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):is(:active,:focus) { + --border-color: var(--form-element-active-border-color) +} + +input:not([type=submit]):not([type=button]):not([type=reset]):not([type=range]):not([type=file]):not([readonly]):focus, select:focus, textarea:focus { + --box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color) +} + +:where(fieldset[disabled]) :is(input:not([type=submit]):not([type=button]):not([type=reset]),select,textarea), input:not([type=submit]):not([type=button]):not([type=reset])[disabled], select[disabled], textarea[disabled] { + --background-color: var(--form-element-disabled-background-color); + --border-color: var(--form-element-disabled-border-color); + opacity: var(--form-element-disabled-opacity); + pointer-events: none +} + +:where(input,select,textarea):not([type=checkbox]):not([type=radio])[aria-invalid] { + padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem) !important; + padding-left: var(--form-element-spacing-horizontal); + -webkit-padding-start: var(--form-element-spacing-horizontal) !important; + padding-inline-start: var(--form-element-spacing-horizontal) !important; + -webkit-padding-end: calc(var(--form-element-spacing-horizontal) + 1.5rem) !important; + padding-inline-end: calc(var(--form-element-spacing-horizontal) + 1.5rem) !important; + background-position: center right .75rem; + background-size: 1rem auto; + background-repeat: no-repeat +} + +:where(input,select,textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false] { + background-image: var(--icon-valid) +} + +:where(input,select,textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true] { + background-image: var(--icon-invalid) +} + +:where(input,select,textarea)[aria-invalid=false] { + --border-color: var(--form-element-valid-border-color) +} + +:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus) { + --border-color: var(--form-element-valid-active-border-color) !important; + --box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important +} + +:where(input,select,textarea)[aria-invalid=true] { + --border-color: var(--form-element-invalid-border-color) +} + +:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus) { + --border-color: var(--form-element-invalid-active-border-color) !important; + --box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important +} + +[dir=rtl] :where(input,select,textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false], [dir=rtl] :where(input,select,textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true], [dir=rtl] :where(input,select,textarea):not([type=checkbox]):not([type=radio])[aria-invalid] { + background-position: center left .75rem +} + +input::-webkit-input-placeholder, input::placeholder, select:invalid, textarea::-webkit-input-placeholder, textarea::placeholder { + color: var(--form-element-placeholder-color); + opacity: 1 +} + +input:not([type=checkbox]):not([type=radio]), select, textarea { + margin-bottom: var(--spacing) +} + +select::-ms-expand { + border: 0; + background-color: transparent +} + +select:not([multiple]):not([size]) { + padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem); + padding-left: var(--form-element-spacing-horizontal); + -webkit-padding-start: var(--form-element-spacing-horizontal); + padding-inline-start: var(--form-element-spacing-horizontal); + -webkit-padding-end: calc(var(--form-element-spacing-horizontal) + 1.5rem); + padding-inline-end: calc(var(--form-element-spacing-horizontal) + 1.5rem); + background-image: var(--icon-chevron); + background-position: center right .75rem; + background-size: 1rem auto; + background-repeat: no-repeat +} + +[dir=rtl] select:not([multiple]):not([size]) { + background-position: center left .75rem +} + +:where(input,select,textarea) + small { + display: block; + width: 100%; + margin-top: calc(var(--spacing) * -.75); + margin-bottom: var(--spacing); + color: var(--muted-color) +} + +label > :where(input,select,textarea) { + margin-top: calc(var(--spacing) * .25) +} + +[type=checkbox], [type=radio] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 1.25em; + height: 1.25em; + margin-top: -.125em; + margin-right: .375em; + margin-left: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-margin-end: .375em; + margin-inline-end: .375em; + border-width: var(--border-width); + font-size: inherit; + vertical-align: middle; + cursor: pointer +} + +[type=checkbox]::-ms-check, [type=radio]::-ms-check { + display: none +} + +[type=checkbox]:checked, [type=checkbox]:checked:active, [type=checkbox]:checked:focus, [type=radio]:checked, [type=radio]:checked:active, [type=radio]:checked:focus { + --background-color: var(--primary); + --border-color: var(--primary); + background-image: var(--icon-checkbox); + background-position: center; + background-size: .75em auto; + background-repeat: no-repeat +} + +[type=checkbox] ~ label, [type=radio] ~ label { + display: inline-block; + margin-right: .375em; + margin-bottom: 0; + cursor: pointer +} + +[type=checkbox]:indeterminate { + --background-color: var(--primary); + --border-color: var(--primary); + background-image: var(--icon-minus); + background-position: center; + background-size: .75em auto; + background-repeat: no-repeat +} + +[type=radio] { + border-radius: 50% +} + +[type=radio]:checked, [type=radio]:checked:active, [type=radio]:checked:focus { + --background-color: var(--primary-inverse); + border-width: .35em; + background-image: none +} + +[type=checkbox][role=switch] { + --background-color: var(--switch-background-color); + --border-color: var(--switch-background-color); + --color: var(--switch-color); + width: 2.25em; + height: 1.25em; + border: var(--border-width) solid var(--border-color); + border-radius: 1.25em; + background-color: var(--background-color); + line-height: 1.25em +} + +[type=checkbox][role=switch]:focus { + --background-color: var(--switch-background-color); + --border-color: var(--switch-background-color) +} + +[type=checkbox][role=switch]:checked { + --background-color: var(--switch-checked-background-color); + --border-color: var(--switch-checked-background-color) +} + +[type=checkbox][role=switch]:before { + display: block; + width: calc(1.25em - (var(--border-width) * 2)); + height: 100%; + border-radius: 50%; + background-color: var(--color); + content: ""; + transition: margin .1s ease-in-out +} + +[type=checkbox][role=switch]:checked { + background-image: none +} + +[type=checkbox][role=switch]:checked::before { + margin-left: calc(1.125em - var(--border-width)); + -webkit-margin-start: calc(1.125em - var(--border-width)); + margin-inline-start: calc(1.125em - var(--border-width)) +} + +[type=checkbox]:checked[aria-invalid=false], [type=checkbox][aria-invalid=false], [type=checkbox][role=switch]:checked[aria-invalid=false], [type=checkbox][role=switch][aria-invalid=false], [type=radio]:checked[aria-invalid=false], [type=radio][aria-invalid=false] { + --border-color: var(--form-element-valid-border-color) +} + +[type=checkbox]:checked[aria-invalid=true], [type=checkbox][aria-invalid=true], [type=checkbox][role=switch]:checked[aria-invalid=true], [type=checkbox][role=switch][aria-invalid=true], [type=radio]:checked[aria-invalid=true], [type=radio][aria-invalid=true] { + --border-color: var(--form-element-invalid-border-color) +} + +[type=color]::-webkit-color-swatch-wrapper { + padding: 0 +} + +[type=color]::-moz-focus-inner { + padding: 0 +} + +[type=color]::-webkit-color-swatch { + border: 0; + border-radius: calc(var(--border-radius) * .5) +} + +[type=color]::-moz-color-swatch { + border: 0; + border-radius: calc(var(--border-radius) * .5) +} + +input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=date], input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=datetime-local], input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=month], input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=time], input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=week] { + --icon-position: 0.75rem; + --icon-width: 1rem; + padding-right: calc(var(--icon-width) + var(--icon-position)); + background-image: var(--icon-date); + background-position: center right var(--icon-position); + background-size: var(--icon-width) auto; + background-repeat: no-repeat +} + +input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=time] { + background-image: var(--icon-time) +} + +[type=date]::-webkit-calendar-picker-indicator, [type=datetime-local]::-webkit-calendar-picker-indicator, [type=month]::-webkit-calendar-picker-indicator, [type=time]::-webkit-calendar-picker-indicator, [type=week]::-webkit-calendar-picker-indicator { + width: var(--icon-width); + margin-right: calc(var(--icon-width) * -1); + margin-left: var(--icon-position); + opacity: 0 +} + +[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]) { + text-align: right +} + +[type=file] { + --color: var(--muted-color); + padding: calc(var(--form-element-spacing-vertical) * .5) 0; + border: 0; + border-radius: 0; + background: 0 0 +} + +[type=file]::-webkit-file-upload-button { + --background-color: var(--secondary); + --border-color: var(--secondary); + --color: var(--secondary-inverse); + margin-right: calc(var(--spacing) / 2); + margin-left: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-margin-end: calc(var(--spacing) / 2); + margin-inline-end: calc(var(--spacing) / 2); + padding: calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5); + border: var(--border-width) solid var(--border-color); + border-radius: var(--border-radius); + outline: 0; + background-color: var(--background-color); + box-shadow: var(--box-shadow); + color: var(--color); + font-weight: var(--font-weight); + font-size: 1rem; + line-height: var(--line-height); + text-align: center; + cursor: pointer; + -webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); + transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition) +} + +[type=file]::file-selector-button { + --background-color: var(--secondary); + --border-color: var(--secondary); + --color: var(--secondary-inverse); + margin-right: calc(var(--spacing) / 2); + margin-left: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-margin-end: calc(var(--spacing) / 2); + margin-inline-end: calc(var(--spacing) / 2); + padding: calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5); + border: var(--border-width) solid var(--border-color); + border-radius: var(--border-radius); + outline: 0; + background-color: var(--background-color); + box-shadow: var(--box-shadow); + color: var(--color); + font-weight: var(--font-weight); + font-size: 1rem; + line-height: var(--line-height); + text-align: center; + cursor: pointer; + transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition) +} + +[type=file]::-webkit-file-upload-button:is(:hover,:active,:focus) { + --background-color: var(--secondary-hover); + --border-color: var(--secondary-hover) +} + +[type=file]::file-selector-button:is(:hover,:active,:focus) { + --background-color: var(--secondary-hover); + --border-color: var(--secondary-hover) +} + +[type=file]::-webkit-file-upload-button { + --background-color: var(--secondary); + --border-color: var(--secondary); + --color: var(--secondary-inverse); + margin-right: calc(var(--spacing) / 2); + margin-left: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-margin-end: calc(var(--spacing) / 2); + margin-inline-end: calc(var(--spacing) / 2); + padding: calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5); + border: var(--border-width) solid var(--border-color); + border-radius: var(--border-radius); + outline: 0; + background-color: var(--background-color); + box-shadow: var(--box-shadow); + color: var(--color); + font-weight: var(--font-weight); + font-size: 1rem; + line-height: var(--line-height); + text-align: center; + cursor: pointer; + -webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); + transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition) +} + +[type=file]::-webkit-file-upload-button:is(:hover,:active,:focus) { + --background-color: var(--secondary-hover); + --border-color: var(--secondary-hover) +} + +[type=file]::-ms-browse { + --background-color: var(--secondary); + --border-color: var(--secondary); + --color: var(--secondary-inverse); + margin-right: calc(var(--spacing) / 2); + margin-left: 0; + margin-inline-start: 0; + margin-inline-end: calc(var(--spacing) / 2); + padding: calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5); + border: var(--border-width) solid var(--border-color); + border-radius: var(--border-radius); + outline: 0; + background-color: var(--background-color); + box-shadow: var(--box-shadow); + color: var(--color); + font-weight: var(--font-weight); + font-size: 1rem; + line-height: var(--line-height); + text-align: center; + cursor: pointer; + -ms-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); + transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition) +} + +[type=file]::-ms-browse:is(:hover,:active,:focus) { + --background-color: var(--secondary-hover); + --border-color: var(--secondary-hover) +} + +[type=range] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 100%; + height: 1.25rem; + background: 0 0 +} + +[type=range]::-webkit-slider-runnable-track { + width: 100%; + height: .25rem; + border-radius: var(--border-radius); + background-color: var(--range-border-color); + -webkit-transition: background-color var(--transition), box-shadow var(--transition); + transition: background-color var(--transition), box-shadow var(--transition) +} + +[type=range]::-moz-range-track { + width: 100%; + height: .25rem; + border-radius: var(--border-radius); + background-color: var(--range-border-color); + -moz-transition: background-color var(--transition), box-shadow var(--transition); + transition: background-color var(--transition), box-shadow var(--transition) +} + +[type=range]::-ms-track { + width: 100%; + height: .25rem; + border-radius: var(--border-radius); + background-color: var(--range-border-color); + -ms-transition: background-color var(--transition), box-shadow var(--transition); + transition: background-color var(--transition), box-shadow var(--transition) +} + +[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + width: 1.25rem; + height: 1.25rem; + margin-top: -.5rem; + border: 2px solid var(--range-thumb-border-color); + border-radius: 50%; + background-color: var(--range-thumb-color); + cursor: pointer; + -webkit-transition: background-color var(--transition), transform var(--transition); + transition: background-color var(--transition), transform var(--transition) +} + +[type=range]::-moz-range-thumb { + -webkit-appearance: none; + width: 1.25rem; + height: 1.25rem; + margin-top: -.5rem; + border: 2px solid var(--range-thumb-border-color); + border-radius: 50%; + background-color: var(--range-thumb-color); + cursor: pointer; + -moz-transition: background-color var(--transition), transform var(--transition); + transition: background-color var(--transition), transform var(--transition) +} + +[type=range]::-ms-thumb { + -webkit-appearance: none; + width: 1.25rem; + height: 1.25rem; + margin-top: -.5rem; + border: 2px solid var(--range-thumb-border-color); + border-radius: 50%; + background-color: var(--range-thumb-color); + cursor: pointer; + -ms-transition: background-color var(--transition), transform var(--transition); + transition: background-color var(--transition), transform var(--transition) +} + +[type=range]:focus, [type=range]:hover { + --range-border-color: var(--range-active-border-color); + --range-thumb-color: var(--range-thumb-hover-color) +} + +[type=range]:active { + --range-thumb-color: var(--range-thumb-active-color) +} + +[type=range]:active::-webkit-slider-thumb { + transform: scale(1.25) +} + +[type=range]:active::-moz-range-thumb { + transform: scale(1.25) +} + +[type=range]:active::-ms-thumb { + transform: scale(1.25) +} + +input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=search] { + -webkit-padding-start: calc(var(--form-element-spacing-horizontal) + 1.75rem); + padding-inline-start: calc(var(--form-element-spacing-horizontal) + 1.75rem); + border-radius: 5rem; + background-image: var(--icon-search); + background-position: center left 1.125rem; + background-size: 1rem auto; + background-repeat: no-repeat +} + +input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=search][aria-invalid] { + -webkit-padding-start: calc(var(--form-element-spacing-horizontal) + 1.75rem) !important; + padding-inline-start: calc(var(--form-element-spacing-horizontal) + 1.75rem) !important; + background-position: center left 1.125rem, center right .75rem +} + +input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=search][aria-invalid=false] { + background-image: var(--icon-search), var(--icon-valid) +} + +input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=search][aria-invalid=true] { + background-image: var(--icon-search), var(--icon-invalid) +} + +[type=search]::-webkit-search-cancel-button { + -webkit-appearance: none; + display: none +} + +[dir=rtl] :where(input):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=search] { + background-position: center right 1.125rem +} + +[dir=rtl] :where(input):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[type=search][aria-invalid] { + background-position: center right 1.125rem, center left .75rem +} + +code, kbd, pre, samp { + font-size: .875em; + font-family: var(--font-family) +} + +pre { + -ms-overflow-style: scrollbar; + overflow: auto +} + +code, kbd, pre { + border-radius: var(--border-radius); + background: var(--code-background-color); + color: var(--code-color); + font-weight: var(--font-weight); + line-height: initial +} + +code, kbd { + display: inline-block; + padding: .375rem .5rem +} + +pre { + display: block; + margin-bottom: var(--spacing); + overflow-x: auto +} + +pre > code { + display: block; + padding: var(--spacing); + background: 0 0; + font-size: 14px; + line-height: var(--line-height) +} + +code b { + color: var(--code-tag-color); + font-weight: var(--font-weight) +} + +code i { + color: var(--code-property-color); + font-style: normal +} + +code u { + color: var(--code-value-color); + text-decoration: none +} + +code em { + color: var(--code-comment-color); + font-style: normal +} + +kbd { + background-color: var(--code-kbd-background-color); + color: var(--code-kbd-color); + vertical-align: baseline +} + +hr { + height: 0; + border: 0; + border-top: 1px solid var(--muted-border-color); + color: inherit +} + +[hidden], template { + display: none !important +} + +canvas { + display: inline-block +} + +:where(navli)::before { + float: left; + content: "​" +} + +nav, nav ul { + display: flex +} + +nav { + justify-content: space-between +} + +nav ol, nav ul { + align-items: center; + margin-bottom: 0; + padding: 0; + list-style: none +} + +nav ol:first-of-type, nav ul:first-of-type { + margin-left: calc(var(--nav-element-spacing-horizontal) * -1) +} + +nav ol:last-of-type, nav ul:last-of-type { + margin-right: calc(var(--nav-element-spacing-horizontal) * -1) +} + +nav li { + display: inline-block; + margin: 0; + padding: var(--nav-element-spacing-vertical) var(--nav-element-spacing-horizontal) +} + +nav li > * { + --spacing: 0 +} + +nav :where(a,[role=link]) { + display: inline-block; + margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1); + padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); + border-radius: var(--border-radius); + text-decoration: none +} + +nav :where(a,[role=link]):is([aria-current],:hover,:active,:focus) { + text-decoration: none +} + +nav [role=button] { + margin-right: inherit; + margin-left: inherit; + padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal) +} + +aside li, aside nav, aside ol, aside ul { + display: block +} + +aside li { + padding: calc(var(--nav-element-spacing-vertical) * .5) var(--nav-element-spacing-horizontal) +} + +aside li a { + display: block +} + +aside li [role=button] { + margin: inherit +} + +progress { + display: inline-block; + vertical-align: baseline +} + +progress { + -webkit-appearance: none; + -moz-appearance: none; + display: inline-block; + appearance: none; + width: 100%; + height: .5rem; + margin-bottom: calc(var(--spacing) * .5); + overflow: hidden; + border: 0; + border-radius: var(--border-radius); + background-color: var(--progress-background-color); + color: var(--progress-color) +} + +progress::-webkit-progress-bar { + border-radius: var(--border-radius); + background: 0 0 +} + +progress[value]::-webkit-progress-value { + background-color: var(--progress-color) +} + +progress::-moz-progress-bar { + background-color: var(--progress-color) +} + +@media (prefers-reduced-motion: no-preference) { + progress:indeterminate { + background: var(--progress-background-color) linear-gradient(to right, var(--progress-color) 30%, var(--progress-background-color) 30%) top left/150% 150% no-repeat; + -webkit-animation: progressIndeterminate 1s linear infinite; + animation: progressIndeterminate 1s linear infinite + } + + progress:indeterminate[value]::-webkit-progress-value { + background-color: transparent + } + + progress:indeterminate::-moz-progress-bar { + background-color: transparent + } +} + +@media (prefers-reduced-motion: no-preference) { + [dir=rtl] progress:indeterminate { + animation-direction: reverse + } +} + +@-webkit-keyframes progressIndeterminate { + 0% { + background-position: 200% 0 + } + 100% { + background-position: -200% 0 + } +} + +@keyframes progressIndeterminate { + 0% { + background-position: 200% 0 + } + 100% { + background-position: -200% 0 + } +} + +[aria-busy=true] { + cursor: progress +} + +[aria-busy=true]:not(input):not(select):not(textarea)::before { + display: inline-block; + width: 1em; + height: 1em; + border: .1875em solid currentColor; + border-radius: 1em; + border-right-color: transparent; + content: ""; + vertical-align: text-bottom; + vertical-align: -.125em; + -webkit-animation: spinner .75s linear infinite; + animation: spinner .75s linear infinite; + opacity: var(--loading-spinner-opacity) +} + +[aria-busy=true]:not(input):not(select):not(textarea):not(:empty)::before { + margin-right: calc(var(--spacing) * .5); + margin-left: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-margin-end: calc(var(--spacing) * .5); + margin-inline-end: calc(var(--spacing) * .5) +} + +[aria-busy=true]:not(input):not(select):not(textarea):empty { + text-align: center +} + +a[aria-busy=true], button[aria-busy=true], input[type=button][aria-busy=true], input[type=reset][aria-busy=true], input[type=submit][aria-busy=true] { + pointer-events: none +} + +@-webkit-keyframes spinner { + to { + transform: rotate(360deg) + } +} + +@keyframes spinner { + to { + transform: rotate(360deg) + } +} + +[data-tooltip] { + position: relative +} + +[data-tooltip]:not(a):not(button):not(input) { + border-bottom: 1px dotted; + text-decoration: none; + cursor: help +} + +[data-tooltip]::after, [data-tooltip]::before { + display: block; + z-index: 99; + position: absolute; + bottom: 100%; + left: 50%; + padding: .25rem .5rem; + overflow: hidden; + transform: translate(-50%, -.25rem); + border-radius: var(--border-radius); + background: var(--tooltip-background-color); + content: attr(data-tooltip); + color: var(--tooltip-color); + font-style: normal; + font-weight: var(--font-weight); + font-size: .875rem; + text-decoration: none; + text-overflow: ellipsis; + white-space: nowrap; + opacity: 0; + pointer-events: none +} + +[data-tooltip]::after { + padding: 0; + transform: translate(-50%, 0); + border-top: .3rem solid; + border-right: .3rem solid transparent; + border-left: .3rem solid transparent; + border-radius: 0; + background-color: transparent; + content: ""; + color: var(--tooltip-background-color) +} + +[data-tooltip]:focus::after, [data-tooltip]:focus::before, [data-tooltip]:hover::after, [data-tooltip]:hover::before { + opacity: 1 +} + +@media (hover: hover) and (pointer: fine) { + [data-tooltip]:focus::after, [data-tooltip]:focus::before, [data-tooltip]:hover::after, [data-tooltip]:hover::before { + -webkit-animation-duration: .2s; + animation-duration: .2s; + -webkit-animation-name: slide; + animation-name: slide + } + + [data-tooltip]:focus::after, [data-tooltip]:hover::after { + -webkit-animation-name: slideCaret; + animation-name: slideCaret + } +} + +@-webkit-keyframes slide { + from { + transform: translate(-50%, .75rem); + opacity: 0 + } + to { + transform: translate(-50%, -.25rem); + opacity: 1 + } +} + +@keyframes slide { + from { + transform: translate(-50%, .75rem); + opacity: 0 + } + to { + transform: translate(-50%, -.25rem); + opacity: 1 + } +} + +@-webkit-keyframes slideCaret { + from { + opacity: 0 + } + 50% { + transform: translate(-50%, -.25rem); + opacity: 0 + } + to { + transform: translate(-50%, 0); + opacity: 1 + } +} + +@keyframes slideCaret { + from { + opacity: 0 + } + 50% { + transform: translate(-50%, -.25rem); + opacity: 0 + } + to { + transform: translate(-50%, 0); + opacity: 1 + } +} + +[aria-controls] { + cursor: pointer +} + +[aria-disabled=true], [disabled] { + cursor: not-allowed +} + +[aria-hidden=false][hidden] { + display: initial +} + +[aria-hidden=false][hidden]:not(:focus) { + clip: rect(0, 0, 0, 0); + position: absolute +} + +[tabindex], a, area, button, input, label, select, summary, textarea { + -ms-touch-action: manipulation +} + +[dir=rtl] { + direction: rtl +} + +:root { + --icon-external: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(115, 130, 140, 0.999)' opacity='0.66' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); + --icon-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23FFF' stroke-width='5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); + --icon-check-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(0, 0, 0, 0.75)' stroke-width='5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E") +} + +:root:not([data-theme=dark]), [data-theme=light] { + --invalid-color: #c62828; + --valid-color: #388e3c; + --nav-background-color: rgba(255, 255, 255, 0.7); + --nav-border-color: rgba(115, 130, 140, 0.2); + --nav-logo-color: #fff; + --article-code-background-color: #f9fafb +} + +@media only screen and (prefers-color-scheme: dark) { + :root:not([data-theme=light]) { + --invalid-color: rgba(183, 28, 28, 0.5); + --valid-color: rgba(46, 125, 50, 0.5); + --nav-background-color: rgba(16, 24, 30, 0.8); + --nav-border-color: rgba(115, 130, 140, 0.2); + --nav-logo-color: #0e1419; + --article-code-background-color: var(--code-background-color) + } +} + +[data-theme=dark] { + --invalid-color: rgba(183, 28, 28, 0.5); + --valid-color: rgba(46, 125, 50, 0.5); + --nav-background-color: rgba(16, 24, 30, 0.8); + --nav-border-color: rgba(115, 130, 140, 0.2); + --nav-logo-color: #0e1419; + --article-code-background-color: var(--code-background-color) +} + +html { + scroll-behavior: smooth +} + +.switcher { + position: fixed; + right: calc(var(--spacing) / 2 + 0px); + bottom: var(--spacing); + width: auto; + margin-bottom: 0; + padding: .75rem; + border-radius: 2rem; + box-shadow: var(--card-box-shadow); + line-height: 1; + text-align: right +} + +.switcher::after { + display: inline-block; + width: 1rem; + height: 1rem; + border: .15rem solid currentColor; + border-radius: 50%; + background: linear-gradient(to right, currentColor 0, currentColor 50%, transparent 50%); + content: ""; + vertical-align: bottom; + transition: transform var(--transition) +} + +.switcher i { + display: inline-block; + max-width: 0; + padding: 0; + overflow: hidden; + font-style: normal; + font-size: .875rem; + white-space: nowrap +} + +.switcher:focus, .switcher:hover { + max-width: 100%; + transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition) +} + +.switcher:hover::after { + transform: rotate(180deg) +} + +.switcher:hover i { + max-width: 100%; + padding: 0 calc(var(--spacing) / 2) 0 calc(var(--spacing) / 4); + transition: max-width var(--transition), padding var(--transition) +} + +.switcher:focus { + box-shadow: var(--card-box-shadow), 0 0 0 .2rem var(--secondary-focus) +} + +@media (min-width: 576px) { + .switcher { + right: calc(var(--spacing) + 0px) + } +} + +:root:not([data-theme=dark]), [data-theme=light] { + --demo-background: linear-gradient( + 180deg, + #fff 0%, + rgba(188, 235, 251, 0.25) 33%, + rgba(188, 235, 251, 0.25) 66%, + #fff 100% + ) +} + +@media only screen and (prefers-color-scheme: dark) { + :root:not([data-theme=light]) { + --demo-background: linear-gradient(180deg, #11191f 0%, + rgba(10, 53, 67, 0.5) 33%, + rgba(10, 53, 67, 0.5) 66%, + #11191f 100%) + } +} + +[data-theme=dark] { + --demo-background: linear-gradient(180deg, #11191f 0%, + rgba(10, 53, 67, 0.5) 33%, + rgba(10, 53, 67, 0.5) 66%, + #11191f 100%) +} + +header h1, header h2, main h1, main h2 { + --font-weight: 800 +} + +h1 { + line-height: 1.125 +} + +@media (min-width: 576px) { + h1 { + --font-size: 2.25rem + } +} + +@media (min-width: 768px) { + h1 { + --font-size: 2.5rem + } +} + +@media (min-width: 992px) { + h1 { + --font-size: 2.75rem + } +} + +@media (min-width: 1200px) { + h1 { + --font-size: 3rem + } +} + +h2 { + line-height: 1.25 +} + +@media (min-width: 576px) { + h2 { + --font-size: 1.875rem + } +} + +@media (min-width: 768px) { + h2 { + --font-size: 2rem + } +} + +@media (min-width: 992px) { + h2 { + --font-size: 2.125rem + } +} + +@media (min-width: 1200px) { + h2 { + --font-size: 2.25rem + } +} + +hgroup { + margin-bottom: var(--block-spacing-vertical) +} + +hgroup:after { + display: block; + max-width: 100px; + margin-top: 1rem; + border-bottom: .125rem solid var(--primary); + content: "" +} + +#principles hgroup, header h1, header p { + max-width: 60ch; + margin-left: auto; + margin-right: auto +} + +ul.check { + padding: 0 +} + +ul.check li { + margin-left: 1.5rem; + list-style: none +} + +ul.check li::before { + display: block; + position: absolute; + width: 1rem; + height: 1rem; + margin-top: .25rem; + margin-left: -1.5rem; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(16, 149, 193, 0.999)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 100%; + content: "" +} + +body { + width: 100%; + margin: 0 +} + +footer, header, main > section { + --block-spacing-vertical: 3rem; + --demo-height: calc(4.5rem + 352px); + width: 100%; + margin: 0; + padding: var(--block-spacing-vertical) 0 +} + +@media (min-width: 576px) { + footer, header, main > section { + --block-spacing-vertical: 4rem; + --demo-height: calc(6rem + 392px) + } +} + +@media (min-width: 768px) { + footer, header, main > section { + --block-spacing-vertical: 5rem; + --demo-height: calc(7.5rem + 440px) + } +} + +@media (min-width: 992px) { + footer, header, main > section { + --block-spacing-vertical: 6rem; + --demo-height: calc(9rem + 488px) + } +} + +@media (min-width: 1200px) { + footer, header, main > section { + --block-spacing-vertical: 7rem; + --demo-height: calc(10.5rem + 540px) + } +} + +header { + padding-bottom: 0 +} + +#demo { + display: flex; + align-items: center +} + +#examples, #star { + background-color: var(--background-color) +} + +#principles { + padding-top: 0 +} + +#star { + padding: calc(var(--block-spacing-vertical) / 2) 0; + text-align: center +} + +body > nav { + --nav-link-spacing-vertical: 1rem; + box-shadow: 0 1px 0 var(--nav-border-color) +} + +body > nav a { + border-radius: 0 +} + +body > nav a svg { + vertical-align: text-bottom; + height: 1rem +} + +body > nav ul:first-of-type { + margin-left: calc(var(--spacing) * -1) +} + +body > nav ul:first-of-type li { + padding: 0 +} + +body > nav ul:first-of-type li:first-of-type a { + display: block; + margin: 0; + padding: 0; + background: var(--h1-color); + color: var(--nav-logo-color) +} + +body > nav ul:first-of-type li:first-of-type a svg { + display: block; + width: 3.5rem; + height: 3.5rem +} + +body > nav ul:first-of-type li:nth-of-type(2) { + display: none; + margin-left: calc(var(--spacing) * 1.5); + color: var(--h1-color); + font-weight: 200 +} + +body > nav ul:first-of-type li:nth-of-type(2) strong { + font-weight: 400 +} + +@media (min-width: 992px) { + body > nav ul:first-of-type li:nth-of-type(2) { + display: inline + } +} + +header h1, header p { + text-align: center +} + +header h1 { + margin-bottom: var(--spacing) +} + +header h1 ~ p { + color: var(--muted-color) +} + +header a:not(:last-of-type) { + margin-right: calc(var(--spacing) * .5) +} + +header p:last-of-type { + margin-bottom: 0 +} + +article { + margin: var(--block-spacing-vertical) 0; + padding: var(--block-spacing-vertical) var(--block-spacing-horizontal); + overflow: hidden; + border-radius: var(--border-radius); + background: var(--card-background-color); + box-shadow: var(--card-box-shadow) +} + +article > footer, article > header, article > pre { + margin-right: calc(var(--block-spacing-horizontal) * -1); + margin-left: calc(var(--block-spacing-horizontal) * -1); + padding: calc(var(--block-spacing-vertical) * .66) var(--block-spacing-horizontal); + background-color: var(--card-sectionning-background-color) +} + +article > header { + margin-top: calc(var(--block-spacing-vertical) * -1); + margin-bottom: var(--block-spacing-vertical); + border-bottom: var(--border-width) solid var(--card-border-color) +} + +article > footer, article > pre { + margin-top: var(--block-spacing-vertical); + margin-bottom: calc(var(--block-spacing-vertical) * -1); + border-top: var(--border-width) solid var(--card-border-color) +} + +#demo { + height: var(--demo-height); + background: var(--demo-background) +} + +#demo article { + --block-spacing-vertical: 2rem; + max-width: 510px; + height: auto; + min-height: calc(var(--block-spacing-vertical) * 2); + max-height: calc(var(--block-spacing-vertical) * 2); + margin: 0; + margin-right: auto; + margin-left: auto; + pointer-events: none; + transition: min-height var(--transition), max-height var(--transition); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +@media (min-width: 576px) { + #demo article { + --block-spacing-vertical: 2.5rem + } +} + +@media (min-width: 768px) { + #demo article { + --block-spacing-vertical: 3rem + } +} + +@media (min-width: 992px) { + #demo article { + --block-spacing-vertical: 3.5rem + } +} + +@media (min-width: 1200px) { + #demo article { + --block-spacing-vertical: 4rem + } +} + +#demo article pre > code { + padding: 0 +} + +#demo article label { + color: var(--color) +} + +#demo article .demo-last-child, #demo article form { + margin-bottom: 0 !important +} + +#demo article input[type=text] { + height: inherit +} + +#demo article .ti-cursor { + margin: 0 -.5ch !important +} + +#demo article .fadeIn, #demo article .fadeOut { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; + -webkit-animation-duration: .4s; + animation-duration: .4s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both +} + +#demo article .fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut +} + +@-webkit-keyframes fadeIn { + from { + opacity: 0 + } + to { + opacity: 1 + } +} + +@keyframes fadeIn { + from { + opacity: 0 + } + to { + opacity: 1 + } +} + +@-webkit-keyframes fadeOut { + from { + opacity: 1 + } + to { + opacity: 0 + } +} + +@keyframes fadeOut { + from { + opacity: 1 + } + to { + opacity: 0 + } +} + +a[role=button].active, button.active, input[type=button].active, input[type=reset].active, input[type=submit].active { + --background-color: var(--primary-hover); + --border-color: var(--primary-hover); + --box-shadow: 0 0 0 rgba(0, 0, 0, 0), 0 0 0 var(--outline-width) var(--primary-focus) +} + +input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]).active, select.active, textarea.active { + --background-color: var(--form-element-active-background-color) +} + +input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]).active, select.active, textarea.active { + --border-color: var(--form-element-active-border-color) +} + +input:not([type=submit]):not([type=button]):not([type=reset]):not([type=range]):not([type=file]):not([readonly]).active, select.active, textarea.active { + --box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color) +} + +[type=checkbox]:checked, [type=checkbox]:checked.active, [type=radio]:checked, [type=radio]:checked.active { + --background-color: var(--primary); + --border-color: var(--primary) +} + +[type=checkbox][role=switch].active { + --background-color: var(--switch-background-color); + --border-color: var(--switch-background-color) +} + +[type=checkbox][role=switch]:checked { + --background-color: var(--switch-checked-background-color); + --border-color: var(--switch-checked-background-color) +} + +[type=range].active { + --range-thumb-color: var(--range-thumb-active-color); + --range-border-color: var(--range-active-border-color) +} + +[type=range].active::-webkit-slider-thumb { + transform: scale(1.25) +} + +[type=range].active::-moz-range-thumb { + transform: scale(1.25) +} + +[type=range].active::-ms-thumb { + transform: scale(1.25) +} + +#principles .grid { + grid-gap: 2rem; + display: grid; + grid-template-columns:1fr; + margin: 0 +} + +@media (min-width: 768px) { + #principles .grid { + grid-template-columns:1fr 1fr + } +} + +@media (min-width: 1200px) { + #principles .grid { + grid-template-columns:1fr 1fr 1fr 1fr + } +} + +#principles hgroup { + text-align: center +} + +#principles hgroup h2 { + margin-bottom: var(--spacing) +} + +#principles hgroup:after { + display: none +} + +#principles h3 { + --font-weight: 400 +} + +#principles svg { + color: var(--primary); + width: auto; + height: 1.25rem +} + +#principles h4 { + --font-size: 1rem; + --font-weight: 400; + margin-bottom: .5rem +} + +#principles p { + --color: var(--muted-color) +} + +#examples .grid { + grid-gap: 2rem; + display: grid; + grid-template-columns:1fr; + margin: 0 +} + +@media (min-width: 576px) { + #examples .grid { + grid-template-columns:1fr 1fr + } +} + +@media (min-width: 992px) { + #examples .grid { + grid-template-columns:1fr 1fr 1fr + } +} + +#examples .grid > div > a { + text-transform: uppercase; + font-weight: 500 +} + +.example { + position: relative; + width: 100%; + margin-top: calc(var(--spacing) * .5); + margin-bottom: var(--spacing); + padding-top: 56.25% +} + +.example .desktop, .example .mobile { + position: absolute; + transform: scale(1.001); + background-color: var(--card-background-color); + background-repeat: no-repeat; + background-size: 200% auto; + box-shadow: var(--card-box-shadow); + transition: background-position .15s ease-in-out, transform .3s ease-in-out +} + +.example .desktop::before, .example .mobile::before { + position: absolute; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; + border: 1px solid rgba(138, 153, 163, .25); + content: ""; + transition: box-shadow .3s ease-in-out +} + +.example .desktop { + top: 0; + left: 0; + width: calc(100% - var(--spacing)); + padding-top: calc(56.25% - var(--spacing)) +} + +.example .mobile { + right: 0; + bottom: 0; + width: 19.53125%; + padding-top: calc(42.2916666667% - var(--spacing)); + border-radius: var(--border-radius); + transition-delay: 75ms +} + +.example .mobile::before { + border-radius: var(--border-radius); + transition-delay: 75ms +} + +a:active .desktop, a:focus .desktop, a:hover .desktop { + transform: scale(1.03125) +} + +a:active .mobile, a:focus .mobile, a:hover .mobile { + transform: scale(1.0625) +} + +a:active .desktop::before, a:active .mobile::before, a:focus .desktop::before, a:focus .mobile::before, a:hover .desktop::before, a:hover .mobile::before { + box-shadow: 0 0 1rem .1rem +} + +:root:not([data-theme=dark]) .example .desktop, :root:not([data-theme=dark]) .example .mobile, [data-theme=light] .example .desktop, [data-theme=light] .example .mobile { + background-position: 100% 0; + background-position: calc(100% - 1px) 0 +} + +:root:not([data-theme=dark]) .example:hover .desktop, :root:not([data-theme=dark]) .example:hover .mobile, [data-theme=light] .example:hover .desktop, [data-theme=light] .example:hover .mobile { + background-position: 0 0 +} + +@media only screen and (prefers-color-scheme: dark) { + :root:not([data-theme=light]) .example .desktop, :root:not([data-theme=light]) .example .mobile { + background-position: 0 0 + } + + :root:not([data-theme=light]) .example:hover .desktop, :root:not([data-theme=light]) .example:hover .mobile { + background-position: 100% 0; + background-position: calc(100% - 1px) 0 + } +} + +[data-theme=dark] .example .desktop, [data-theme=dark] .example .mobile { + background-position: 0 0 +} + +[data-theme=dark] .example:hover .desktop, [data-theme=dark] .example:hover .mobile { + background-position: 100% 0; + background-position: calc(100% - 1px) 0 +} + +#why [data-theme]:first-of-type pre, #why ul { + margin-bottom: var(--block-spacing-vertical) +} + +[data-theme=invalid], [data-theme=valid] { + position: relative; + margin-bottom: 0 !important +} + +[data-theme=invalid]:before, [data-theme=valid]:before { + display: block; + position: absolute; + top: 0; + right: 0; + padding: .375rem .75rem; + border-radius: 0; + color: var(--primary-inverse); + font-size: 14px; + line-height: 1 +} + +@media (min-width: 992px) { + [data-theme=invalid]:before, [data-theme=valid]:before { + top: var(--spacing); + right: var(--spacing) + } +} + +[data-theme=invalid] pre, [data-theme=valid] pre { + padding: var(--spacing) +} + +[data-theme=invalid] pre code, [data-theme=valid] pre code { + padding: calc(var(--spacing) * 1.625) 0 +} + +[data-theme=invalid]:before { + background: var(--invalid-color); + content: "Bulky" +} + +[data-theme=valid] pre { + margin-bottom: 0 +} + +[data-theme=valid]:before { + background: var(--valid-color); + content: "Great" +} + +#star p { + margin-bottom: 0; + line-height: 1 +} + +#star iframe { + display: block; + margin-top: calc(var(--spacing) * .5); + margin-right: auto; + margin-left: auto +} + +@media (min-width: 576px) { + #star iframe { + display: inline-block; + margin-top: 0; + margin-right: 0; + margin-bottom: .125rem; + margin-left: calc(var(--spacing) * .25); + vertical-align: middle + } +} + +body > footer ul, body > footer ul li { + margin-bottom: 0; + padding: 0; + color: var(--muted-color); + list-style: none +} + +body > footer li { + display: inline-block +} + +body > footer li:not(:first-child)::before { + margin: 0 .25rem; + content: "·" +} + +body > footer ul:first-of-type { + margin-bottom: calc(var(--spacing) * .5) +} + +body > footer ul:first-of-type a { + text-decoration: none +} + +@media (max-width: 767px) { + body > footer ul:last-of-type li { + display: list-item + } + + body > footer ul:last-of-type li::before { + display: none + } +} + +header { + padding-bottom: var(--block-spacing-vertical) +} + +section#demo { + display: none +} + +[data-typeit-id]:before { + content: '.'; + display: inline-block; + width: 0; + visibility: hidden; +} + +@keyframes blink-9870177 { + 0% { + opacity: 0 + } + 49% { + opacity: 0 + } + 50% { + opacity: 1 + } +} + +[data-typeit-id='9870177'] .ti-cursor { + animation: blink-9870177 1s infinite; +} + +[data-typeit-id='9870177'] .ti-cursor.with-delay { + animation-delay: 500ms; +} + +[data-typeit-id='9870177'] .ti-cursor.disabled { + animation: none; +} + +.panel-container { + display: flex; + justify-content: space-between; +} + +.snippet-panel { + flex: 1; + margin-right: 10px; /* adjust as needed */ +} + +.documentation-panel { + background-color: #213544; + border-radius: 20px; + flex: 1; + padding: 30px; +} + +.snippet-documentation-panel { + margin-top: 20px; + margin-bottom: 20px; +} + +.snippet-documentation-panel h2 { + font-size: 2.0rem; +} + +.halign-left { + text-align: left; +} + +.grid-all th, .grid-all td { + border: 1px solid #dfe2e5; + border-collapse: collapse; +} + +.hljs-string { + color: green; +} + +.hljs-meta .hljs-string { + color: green; +}