diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..d60c832 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +docs.panda-network.de diff --git a/docs/assets/css/custom.css b/docs/assets/css/custom.css new file mode 100644 index 0000000..85d21cb --- /dev/null +++ b/docs/assets/css/custom.css @@ -0,0 +1,2344 @@ +.github-corner { + position: absolute; + z-index: 40; + top: 0; + right: 0; + border-bottom: 0; + text-decoration: none +} + +.github-corner svg { + height: 70px; + width: 70px; + fill: var(--theme-color); + color: var(--base-background-color) +} + +.github-corner:hover .octo-arm { + -webkit-animation: octocat-wave 560ms ease-in-out; + animation: octocat-wave 560ms ease-in-out +} + +@-webkit-keyframes octocat-wave { + + 0%, + 100% { + transform: rotate(0) + } + + 20%, + 60% { + transform: rotate(-25deg) + } + + 40%, + 80% { + transform: rotate(10deg) + } +} + +@keyframes octocat-wave { + + 0%, + 100% { + transform: rotate(0) + } + + 20%, + 60% { + transform: rotate(-25deg) + } + + 40%, + 80% { + transform: rotate(10deg) + } +} + +.progress { + position: fixed; + z-index: 2147483647; + top: 0; + left: 0; + right: 0; + height: 3px; + width: 0; + background-color: var(--theme-color); + transition: width var(--duration-fast), opacity calc(var(--duration-fast)*2) +} + +body.ready-transition:after, +body.ready-transition>*:not(.progress) { + opacity: 0; + transition: opacity var(--spinner-transition-duration) +} + +body.ready-transition:after { + content: ""; + position: absolute; + z-index: 1000; + top: calc(50% - var(--spinner-size)/2); + left: calc(50% - var(--spinner-size)/2); + height: var(--spinner-size); + width: var(--spinner-size); + border: var(--spinner-track-width, 0) solid var(--spinner-track-color); + border-left-color: var(--theme-color); + border-left-color: var(--theme-color); + border-radius: 50%; + -webkit-animation: spinner var(--duration-slow) infinite linear; + animation: spinner var(--duration-slow) infinite linear +} + +body.ready-transition.ready-spinner:after { + opacity: 1 +} + +body.ready-transition.ready-fix:after { + opacity: 0 +} + +body.ready-transition.ready-fix>*:not(.progress) { + opacity: 1; + transition-delay: var(--spinner-transition-duration) +} + +@-webkit-keyframes spinner { + 0% { + transform: rotate(0deg) + } + + 100% { + transform: rotate(360deg) + } +} + +@keyframes spinner { + 0% { + transform: rotate(0deg) + } + + 100% { + transform: rotate(360deg) + } +} + +*, +*:before, +*:after { + box-sizing: inherit; + font-size: inherit; + -webkit-overflow-scrolling: touch; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-text-size-adjust: none; + -webkit-touch-callout: none +} + +:root { + box-sizing: border-box; + background-color: var(--base-background-color); + font-size: var(--base-font-size); + font-weight: var(--base-font-weight); + line-height: var(--base-line-height); + letter-spacing: var(--base-letter-spacing); + color: var(--base-color); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +html, +button, +input, +optgroup, +select, +textarea { + font-family: var(--base-font-family) +} + +button, +input, +optgroup, +select, +textarea { + font-size: 100%; + margin: 0 +} + +a { + text-decoration: none; + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto +} + +body { + margin: 0 +} + +hr { + height: 0; + margin: 2em 0; + border: none; + border-bottom: var(--hr-border, 0) +} + +img { + max-width: 100%; + border: 0 +} + +main { + display: block +} + +main.hidden { + display: none +} + +mark { + background: var(--mark-background); + color: var(--mark-color) +} + +pre { + font-family: var(--pre-font-family); + font-size: var(--pre-font-size); + font-weight: var(--pre-font-weight); + line-height: var(--pre-line-height) +} + +small { + display: inline-block; + font-size: var(--small-font-size) +} + +strong { + font-weight: var(--strong-font-weight); + color: var(--strong-color, currentColor) +} + +sub, +sup { + font-size: var(--subsup-font-size); + line-height: 0; + position: relative; + vertical-align: baseline +} + +sub { + bottom: -0.25em +} + +sup { + top: -0.5em +} + +body:not([data-platform^=Mac]) * { + scrollbar-color: hsla(var(--mono-hue), var(--mono-saturation), 50%, 0.3) hsla(var(--mono-hue), var(--mono-saturation), 50%, 0.1); + scrollbar-width: thin +} + +body:not([data-platform^=Mac]) * ::-webkit-scrollbar { + width: 5px; + height: 5px +} + +body:not([data-platform^=Mac]) * ::-webkit-scrollbar-thumb { + background: hsla(var(--mono-hue), var(--mono-saturation), 50%, 0.3) +} + +body:not([data-platform^=Mac]) * ::-webkit-scrollbar-track { + background: hsla(var(--mono-hue), var(--mono-saturation), 50%, 0.1) +} + +::-moz-selection { + background: var(--selection-color) +} + +::selection { + background: var(--selection-color) +} + +.emoji { + height: var(--emoji-size); + vertical-align: middle +} + +.task-list-item { + list-style: none +} + +.task-list-item input { + margin-right: .5em; + margin-left: 0; + vertical-align: .075em +} + +.markdown-section code[class*=lang-], +.markdown-section pre[data-lang] { + font-family: var(--code-font-family); + font-size: var(--code-font-size); + font-weight: var(--code-font-weight); + letter-spacing: normal; + line-height: var(--code-block-line-height); + -moz-tab-size: var(--code-tab-size); + -o-tab-size: var(--code-tab-size); + tab-size: var(--code-tab-size); + text-align: left; + white-space: pre; + word-spacing: normal; + word-wrap: normal; + word-break: normal; + -webkit-hyphens: none; + hyphens: none +} + +.markdown-section pre[data-lang] { + position: relative; + overflow: hidden; + margin: var(--code-block-margin); + padding: 0; + border-radius: var(--code-block-border-radius) +} + +.markdown-section pre[data-lang]::after { + content: attr(data-lang); + position: absolute; + top: .75em; + right: .75em; + opacity: .6; + color: inherit; + font-size: var(--font-size-s); + line-height: 1 +} + +.markdown-section pre[data-lang] code { + display: block; + overflow: auto; + padding: var(--code-block-padding) +} + +code[class*=lang-], +pre[data-lang] { + color: var(--code-theme-text) +} + +pre[data-lang]::-moz-selection, +pre[data-lang] ::-moz-selection, +code[class*=lang-]::-moz-selection, +code[class*=lang-] ::-moz-selection { + background: var(--code-theme-selection, var(--selection-color)) +} + +pre[data-lang]::-moz-selection, +pre[data-lang] ::-moz-selection, +code[class*=lang-]::-moz-selection, +code[class*=lang-] ::-moz-selection { + background: var(--code-theme-selection, var(--selection-color)) +} + +pre[data-lang]::selection, +pre[data-lang] ::selection, +code[class*=lang-]::selection, +code[class*=lang-] ::selection { + background: var(--code-theme-selection, var(--selection-color)) +} + +:not(pre)>code[class*=lang-], +pre[data-lang] { + background: var(--code-theme-background) +} + +.namespace { + opacity: .7 +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: var(--code-theme-comment) +} + +.token.punctuation { + color: var(--code-theme-punctuation) +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: var(--code-theme-tag) +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: var(--code-theme-selector) +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: var(--code-theme-operator) +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: var(--code-theme-keyword) +} + +.token.function { + color: var(--code-theme-function) +} + +.token.regex, +.token.important, +.token.variable { + color: var(--code-theme-variable) +} + +.token.important, +.token.bold { + font-weight: bold +} + +.token.italic { + font-style: italic +} + +.token.entity { + cursor: help +} + +.markdown-section { + position: relative; + max-width: var(--content-max-width); + margin: 0 auto; + padding: 2rem 45px +} + +.app-nav:not(:empty)~main .markdown-section { + padding-top: 3.5rem +} + +.markdown-section figure, +.markdown-section p, +.markdown-section ol, +.markdown-section ul { + margin: 1em 0 +} + +.markdown-section ol, +.markdown-section ul { + padding-left: 1.5rem +} + +.markdown-section ol ol, +.markdown-section ol ul, +.markdown-section ul ol, +.markdown-section ul ul { + margin-top: .15rem; + margin-bottom: .15rem +} + +.markdown-section a { + border-bottom: var(--link-border-bottom); + color: var(--link-color); + -webkit-text-decoration: var(--link-text-decoration); + text-decoration: var(--link-text-decoration); + -webkit-text-decoration-color: var(--link-text-decoration-color); + text-decoration-color: var(--link-text-decoration-color) +} + +.markdown-section a:hover { + border-bottom: var(--link-border-bottom--hover, var(--link-border-bottom, 0)); + color: var(--link-color--hover, var(--link-color)); + -webkit-text-decoration: var(--link-text-decoration--hover, var(--link-text-decoration)); + text-decoration: var(--link-text-decoration--hover, var(--link-text-decoration)); + -webkit-text-decoration-color: var(--link-text-decoration-color--hover, var(--link-text-decoration-color)); + text-decoration-color: var(--link-text-decoration-color--hover, var(--link-text-decoration-color)) +} + +.markdown-section a.anchor { + border-bottom: 0; + color: inherit; + text-decoration: none +} + +.markdown-section a.anchor:hover { + text-decoration: underline +} + +.markdown-section blockquote { + overflow: visible; + margin: 2em 0; + padding: var(--blockquote-padding); + border-width: var(--blockquote-border-width, 0); + border-style: var(--blockquote-border-style); + border-color: var(--blockquote-border-color); + border-radius: var(--blockquote-border-radius); + background: var(--blockquote-background); + color: var(--blockquote-color); + font-family: var(--blockquote-font-family); + font-size: var(--blockquote-font-size); + font-style: var(--blockquote-font-style); + font-weight: var(--blockquote-font-weight); + quotes: "“""”""‘""’" +} + +.markdown-section blockquote em { + font-family: var(--blockquote-em-font-family); + font-size: var(--blockquote-em-font-size); + font-style: var(--blockquote-em-font-style); + font-weight: var(--blockquote-em-font-weight) +} + +.markdown-section blockquote p:first-child { + margin-top: 0 +} + +.markdown-section blockquote p:first-child:before, +.markdown-section blockquote p:first-child:after { + color: var(--blockquote-quotes-color); + font-family: var(--blockquote-quotes-font-family); + font-size: var(--blockquote-quotes-font-size); + line-height: 0 +} + +.markdown-section blockquote p:first-child:before { + content: var(--blockquote-quotes-open); + margin-right: .15em; + vertical-align: -0.45em +} + +.markdown-section blockquote p:first-child:after { + content: var(--blockquote-quotes-close); + margin-left: .15em; + vertical-align: -0.55em +} + +.markdown-section blockquote p:last-child { + margin-bottom: 0 +} + +.markdown-section code { + font-family: var(--code-font-family); + font-size: var(--code-font-size); + font-weight: var(--code-font-weight); + line-height: inherit +} + +.markdown-section code:not([class*=lang-]):not([class*=language-]) { + margin: var(--code-inline-margin); + padding: var(--code-inline-padding); + border-radius: var(--code-inline-border-radius); + background: var(--code-inline-background); + color: var(--code-inline-color, currentColor); + white-space: nowrap +} + +.markdown-section h1:first-child, +.markdown-section h2:first-child, +.markdown-section h3:first-child, +.markdown-section h4:first-child, +.markdown-section h5:first-child, +.markdown-section h6:first-child { + margin-top: 0 +} + +.markdown-section h1 a[data-id], +.markdown-section h2 a[data-id], +.markdown-section h3 a[data-id], +.markdown-section h4 a[data-id], +.markdown-section h5 a[data-id], +.markdown-section h6 a[data-id] { + display: inline-block +} + +.markdown-section h1 code, +.markdown-section h2 code, +.markdown-section h3 code, +.markdown-section h4 code, +.markdown-section h5 code, +.markdown-section h6 code { + font-size: .875em +} + +.markdown-section h1+h2, +.markdown-section h1+h3, +.markdown-section h1+h4, +.markdown-section h1+h5, +.markdown-section h1+h6, +.markdown-section h2+h3, +.markdown-section h2+h4, +.markdown-section h2+h5, +.markdown-section h2+h6, +.markdown-section h3+h4, +.markdown-section h3+h5, +.markdown-section h3+h6, +.markdown-section h4+h5, +.markdown-section h4+h6, +.markdown-section h5+h6 { + margin-top: 1rem +} + +.markdown-section h1 { + margin: var(--heading-h1-margin, var(--heading-margin)); + padding: var(--heading-h1-padding, var(--heading-padding)); + border-width: var(--heading-h1-border-width, 0); + border-style: var(--heading-h1-border-style); + border-color: var(--heading-h1-border-color); + font-family: var(--heading-h1-font-family, var(--heading-font-family)); + font-size: var(--heading-h1-font-size); + font-weight: var(--heading-h1-font-weight, var(--heading-font-weight)); + line-height: var(--base-line-height); + color: var(--heading-h1-color, var(--heading-color)) +} + +.markdown-section h2 { + margin: var(--heading-h2-margin, var(--heading-margin)); + padding: var(--heading-h2-padding, var(--heading-padding)); + border-width: var(--heading-h2-border-width, 0); + border-style: var(--heading-h2-border-style); + border-color: var(--heading-h2-border-color); + font-family: var(--heading-h2-font-family, var(--heading-font-family)); + font-size: var(--heading-h2-font-size); + font-weight: var(--heading-h2-font-weight, var(--heading-font-weight)); + line-height: var(--base-line-height); + color: var(--heading-h2-color, var(--heading-color)) +} + +.markdown-section h3 { + margin: var(--heading-h3-margin, var(--heading-margin)); + padding: var(--heading-h3-padding, var(--heading-padding)); + border-width: var(--heading-h3-border-width, 0); + border-style: var(--heading-h3-border-style); + border-color: var(--heading-h3-border-color); + font-family: var(--heading-h3-font-family, var(--heading-font-family)); + font-size: var(--heading-h3-font-size); + font-weight: var(--heading-h3-font-weight, var(--heading-font-weight)); + color: var(--heading-h3-color, var(--heading-color)) +} + +.markdown-section h4 { + margin: var(--heading-h4-margin, var(--heading-margin)); + padding: var(--heading-h4-padding, var(--heading-padding)); + border-width: var(--heading-h4-border-width, 0); + border-style: var(--heading-h4-border-style); + border-color: var(--heading-h4-border-color); + font-family: var(--heading-h4-font-family, var(--heading-font-family)); + font-size: var(--heading-h4-font-size); + font-weight: var(--heading-h4-font-weight, var(--heading-font-weight)); + color: var(--heading-h4-color, var(--heading-color)) +} + +.markdown-section h5 { + margin: var(--heading-h5-margin, var(--heading-margin)); + padding: var(--heading-h5-padding, var(--heading-padding)); + border-width: var(--heading-h5-border-width, 0); + border-style: var(--heading-h5-border-style); + border-color: var(--heading-h5-border-color); + font-family: var(--heading-h5-font-family, var(--heading-font-family)); + font-size: var(--heading-h5-font-size); + font-weight: var(--heading-h5-font-weight, var(--heading-font-weight)); + color: var(--heading-h5-color, var(--heading-color)) +} + +.markdown-section h6 { + margin: var(--heading-h6-margin, var(--heading-margin)); + padding: var(--heading-h6-padding, var(--heading-padding)); + border-width: var(--heading-h6-border-width, 0); + border-style: var(--heading-h6-border-style); + border-color: var(--heading-h6-border-color); + font-family: var(--heading-h6-font-family, var(--heading-font-family)); + font-size: var(--heading-h6-font-size); + font-weight: var(--heading-h6-font-weight, var(--heading-font-weight)); + color: var(--heading-h6-color, var(--heading-color)) +} + +.markdown-section iframe { + margin: 1em 0 +} + +.markdown-section img { + max-width: 100% +} + +.markdown-section kbd { + display: inline-block; + min-width: var(--kbd-min-width); + margin: var(--kbd-margin); + padding: var(--kbd-padding); + border: var(--kbd-border); + border-radius: var(--kbd-border-radius); + background: var(--kbd-background); + font-family: inherit; + font-size: var(--kbd-font-size); + text-align: center; + letter-spacing: 0; + line-height: 1; + color: var(--kbd-color) +} + +.markdown-section kbd+kbd { + margin-left: -0.15em +} + +.markdown-section table { + display: block; + overflow: auto; + margin: 1rem 0; + border-spacing: 0; + border-collapse: collapse +} + +.markdown-section th, +.markdown-section td { + padding: var(--table-cell-padding) +} + +.markdown-section th:not([align]) { + text-align: left +} + +.markdown-section thead { + border-color: var(--table-head-border-color); + border-style: solid; + border-width: var(--table-head-border-width, 0); + background: var(--table-head-background) +} + +.markdown-section th { + font-weight: var(--table-head-font-weight); + color: var(--strong-color) +} + +.markdown-section td { + border-color: var(--table-cell-border-color); + border-style: solid; + border-width: var(--table-cell-border-width, 0) +} + +.markdown-section tbody { + border-color: var(--table-body-border-color); + border-style: solid; + border-width: var(--table-body-border-width, 0) +} + +.markdown-section tbody tr:nth-child(odd) { + background: var(--table-row-odd-background) +} + +.markdown-section tbody tr:nth-child(even) { + background: var(--table-row-even-background) +} + +.markdown-section>ul .task-list-item { + margin-left: -1.25em +} + +.markdown-section>ul .task-list-item .task-list-item { + margin-left: 0 +} + +.markdown-section .table-wrapper { + overflow-x: auto +} + +.markdown-section .table-wrapper table { + display: table; + width: 100% +} + +.markdown-section .table-wrapper td::before { + display: none +} + +@media(max-width: 30em) { + + .markdown-section .table-wrapper tbody, + .markdown-section .table-wrapper tr, + .markdown-section .table-wrapper td { + display: block + } + + .markdown-section .table-wrapper th, + .markdown-section .table-wrapper td { + border: none + } + + .markdown-section .table-wrapper thead { + display: none + } + + .markdown-section .table-wrapper tr { + border-color: var(--table-cell-border-color); + border-style: solid; + border-width: var(--table-cell-border-width, 0); + padding: var(--table-cell-padding) + } + + .markdown-section .table-wrapper tr:not(:last-child) { + border-bottom: 0 + } + + .markdown-section .table-wrapper td { + padding: .15em 0 .15em 8em + } + + .markdown-section .table-wrapper td::before { + display: inline-block; + + width: 8em; + margin-left: -8em; + font-weight: bold; + text-align: left + } +} + +.markdown-section .tip, +.markdown-section .warn { + position: relative; + margin: 2em 0; + padding: var(--notice-padding); + border-width: var(--notice-border-width, 0); + border-style: var(--notice-border-style); + border-color: var(--notice-border-color); + border-radius: var(--notice-border-radius); + background: var(--notice-background); + font-family: var(--notice-font-family); + font-weight: var(--notice-font-weight); + color: var(--notice-color) +} + +.markdown-section .tip:before, +.markdown-section .warn:before { + display: inline-block; + position: var(--notice-before-position, relative); + top: var(--notice-before-top); + left: var(--notice-before-left); + height: var(--notice-before-height); + width: var(--notice-before-width); + margin: var(--notice-before-margin); + padding: var(--notice-before-padding); + border-radius: var(--notice-before-border-radius); + line-height: var(--notice-before-line-height); + font-family: var(--notice-before-font-family); + font-size: var(--notice-before-font-size); + font-weight: var(--notice-before-font-weight); + text-align: center +} + +.markdown-section .tip { + border-width: var(--notice-important-border-width, var(--notice-border-width, 0)); + border-style: var(--notice-important-border-style, var(--notice-border-style)); + border-color: var(--notice-important-border-color, var(--notice-border-color)); + background: var(--notice-important-background, var(--notice-background)); + color: var(--notice-important-color, var(--notice-color)) +} + +.markdown-section .tip:before { + content: var(--notice-important-before-content, var(--notice-before-content)); + background: var(--notice-important-before-background, var(--notice-before-background)); + color: var(--notice-important-before-color, var(--notice-before-color)) +} + +.markdown-section .warn { + border-width: var(--notice-tip-border-width, var(--notice-border-width, 0)); + border-style: var(--notice-tip-border-style, var(--notice-border-style)); + border-color: var(--notice-tip-border-color, var(--notice-border-color)); + background: var(--notice-tip-background, var(--notice-background)); + color: var(--notice-tip-color, var(--notice-color)) +} + +.markdown-section .warn:before { + content: var(--notice-tip-before-content, var(--notice-before-content)); + background: var(--notice-tip-before-background, var(--notice-before-background)); + color: var(--notice-tip-before-color, var(--notice-before-color)) +} + +.cover { + display: none; + position: relative; + z-index: 20; + min-height: 100vh; + flex-direction: column; + align-items: center; + justify-content: center; + padding: calc(var(--cover-border-inset, 0px) + var(--cover-border-width, 0px)); + color: var(--cover-color); + text-align: var(--cover-text-align) +} + +@media screen and (-ms-high-contrast: active), +screen and (-ms-high-contrast: none) { + .cover { + height: 100vh + } +} + +.cover:before, +.cover:after { + content: ""; + position: absolute +} + +.cover:before { + top: 0; + bottom: 0; + left: 0; + right: 0; + background-blend-mode: var(--cover-background-blend-mode); + background-color: var(--cover-background-color); + background-image: var(--cover-background-image); + background-position: var(--cover-background-position); + background-repeat: var(--cover-background-repeat); + background-size: var(--cover-background-size) +} + +.cover:after { + top: var(--cover-border-inset, 0); + bottom: var(--cover-border-inset, 0); + left: var(--cover-border-inset, 0); + right: var(--cover-border-inset, 0); + border-width: var(--cover-border-width, 0); + border-style: solid; + border-color: var(--cover-border-color) +} + +.cover a { + border-bottom: var(--cover-link-border-bottom); + color: var(--cover-link-color); + -webkit-text-decoration: var(--cover-link-text-decoration); + text-decoration: var(--cover-link-text-decoration); + -webkit-text-decoration-color: var(--cover-link-text-decoration-color); + text-decoration-color: var(--cover-link-text-decoration-color) +} + +.cover a:hover { + border-bottom: var(--cover-link-border-bottom--hover, var(--cover-link-border-bottom)); + color: var(--cover-link-color--hover, var(--cover-link-color)); + -webkit-text-decoration: var(--cover-link-text-decoration--hover, var(--cover-link-text-decoration)); + text-decoration: var(--cover-link-text-decoration--hover, var(--cover-link-text-decoration)); + -webkit-text-decoration-color: var(--cover-link-text-decoration-color--hover, var(--cover-link-text-decoration-color)); + text-decoration-color: var(--cover-link-text-decoration-color--hover, var(--cover-link-text-decoration-color)) +} + +.cover h1 { + color: var(--cover-heading-color); + position: relative; + margin: 0; + font-size: var(--cover-heading-font-size); + font-weight: var(--cover-heading-font-weight); + line-height: 1.2 +} + +.cover h1 a, +.cover h1 a:hover { + display: block; + border-bottom: none; + color: inherit; + text-decoration: none +} + +.cover h1 small { + position: absolute; + bottom: 0; + margin-left: .5em +} + +.cover h1 span { + font-size: calc(var(--cover-heading-font-size-min)*1px) +} + +@media(min-width: 26em) { + .cover h1 span { + font-size: calc(var(--cover-heading-font-size-min)*1px + (var(--cover-heading-font-size-max) - var(--cover-heading-font-size-min))*(100vw - 420px)/604) + } +} + +@media(min-width: 64em) { + .cover h1 span { + font-size: calc(var(--cover-heading-font-size-max)*1px) + } +} + +.cover blockquote { + margin: 0; + color: var(--cover-blockquote-color); + font-size: var(--cover-blockquote-font-size) +} + +.cover blockquote a { + color: inherit +} + +.cover ul { + padding: 0; + list-style-type: none +} + +.cover .cover-main { + position: relative; + z-index: 1; + max-width: var(--cover-max-width); + margin: var(--cover-margin); + padding: 0 45px +} + +.cover .cover-main>p:last-child { + margin: 1.25em -0.25em +} + +.cover .cover-main>p:last-child a { + display: block; + margin: .375em .25em; + padding: var(--cover-button-padding); + border: var(--cover-button-border); + border-radius: var(--cover-button-border-radius); + box-shadow: var(--cover-button-box-shadow); + background: var(--cover-button-background); + text-align: center; + -webkit-text-decoration: var(--cover-button-text-decoration); + text-decoration: var(--cover-button-text-decoration); + -webkit-text-decoration-color: var(--cover-button-text-decoration-color); + text-decoration-color: var(--cover-button-text-decoration-color); + color: var(--cover-button-color); + white-space: nowrap; + transition: var(--cover-button-transition) +} + +.cover .cover-main>p:last-child a:hover { + border: var(--cover-button-border--hover, var(--cover-button-border)); + box-shadow: var(--cover-button-box-shadow--hover, var(--cover-button-box-shadow)); + background: var(--cover-button-background--hover, var(--cover-button-background)); + -webkit-text-decoration: var(--cover-button-text-decoration--hover, var(--cover-button-text-decoration)); + text-decoration: var(--cover-button-text-decoration--hover, var(--cover-button-text-decoration)); + -webkit-text-decoration-color: var(--cover-button-text-decoration-color--hover, var(--cover-button-text-decoration-color)); + text-decoration-color: var(--cover-button-text-decoration-color--hover, var(--cover-button-text-decoration-color)); + color: var(--cover-button-color--hover, var(--cover-button-color)) +} + +.cover .cover-main>p:last-child a:first-child { + border: var(--cover-button-primary-border, var(--cover-button-border)); + box-shadow: var(--cover-button-primary-box-shadow, var(--cover-button-box-shadow)); + background: var(--cover-button-primary-background, var(--cover-button-background)); + -webkit-text-decoration: var(--cover-button-primary-text-decoration, var(--cover-button-text-decoration)); + text-decoration: var(--cover-button-primary-text-decoration, var(--cover-button-text-decoration)); + -webkit-text-decoration-color: var(--cover-button-primary-text-decoration-color, var(--cover-button-text-decoration-color)); + text-decoration-color: var(--cover-button-primary-text-decoration-color, var(--cover-button-text-decoration-color)); + color: var(--cover-button-primary-color, var(--cover-button-color)) +} + +.cover .cover-main>p:last-child a:first-child:hover { + border: var(--cover-button-primary-border--hover, var(--cover-button-border--hover, var(--cover-button-primary-border, var(--cover-button-border)))); + box-shadow: var(--cover-button-primary-box-shadow--hover, var(--cover-button-box-shadow--hover, var(--cover-button-primary-box-shadow, var(--cover-button-box-shadow)))); + background: var(--cover-button-primary-background--hover, var(--cover-button-background--hover, var(--cover-button-primary-background, var(--cover-button-background)))); + -webkit-text-decoration: var(--cover-button-primary-text-decoration--hover, var(--cover-button-text-decoration--hover, var(--cover-button-primary-text-decoration, var(--cover-button-text-decoration)))); + text-decoration: var(--cover-button-primary-text-decoration--hover, var(--cover-button-text-decoration--hover, var(--cover-button-primary-text-decoration, var(--cover-button-text-decoration)))); + -webkit-text-decoration-color: var(--cover-button-primary-text-decoration-color--hover, var(--cover-button-text-decoration-color--hover, var(--cover-button-primary-text-decoration-color, var(--cover-button-text-decoration-color)))); + text-decoration-color: var(--cover-button-primary-text-decoration-color--hover, var(--cover-button-text-decoration-color--hover, var(--cover-button-primary-text-decoration-color, var(--cover-button-text-decoration-color)))); + color: var(--cover-button-primary-color--hover, var(--cover-button-color--hover, var(--cover-button-primary-color, var(--cover-button-color)))) +} + +@media(min-width: 30.01em) { + .cover .cover-main>p:last-child a { + display: inline-block + } +} + +.cover .mask { + visibility: var(--cover-background-mask-visibility, hidden); + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: var(--cover-background-mask-color); + opacity: var(--cover-background-mask-opacity) +} + +.cover.has-mask .mask { + visibility: visible +} + +.cover.show { + display: flex +} + +.app-nav { + position: absolute; + z-index: 30; + top: calc(35px - .5em*var(--base-line-height)); + left: 45px; + right: 80px; + text-align: right +} + +.app-nav.no-badge { + right: 45px +} + +.app-nav li>img, +.app-nav li>a>img { + margin-top: -0.25em; + vertical-align: middle +} + +.app-nav li>img:first-child, +.app-nav li>a>img:first-child { + margin-right: .5em +} + +.app-nav ul, +.app-nav li { + margin: 0; + padding: 0; + list-style: none +} + +.app-nav li { + position: relative +} + +.app-nav li a { + display: block; + line-height: 1; + transition: var(--navbar-root-transition) +} + +.app-nav>ul>li { + display: inline-block; + margin: var(--navbar-root-margin) +} + +.app-nav>ul>li:first-child { + margin-left: 0 +} + +.app-nav>ul>li:last-child { + margin-right: 0 +} + +.app-nav>ul>li>a, +.app-nav>ul>li>span { + padding: var(--navbar-root-padding); + border-width: var(--navbar-root-border-width, 0); + border-style: var(--navbar-root-border-style); + border-color: var(--navbar-root-border-color); + border-radius: var(--navbar-root-border-radius); + background: var(--navbar-root-background); + color: var(--navbar-root-color); + -webkit-text-decoration: var(--navbar-root-text-decoration); + text-decoration: var(--navbar-root-text-decoration); + -webkit-text-decoration-color: var(--navbar-root-text-decoration-color); + text-decoration-color: var(--navbar-root-text-decoration-color) +} + +.app-nav>ul>li>a:hover, +.app-nav>ul>li>span:hover { + background: var(--navbar-root-background--hover, var(--navbar-root-background)); + border-style: var(--navbar-root-border-style--hover, var(--navbar-root-border-style)); + border-color: var(--navbar-root-border-color--hover, var(--navbar-root-border-color)); + color: var(--navbar-root-color--hover, var(--navbar-root-color)); + -webkit-text-decoration: var(--navbar-root-text-decoration--hover, var(--navbar-root-text-decoration)); + text-decoration: var(--navbar-root-text-decoration--hover, var(--navbar-root-text-decoration)); + -webkit-text-decoration-color: var(--navbar-root-text-decoration-color--hover, var(--navbar-root-text-decoration-color)); + text-decoration-color: var(--navbar-root-text-decoration-color--hover, var(--navbar-root-text-decoration-color)) +} + +.app-nav>ul>li>a:not(:last-child), +.app-nav>ul>li>span:not(:last-child) { + padding: var(--navbar-menu-root-padding, var(--navbar-root-padding)); + background: var(--navbar-menu-root-background, var(--navbar-root-background)) +} + +.app-nav>ul>li>a:not(:last-child):hover, +.app-nav>ul>li>span:not(:last-child):hover { + background: var(--navbar-menu-root-background--hover, var(--navbar-menu-root-background, var(--navbar-root-background--hover, var(--navbar-root-background)))) +} + +.app-nav>ul>li>a.active { + background: var(--navbar-root-background--active, var(--navbar-root-background)); + border-style: var(--navbar-root-border-style--active, var(--navbar-root-border-style)); + border-color: var(--navbar-root-border-color--active, var(--navbar-root-border-color)); + color: var(--navbar-root-color--active, var(--navbar-root-color)); + -webkit-text-decoration: var(--navbar-root-text-decoration--active, var(--navbar-root-text-decoration)); + text-decoration: var(--navbar-root-text-decoration--active, var(--navbar-root-text-decoration)); + -webkit-text-decoration-color: var(--navbar-root-text-decoration-color--active, var(--navbar-root-text-decoration-color)); + text-decoration-color: var(--navbar-root-text-decoration-color--active, var(--navbar-root-text-decoration-color)) +} + +.app-nav>ul>li>a.active:not(:last-child):hover { + background: var(--navbar-menu-root-background--active, var(--navbar-menu-root-background, var(--navbar-root-background--active, var(--navbar-root-background)))) +} + +.app-nav>ul>li ul { + visibility: hidden; + position: absolute; + top: 100%; + right: 50%; + overflow-y: auto; + box-sizing: border-box; + max-height: 50vh; + padding: var(--navbar-menu-padding); + border-width: var(--navbar-menu-border-width, 0); + border-style: solid; + border-color: var(--navbar-menu-border-color); + border-radius: var(--navbar-menu-border-radius); + background: var(--navbar-menu-background); + box-shadow: var(--navbar-menu-box-shadow); + text-align: left; + white-space: nowrap; + opacity: 0; + transform: translate(50%, -0.35em); + transition: var(--navbar-menu-transition) +} + +.app-nav>ul>li ul li { + white-space: nowrap +} + +.app-nav>ul>li ul a { + margin: var(--navbar-menu-link-margin); + padding: var(--navbar-menu-link-padding); + border-width: var(--navbar-menu-link-border-width, 0); + border-style: var(--navbar-menu-link-border-style); + border-color: var(--navbar-menu-link-border-color); + border-radius: var(--navbar-menu-link-border-radius); + background: var(--navbar-menu-link-background); + color: var(--navbar-menu-link-color); + -webkit-text-decoration: var(--navbar-menu-link-text-decoration); + text-decoration: var(--navbar-menu-link-text-decoration); + -webkit-text-decoration-color: var(--navbar-menu-link-text-decoration-color); + text-decoration-color: var(--navbar-menu-link-text-decoration-color) +} + +.app-nav>ul>li ul a:hover { + background: var(--navbar-menu-link-background--hover, var(--navbar-menu-link-background)); + border-style: var(--navbar-menu-link-border-style--hover, var(--navbar-menu-link-border-style)); + border-color: var(--navbar-menu-link-border-color--hover, var(--navbar-menu-link-border-color)); + color: var(--navbar-menu-link-color--hover, var(--navbar-menu-link-color)); + -webkit-text-decoration: var(--navbar-menu-link-text-decoration--hover, var(--navbar-menu-link-text-decoration)); + text-decoration: var(--navbar-menu-link-text-decoration--hover, var(--navbar-menu-link-text-decoration)); + -webkit-text-decoration-color: var(--navbar-menu-link-text-decoration-color--hover, var(--navbar-menu-link-text-decoration-color)); + text-decoration-color: var(--navbar-menu-link-text-decoration-color--hover, var(--navbar-menu-link-text-decoration-color)) +} + +.app-nav>ul>li ul a.active { + background: var(--navbar-menu-link-background--active, var(--navbar-menu-link-background)); + border-style: var(--navbar-menu-link-border-style--active, var(--navbar-menu-link-border-style)); + border-color: var(--navbar-menu-link-border-color--active, var(--navbar-menu-link-border-color)); + color: var(--navbar-menu-link-color--active, var(--navbar-menu-link-color)); + -webkit-text-decoration: var(--navbar-menu-link-text-decoration--active, var(--navbar-menu-link-text-decoration)); + text-decoration: var(--navbar-menu-link-text-decoration--active, var(--navbar-menu-link-text-decoration)); + -webkit-text-decoration-color: var(--navbar-menu-link-text-decoration-color--active, var(--navbar-menu-link-text-decoration-color)); + text-decoration-color: var(--navbar-menu-link-text-decoration-color--active, var(--navbar-menu-link-text-decoration-color)) +} + +.app-nav>ul>li:hover ul, +.app-nav>ul>li:focus ul, +.app-nav>ul>li.focus-within ul { + visibility: visible; + opacity: 1; + transform: translate(50%, 0) +} + +@media(min-width: 48em) { + nav.app-nav { + margin-left: var(--sidebar-width) + } +} + +main { + position: relative; + overflow-x: hidden; + min-height: 100vh +} + +.sidebar, +.sidebar-toggle, +.sidebar+.content { + transition: all var(--sidebar-transition-duration) ease-out +} + +@media(min-width: 48em) { + .sidebar+.content { + margin-left: var(--sidebar-width) + } +} + +.sidebar { + display: flex; + flex-direction: column; + position: fixed; + z-index: 10; + top: 0; + right: 100%; + overflow-x: hidden; + overflow-y: auto; + height: 100vh; + width: var(--sidebar-width); + padding: var(--sidebar-padding); + border-width: var(--sidebar-border-width); + border-style: solid; + border-color: var(--sidebar-border-color); + background: var(--sidebar-background) +} + +.sidebar>h1 { + margin: 0; + margin: var(--sidebar-name-margin); + padding: var(--sidebar-name-padding); + background: var(--sidebar-name-background); + color: var(--sidebar-name-color); + font-family: var(--sidebar-name-font-family); + font-size: var(--sidebar-name-font-size); + font-weight: var(--sidebar-name-font-weight); + text-align: var(--sidebar-name-text-align) +} + +.sidebar>h1 img { + max-width: 100% +} + +.sidebar>h1 .app-name-link { + color: var(--sidebar-name-color) +} + +body:not([data-platform^=Mac]) .sidebar::-webkit-scrollbar { + width: 5px +} + +body:not([data-platform^=Mac]) .sidebar::-webkit-scrollbar-thumb { + border-radius: 50vw +} + +@media(min-width: 48em) { + .sidebar { + position: absolute; + transform: translateX(var(--sidebar-width)) + } +} + +@media print { + .sidebar { + display: none + } +} + +.sidebar-nav, +.sidebar nav { + order: 1; + margin: var(--sidebar-nav-margin); + padding: var(--sidebar-nav-padding); + background: var(--sidebar-nav-background) +} + +.sidebar-nav ul, +.sidebar nav ul { + margin: 0; + padding: 0; + list-style: none +} + +.sidebar-nav ul ul, +.sidebar nav ul ul { + margin-left: var(--sidebar-nav-indent) +} + +.sidebar-nav a, +.sidebar nav a { + display: block; + overflow: hidden; + margin: var(--sidebar-nav-link-margin); + padding: var(--sidebar-nav-link-padding); + border-width: var(--sidebar-nav-link-border-width, 0); + border-style: var(--sidebar-nav-link-border-style); + border-color: var(--sidebar-nav-link-border-color); + border-radius: var(--sidebar-nav-link-border-radius); + background: var(--sidebar-nav-link-background); + color: var(--sidebar-nav-link-color); + font-weight: var(--sidebar-nav-link-font-weight); + white-space: nowrap; + -webkit-text-decoration: var(--sidebar-nav-link-text-decoration); + text-decoration: var(--sidebar-nav-link-text-decoration); + -webkit-text-decoration-color: var(--sidebar-nav-link-text-decoration-color); + text-decoration-color: var(--sidebar-nav-link-text-decoration-color); + text-overflow: ellipsis; + transition: var(--sidebar-nav-link-transition) +} + +.sidebar-nav a img, +.sidebar nav a img { + margin-top: -0.25em; + vertical-align: middle +} + +.sidebar-nav a img:first-child, +.sidebar nav a img:first-child { + margin-right: .5em +} + +.sidebar-nav a:hover, +.sidebar nav a:hover { + border-width: var(--sidebar-nav-link-border-width--hover, var(--sidebar-nav-link-border-width, 0)); + border-style: var(--sidebar-nav-link-border-style--hover, var(--sidebar-nav-link-border-style)); + border-color: var(--sidebar-nav-link-border-color--hover, var(--sidebar-nav-link-border-color)); + background: var(--sidebar-nav-link-background--hover, var(--sidebar-nav-link-background)); + color: var(--sidebar-nav-link-color--hover, var(--sidebar-nav-link-color)); + font-weight: var(--sidebar-nav-link-font-weight--hover, var(--sidebar-nav-link-font-weight)); + -webkit-text-decoration: var(--sidebar-nav-link-text-decoration--hover, var(--sidebar-nav-link-text-decoration)); + text-decoration: var(--sidebar-nav-link-text-decoration--hover, var(--sidebar-nav-link-text-decoration)); + -webkit-text-decoration-color: var(--sidebar-nav-link-text-decoration-color); + text-decoration-color: var(--sidebar-nav-link-text-decoration-color) +} + +.sidebar-nav ul>li>span, +.sidebar-nav ul>li>strong, +.sidebar nav ul>li>span, +.sidebar nav ul>li>strong { + display: block; + margin: var(--sidebar-nav-strong-margin); + padding: var(--sidebar-nav-strong-padding); + border-width: var(--sidebar-nav-strong-border-width, 0); + border-style: solid; + border-color: var(--sidebar-nav-strong-border-color); + color: var(--sidebar-nav-strong-color); + font-size: var(--sidebar-nav-strong-font-size); + font-weight: var(--sidebar-nav-strong-font-weight); + text-transform: var(--sidebar-nav-strong-text-transform) +} + +.sidebar-nav ul>li>span+ul, +.sidebar-nav ul>li>strong+ul, +.sidebar nav ul>li>span+ul, +.sidebar nav ul>li>strong+ul { + margin-left: 0 +} + +.sidebar-nav ul>li:first-child>span, +.sidebar-nav ul>li:first-child>strong, +.sidebar nav ul>li:first-child>span, +.sidebar nav ul>li:first-child>strong { + margin-top: 0 +} + +.sidebar-nav::-webkit-scrollbar, +.sidebar nav::-webkit-scrollbar { + width: 0 +} + +@supports(width: env(safe-area-inset)) { + @media only screen and (orientation: landscape) { + + .sidebar-nav, + .sidebar nav { + margin-left: calc(env(safe-area-inset-left)/2) + } + } +} + +.sidebar-nav li>a:before, +.sidebar-nav li>strong:before { + display: inline-block +} + +.sidebar-nav li>a { + background-repeat: var(--sidebar-nav-pagelink-background-repeat); + background-size: var(--sidebar-nav-pagelink-background-size) +} + +.sidebar-nav li>a[href^="/"]:not([href*="?id="]), +.sidebar-nav li>a[href^="#/"]:not([href*="?id="]) { + transition: var(--sidebar-nav-pagelink-transition) +} + +.sidebar-nav li>a[href^="/"]:not([href*="?id="]), +.sidebar-nav li>a[href^="/"]:not([href*="?id="])~ul a, +.sidebar-nav li>a[href^="#/"]:not([href*="?id="]), +.sidebar-nav li>a[href^="#/"]:not([href*="?id="])~ul a { + padding: var(--sidebar-nav-pagelink-padding, var(--sidebar-nav-link-padding)) +} + +.sidebar-nav li>a[href^="/"]:not([href*="?id="]):only-child, +.sidebar-nav li>a[href^="#/"]:not([href*="?id="]):only-child { + background: var(--sidebar-nav-pagelink-background) +} + +.sidebar-nav li>a[href^="/"]:not([href*="?id="]):not(:only-child), +.sidebar-nav li>a[href^="#/"]:not([href*="?id="]):not(:only-child) { + background: var(--sidebar-nav-pagelink-background--loaded, var(--sidebar-nav-pagelink-background)) +} + +.sidebar-nav li.active>a, +.sidebar-nav li.collapse>a { + border-width: var(--sidebar-nav-link-border-width--active, var(--sidebar-nav-link-border-width)); + border-style: var(--sidebar-nav-link-border-style--active, var(--sidebar-nav-link-border-style)); + border-color: var(--sidebar-nav-link-border-color--active, var(--sidebar-nav-link-border-color)); + background: var(--sidebar-nav-link-background--active, var(--sidebar-nav-link-background)); + color: var(--sidebar-nav-link-color--active, var(--sidebar-nav-link-color)); + font-weight: var(--sidebar-nav-link-font-weight--active, var(--sidebar-nav-link-font-weight)); + -webkit-text-decoration: var(--sidebar-nav-link-text-decoration--active, var(--sidebar-nav-link-text-decoration)); + text-decoration: var(--sidebar-nav-link-text-decoration--active, var(--sidebar-nav-link-text-decoration)); + -webkit-text-decoration-color: var(--sidebar-nav-link-text-decoration-color); + text-decoration-color: var(--sidebar-nav-link-text-decoration-color) +} + +.sidebar-nav li.active>a[href^="/"]:not([href*="?id="]):not(:only-child), +.sidebar-nav li.active>a[href^="#/"]:not([href*="?id="]):not(:only-child) { + background: var(--sidebar-nav-pagelink-background--active, var(--sidebar-nav-pagelink-background--loaded, var(--sidebar-nav-pagelink-background))) +} + +.sidebar-nav li.collapse>a[href^="/"]:not([href*="?id="]):not(:only-child), +.sidebar-nav li.collapse>a[href^="#/"]:not([href*="?id="]):not(:only-child) { + background: var(--sidebar-nav-pagelink-background--collapse, var(--sidebar-nav-pagelink-background--loaded, var(--sidebar-nav-pagelink-background))) +} + +.sidebar-nav li.collapse .app-sub-sidebar { + display: none +} + +.sidebar-nav>ul>li>a:before { + content: var(--sidebar-nav-link-before-content-l1, var(--sidebar-nav-link-before-content)); + margin: var(--sidebar-nav-link-before-margin-l1, var(--sidebar-nav-link-before-margin)); + color: var(--sidebar-nav-link-before-color-l1, var(--sidebar-nav-link-before-color)) +} + +.sidebar-nav>ul>li.active>a:before { + content: var(--sidebar-nav-link-before-content-l1--active, var(--sidebar-nav-link-before-content--active, var(--sidebar-nav-link-before-content-l1, var(--sidebar-nav-link-before-content)))); + color: var(--sidebar-nav-link-before-color-l1--active, var(--sidebar-nav-link-before-color--active, var(--sidebar-nav-link-before-color-l1, var(--sidebar-nav-link-before-color)))) +} + +.sidebar-nav>ul>li>ul>li>a:before { + content: var(--sidebar-nav-link-before-content-l2, var(--sidebar-nav-link-before-content)); + margin: var(--sidebar-nav-link-before-margin-l2, var(--sidebar-nav-link-before-margin)); + color: var(--sidebar-nav-link-before-color-l2, var(--sidebar-nav-link-before-color)) +} + +.sidebar-nav>ul>li>ul>li.active>a:before { + content: var(--sidebar-nav-link-before-content-l2--active, var(--sidebar-nav-link-before-content--active, var(--sidebar-nav-link-before-content-l2, var(--sidebar-nav-link-before-content)))); + color: var(--sidebar-nav-link-before-color-l2--active, var(--sidebar-nav-link-before-color--active, var(--sidebar-nav-link-before-color-l2, var(--sidebar-nav-link-before-color)))) +} + +.sidebar-nav>ul>li>ul>li>ul>li>a:before { + content: var(--sidebar-nav-link-before-content-l3, var(--sidebar-nav-link-before-content)); + margin: var(--sidebar-nav-link-before-margin-l3, var(--sidebar-nav-link-before-margin)); + color: var(--sidebar-nav-link-before-color-l3, var(--sidebar-nav-link-before-color)) +} + +.sidebar-nav>ul>li>ul>li>ul>li.active>a:before { + content: var(--sidebar-nav-link-before-content-l3--active, var(--sidebar-nav-link-before-content--active, var(--sidebar-nav-link-before-content-l3, var(--sidebar-nav-link-before-content)))); + color: var(--sidebar-nav-link-before-color-l3--active, var(--sidebar-nav-link-before-color--active, var(--sidebar-nav-link-before-color-l3, var(--sidebar-nav-link-before-color)))) +} + +.sidebar-nav>ul>li>ul>li>ul>li>ul>li>a:before { + content: var(--sidebar-nav-link-before-content-l4, var(--sidebar-nav-link-before-content)); + margin: var(--sidebar-nav-link-before-margin-l4, var(--sidebar-nav-link-before-margin)); + color: var(--sidebar-nav-link-before-color-l4, var(--sidebar-nav-link-before-color)) +} + +.sidebar-nav>ul>li>ul>li>ul>li>ul>li.active>a:before { + content: var(--sidebar-nav-link-before-content-l4--active, var(--sidebar-nav-link-before-content--active, var(--sidebar-nav-link-before-content-l4, var(--sidebar-nav-link-before-content)))); + color: var(--sidebar-nav-link-before-color-l4--active, var(--sidebar-nav-link-before-color--active, var(--sidebar-nav-link-before-color-l4, var(--sidebar-nav-link-before-color)))) +} + +.sidebar-nav>:last-child { + margin-bottom: 2rem +} + +.sidebar-toggle, +.sidebar-toggle-button { + width: var(--sidebar-toggle-width); + outline: none +} + +.sidebar-toggle { + position: fixed; + z-index: 11; + top: 0; + bottom: 0; + left: 0; + max-width: 40px; + margin: 0; + padding: 0; + border: 0; + background: rgba(0, 0, 0, 0); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + cursor: pointer +} + +.sidebar-toggle .sidebar-toggle-button { + position: absolute; + top: var(--sidebar-toggle-offset-top); + left: var(--sidebar-toggle-offset-left); + height: var(--sidebar-toggle-height); + border-radius: var(--sidebar-toggle-border-radius); + border-width: var(--sidebar-toggle-border-width); + border-style: var(--sidebar-toggle-border-style); + border-color: var(--sidebar-toggle-border-color); + background: var(--sidebar-toggle-background, transparent); + color: var(--sidebar-toggle-icon-color) +} + +.sidebar-toggle span { + position: absolute; + top: calc(50% - var(--sidebar-toggle-icon-stroke-width)/2); + left: calc(50% - var(--sidebar-toggle-icon-width)/2); + height: var(--sidebar-toggle-icon-stroke-width); + width: var(--sidebar-toggle-icon-width); + background-color: currentColor +} + +.sidebar-toggle span:nth-child(1) { + margin-top: calc(0px - var(--sidebar-toggle-icon-height)/2) +} + +.sidebar-toggle span:nth-child(3) { + margin-top: calc(var(--sidebar-toggle-icon-height)/2) +} + +@media(min-width: 48em) { + .sidebar-toggle { + position: absolute; + overflow: visible; + top: var(--sidebar-toggle-offset-top); + bottom: auto; + left: 0; + height: var(--sidebar-toggle-height); + transform: translateX(var(--sidebar-width)) + } + + .sidebar-toggle .sidebar-toggle-button { + top: 0 + } +} + +@media print { + .sidebar-toggle { + display: none + } +} + +@media(max-width: 47.99em) { + + body.close .sidebar, + body.close .sidebar-toggle, + body.close .sidebar+.content { + transform: translateX(var(--sidebar-width)) + } +} + +@media(min-width: 48em) { + body.close .sidebar+.content { + transform: translateX(0) + } +} + +@media(max-width: 47.99em) { + + body.close nav.app-nav, + body.close .github-corner { + display: none + } +} + +@media(min-width: 48em) { + + body.close .sidebar, + body.close .sidebar-toggle { + transform: translateX(0) + } +} + +@media(min-width: 48em) { + body.close nav.app-nav { + margin-left: 0 + } +} + +@media(max-width: 47.99em) { + body.close .sidebar-toggle { + width: 100%; + max-width: none + } + + body.close .sidebar-toggle span { + margin-top: 0 + } + + body.close .sidebar-toggle span:nth-child(1) { + transform: rotate(45deg) + } + + body.close .sidebar-toggle span:nth-child(2) { + display: none + } + + body.close .sidebar-toggle span:nth-child(3) { + transform: rotate(-45deg) + } +} + +@media(min-width: 48em) { + body.close .sidebar+.content { + margin-left: 0 + } +} + +@media(min-width: 48em) { + + body.sticky .sidebar, + body.sticky .sidebar-toggle { + position: fixed + } +} + +body .docsify-copy-code-button, +body .docsify-copy-code-button:after { + border-radius: var(--border-radius-m, 0); + border-top-left-radius: 0; + border-bottom-right-radius: 0; + background: var(--copycode-background); + color: var(--copycode-color) +} + +body .docsify-copy-code-button span { + border-radius: var(--border-radius-s, 0) +} + +body .docsify-pagination-container { + border-top: var(--pagination-border-top); + color: var(--pagination-color) +} + +body .pagination-item-label { + font-size: var(--pagination-label-font-size) +} + +body .pagination-item-label svg { + color: var(--pagination-label-color); + height: var(--pagination-chevron-height); + stroke: var(--pagination-chevron-stroke); + stroke-linecap: var(--pagination-chevron-stroke-linecap); + stroke-linejoin: var(--pagination-chevron-stroke-linecap); + stroke-width: var(--pagination-chevron-stroke-width) +} + +body .pagination-item-title { + color: var(--pagination-title-color); + font-size: var(--pagination-title-font-size) +} + +body .app-name.hide { + display: block +} + +body .sidebar { + padding: var(--sidebar-padding) +} + +.sidebar .search { + margin: 0; + padding: 0; + border: 0 +} + +.sidebar .search input { + padding: 0; + line-height: 1; + font-size: inherit +} + +.sidebar .search .clear-button { + width: auto +} + +.sidebar .search .clear-button svg { + transform: scale(1) +} + +.sidebar .search .matching-post { + border: none +} + +.sidebar .search p { + font-size: inherit +} + +.sidebar .search { + order: var(--search-flex-order); + margin: var(--search-margin); + padding: var(--search-padding); + background: var(--search-background) +} + +.sidebar .search a { + color: inherit +} + +.sidebar .search h2 { + margin: var(--search-result-heading-margin); + font-size: var(--search-result-heading-font-size); + font-weight: var(--search-result-heading-font-weight); + color: var(--search-result-heading-color) +} + +.sidebar .search .input-wrap { + align-items: stretch; + margin: var(--search-input-margin); + background-color: var(--search-input-background-color); + border-width: var(--search-input-border-width, 0); + border-style: solid; + border-color: var(--search-input-border-color); + border-radius: var(--search-input-border-radius) +} + +.sidebar .search input[type=search] { + min-width: 0; + padding: var(--search-input-padding); + border: none; + background-color: rgba(0, 0, 0, 0); + background-image: var(--search-input-background-image); + background-position: var(--search-input-background-position); + background-repeat: var(--search-input-background-repeat); + background-size: var(--search-input-background-size); + font-size: var(--search-input-font-size); + color: var(--search-input-color); + transition: var(--search-input-transition) +} + +.sidebar .search input[type=search]::-ms-clear { + display: none +} + +.sidebar .search input[type=search]::-moz-placeholder { + color: var(--search-input-placeholder-color, #808080) +} + +.sidebar .search input[type=search]::placeholder { + color: var(--search-input-placeholder-color, #808080) +} + +.sidebar .search input[type=search]::-webkit-input-placeholder { + line-height: normal +} + +.sidebar .search input[type=search]:focus { + background-color: var(--search-input-background-color--focus, var(--search-input-background-color)); + background-image: var(--search-input-background-image--focus, var(--search-input-background-image)); + background-position: var(--search-input-background-position--focus, var(--search-input-background-position)); + background-size: var(--search-input-background-size--focus, var(--search-input-background-size)) +} + +@supports(width: env(safe-area-inset)) { + @media only screen and (orientation: landscape) { + .sidebar .search input[type=search] { + margin-left: calc(env(safe-area-inset-left)/2) + } + } +} + +.sidebar .search p { + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2 +} + +.sidebar .search p:empty { + text-align: center +} + +.sidebar .search .clear-button { + margin: 0; + padding: 0 10px; + border: none; + line-height: 1; + background: rgba(0, 0, 0, 0); + cursor: pointer +} + +.sidebar .search .clear-button svg circle { + fill: var(--search-clear-icon-color1, #808080) +} + +.sidebar .search .clear-button svg path { + stroke: var(--search-clear-icon-color2, #fff) +} + +.sidebar .search.show~*:not(h1) { + display: none +} + +.sidebar .search .results-panel { + display: none; + color: var(--search-result-item-color); + font-size: var(--search-result-item-font-size); + font-weight: var(--search-result-item-font-weight) +} + +.sidebar .search .results-panel.show { + display: block +} + +.sidebar .search .matching-post { + margin: var(--search-result-item-margin); + padding: var(--search-result-item-padding) +} + +.sidebar .search .matching-post, +.sidebar .search .matching-post:last-child { + border-width: var(--search-result-item-border-width, 0) !important; + border-style: var(--search-result-item-border-style); + border-color: var(--search-result-item-border-color) +} + +.sidebar .search .matching-post p { + margin: 0 +} + +.sidebar .search .search-keyword { + margin: var(--search-result-keyword-margin); + padding: var(--search-result-keyword-padding); + border-radius: var(--search-result-keyword-border-radius); + background-color: var(--search-result-keyword-background); + color: var(--search-result-keyword-color, currentColor); + font-style: normal; + font-weight: var(--search-result-keyword-font-weight) +} + +.medium-zoom-overlay, +.medium-zoom-image--open, +.medium-zoom-image--opened { + z-index: 2147483646 !important +} + +.medium-zoom-overlay { + background: var(--zoomimage-overlay-background) !important +} + +:root { + --mono-hue: 113; + --mono-saturation: 0%; + --mono-shade3: hsl(var(--mono-hue), var(--mono-saturation), 20%); + --mono-shade2: hsl(var(--mono-hue), var(--mono-saturation), 30%); + --mono-shade1: hsl(var(--mono-hue), var(--mono-saturation), 40%); + --mono-base: hsl(var(--mono-hue), var(--mono-saturation), 50%); + --mono-tint1: hsl(var(--mono-hue), var(--mono-saturation), 70%); + --mono-tint2: hsl(var(--mono-hue), var(--mono-saturation), 89%); + --mono-tint3: hsl(var(--mono-hue), var(--mono-saturation), 97%); + --theme-hue: 204; + --theme-saturation: 90%; + --theme-lightness: 45%; + --theme-color: hsl(var(--theme-hue), var(--theme-saturation), var(--theme-lightness)); + --modular-scale: 1.333; + --modular-scale--2: calc(var(--modular-scale--1) / var(--modular-scale)); + --modular-scale--1: calc(var(--modular-scale-1) / var(--modular-scale)); + --modular-scale-1: 1rem; + --modular-scale-2: calc(var(--modular-scale-1) * var(--modular-scale)); + --modular-scale-3: calc(var(--modular-scale-2) * var(--modular-scale)); + --modular-scale-4: calc(var(--modular-scale-3) * var(--modular-scale)); + --modular-scale-5: calc(var(--modular-scale-4) * var(--modular-scale)); + --font-size-xxxl: var(--modular-scale-5); + --font-size-xxl: var(--modular-scale-4); + --font-size-xl: var(--modular-scale-3); + --font-size-l: var(--modular-scale-2); + --font-size-m: var(--modular-scale-1); + --font-size-s: var(--modular-scale--1); + --font-size-xs: var(--modular-scale--2); + --duration-slow: 1s; + --duration-medium: 0.5s; + --duration-fast: 0.25s; + --spinner-size: 60px; + --spinner-track-width: 4px; + --spinner-track-color: rgba(0, 0, 0, 0.15); + --spinner-transition-duration: var(--duration-medium) +} + +:root { + --base-background-color: #fff; + --base-color: var(--mono-shade2); + --base-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --base-font-size: 16px; + --base-font-weight: normal; + --base-line-height: 1.7; + --emoji-size: calc(var(--base-line-height) * 1em); + --hr-border: 1px solid var(--mono-tint2); + --mark-background: #ffecb3; + --pre-font-family: var(--code-font-family); + --pre-font-size: var(--code-font-size); + --pre-font-weight: normal; + --selection-color: #b4d5fe; + --small-font-size: var(--font-size-s); + --strong-color: #01afff; + --strong-font-weight: 600; + --subsup-font-size: var(--font-size-s) +} + +:root { + --content-max-width: 55em; + --blockquote-background: var(--mono-tint3); + --blockquote-border-style: solid; + --blockquote-border-radius: var(--border-radius-m); + --blockquote-em-font-weight: normal; + --blockquote-font-weight: normal; + --blockquote-padding: 1.5em; + --code-font-family: Inconsolata, Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + --code-font-size: calc(var(--font-size-m) * 0.95); + --code-font-weight: normal; + --code-tab-size: 4; + --code-block-border-radius: var(--border-radius-m); + --code-block-line-height: var(--base-line-height); + --code-block-margin: 1em 0; + --code-block-padding: 1.75em 1.5em 1.5em 1.5em; + --code-inline-background: var(--code-theme-background); + --code-inline-border-radius: var(--border-radius-s); + --code-inline-color: var(--code-theme-text); + --code-inline-margin: 0 0.15em; + --code-inline-padding: 0.125em 0.4em; + --code-theme-background: var(--mono-tint3); + --heading-color: var(--mono-shade3); + --heading-margin: 2.5rem 0 0; + --heading-h1-border-style: solid; + --heading-h1-font-size: var(--font-size-xxl); + --heading-h2-border-style: solid; + --heading-h2-font-size: var(--font-size-xl); + --heading-h3-border-style: solid; + --heading-h3-font-size: var(--font-size-l); + --heading-h4-border-style: solid; + --heading-h4-font-size: var(--font-size-m); + --heading-h5-border-style: solid; + --heading-h5-font-size: var(--font-size-s); + --heading-h6-border-style: solid; + --heading-h6-font-size: var(--font-size-xs); + --kbd-background: var(--mono-tint3); + --kbd-border-radius: var(--border-radius-m); + --kbd-margin: 0 0.3em; + --kbd-min-width: 2.5em; + --kbd-padding: 0.65em 0.5em; + --link-text-decoration: underline; + --notice-background: var(--mono-tint3); + --notice-border-radius: var(--border-radius-m); + --notice-border-style: solid; + --notice-font-weight: normal; + --notice-padding: 1em 1.5em; + --notice-before-font-weight: normal; + --table-cell-padding: 0.75em 0.5em; + --table-head-border-color: var(--table-cell-border-color); + --table-head-font-weight: var(--strong-font-weight); + --table-row-odd-background: var(--mono-tint3) +} + +:root { + --cover-margin: 0 auto; + --cover-max-width: 40em; + --cover-text-align: center; + --cover-background-color: var(--base-background-color); + --cover-background-mask-color: var(--base-background-color); + --cover-background-mask-opacity: 0.8; + --cover-background-position: center center; + --cover-background-repeat: no-repeat; + --cover-background-size: cover; + --cover-blockquote-font-size: var(--font-size-l); + --cover-border-color: var(--theme-color); + --cover-button-border: 1px solid var(--theme-color); + --cover-button-border-radius: var(--border-radius-m); + --cover-button-color: var(--theme-color); + --cover-button-padding: 0.5em 2rem; + --cover-button-text-decoration: none; + --cover-button-transition: all var(--duration-fast) ease-in-out; + --cover-button-primary-background: var(--theme-color); + --cover-button-primary-border: 1px solid var(--theme-color); + --cover-button-primary-color: #fff; + --cover-heading-color: var(--theme-color); + --cover-heading-font-size: var(--font-size-xxl); + --cover-heading-font-weight: normal; + --cover-link-text-decoration: underline +} + +:root { + --navbar-root-border-style: solid; + --navbar-root-margin: 0 0 0 1.5em; + --navbar-root-transition: all var(--duration-fast); + --navbar-menu-background: var(--base-background-color); + --navbar-menu-border-radius: var(--border-radius-m); + --navbar-menu-box-shadow: rgba(45, 45, 45, 0.05) 0px 0px 1px, rgba(49, 49, 49, 0.05) 0px 1px 2px, rgba(42, 42, 42, 0.05) 0px 2px 4px, rgba(32, 32, 32, 0.05) 0px 4px 8px, rgba(49, 49, 49, 0.05) 0px 8px 16px, rgba(35, 35, 35, 0.05) 0px 16px 32px; + --navbar-menu-padding: 0.5em; + --navbar-menu-transition: all var(--duration-fast); + --navbar-menu-link-border-style: solid; + --navbar-menu-link-margin: 0.75em 0.5em; + --navbar-menu-link-padding: 0.2em 0 +} + +:root { + --copycode-background: #808080; + --copycode-color: #fff +} + +:root { + --docsifytabs-border-color: var(--mono-tint2); + --docsifytabs-border-radius-px: var(--border-radius-s); + --docsifytabs-tab-background: var(--mono-tint3); + --docsifytabs-tab-color: var(--mono-tint1) +} + +:root { + --pagination-border-top: 1px solid var(--mono-tint2); + --pagination-chevron-height: 0.8em; + --pagination-chevron-stroke: currentColor; + --pagination-chevron-stroke-linecap: round; + --pagination-chevron-stroke-width: 1px; + --pagination-label-font-size: var(--font-size-s); + --pagination-title-font-size: var(--font-size-l) +} + +:root { + --search-margin: 1.5rem 0 0; + --search-input-background-repeat: no-repeat; + --search-input-border-color: var(--mono-tint1); + --search-input-border-width: 1px; + --search-input-padding: 0.5em; + --search-flex-order: 1; + --search-result-heading-color: var(--heading-color); + --search-result-heading-font-size: var(--base-font-size); + --search-result-heading-font-weight: normal; + --search-result-heading-margin: 0 0 0.25em; + --search-result-item-border-color: var(--mono-tint2); + --search-result-item-border-style: solid; + --search-result-item-border-width: 0 0 1px 0; + --search-result-item-font-weight: normal; + --search-result-item-padding: 1em 0; + --search-result-keyword-background: var(--mark-background); + --search-result-keyword-border-radius: var(--border-radius-s); + --search-result-keyword-color: var(--mark-color); + --search-result-keyword-font-weight: normal; + --search-result-keyword-margin: 0 0.1em; + --search-result-keyword-padding: 0.2em 0 +} + +:root { + --zoomimage-overlay-background: rgba(0, 0, 0, 0.875) +} + +:root { + --sidebar-background: var(--base-background-color); + --sidebar-border-width: 0; + --sidebar-padding: 0 25px; + --sidebar-transition-duration: var(--duration-fast); + --sidebar-width: 17rem; + --sidebar-name-font-size: var(--font-size-l); + --sidebar-name-font-weight: normal; + --sidebar-name-margin: 1.5rem 0 0; + --sidebar-name-text-align: center; + --sidebar-nav-strong-border-color: var(--sidebar-border-color); + --sidebar-nav-strong-color: var(--heading-color); + --sidebar-nav-strong-font-weight: var(--strong-font-weight); + --sidebar-nav-strong-margin: 1.5em 0 0.5em; + --sidebar-nav-strong-padding: 0.25em 0; + --sidebar-nav-indent: 1em; + --sidebar-nav-margin: 1.5rem 0 0; + --sidebar-nav-link-border-style: solid; + --sidebar-nav-link-border-width: 0; + --sidebar-nav-link-color: var(--base-color); + --sidebar-nav-link-font-weight: normal; + --sidebar-nav-link-padding: 0.25em 0; + --sidebar-nav-link-text-decoration--active: underline; + --sidebar-nav-link-text-decoration--hover: underline; + --sidebar-nav-link-before-margin: 0 0.35em 0 0; + --sidebar-nav-pagelink-transition: var(--sidebar-nav-link-transition); + --sidebar-toggle-border-radius: var(--border-radius-s); + --sidebar-toggle-border-style: solid; + --sidebar-toggle-border-width: 0; + --sidebar-toggle-height: 36px; + --sidebar-toggle-icon-color: var(--base-color); + --sidebar-toggle-icon-height: 10px; + --sidebar-toggle-icon-stroke-width: 1px; + --sidebar-toggle-icon-width: 16px; + --sidebar-toggle-offset-left: 0; + --sidebar-toggle-offset-top: calc(35px - (var(--sidebar-toggle-height) / 2)); + --sidebar-toggle-width: 44px +} + +:root { + --code-theme-background: #f3f3f3; + --code-theme-comment: #6e8090; + --code-theme-function: #dd4a68; + --code-theme-keyword: #07a; + --code-theme-operator: #a67f59; + --code-theme-punctuation: #999; + --code-theme-selector: #690; + --code-theme-tag: #905; + --code-theme-text: #333; + --code-theme-variable: #e90 +} + +:root { + --border-radius-s: 2px; + --border-radius-m: 4px; + --border-radius-l: 8px; + --strong-font-weight: 600; + --blockquote-border-color: var(--theme-color); + --blockquote-border-radius: 0 var(--border-radius-m) var(--border-radius-m) 0; + --blockquote-border-width: 0 0 0 4px; + --code-inline-background: var(--mono-tint2); + --code-theme-background: var(--mono-tint3); + --heading-font-weight: var(--strong-font-weight); + --heading-h1-font-weight: 400; + --heading-h2-font-weight: 400; + --heading-h2-border-color: var(--mono-tint2); + --heading-h2-border-width: 0 0 1px 0; + --heading-h2-margin: 2.5rem 0 1.5rem; + --heading-h2-padding: 0 0 1rem 0; + --kbd-border: 1px solid var(--mono-tint2); + --notice-border-radius: 0 var(--border-radius-m) var(--border-radius-m) 0; + --notice-border-width: 0 0 0 4px; + --notice-padding: 1em 1.5em 1em 3em; + --notice-before-border-radius: 100%; + --notice-before-font-weight: bold; + --notice-before-height: 1.5em; + --notice-before-left: 0.75em; + --notice-before-line-height: 1.5; + --notice-before-margin: 0 0.25em 0 0; + --notice-before-position: absolute; + --notice-before-width: var(--notice-before-height); + --notice-important-background: hsl(340, 60%, 96%); + --notice-important-border-color: hsl(340, 90%, 45%); + --notice-important-before-background: var(--notice-important-border-color) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M10 14C10 15.1 9.1 16 8 16 6.9 16 6 15.1 6 14 6 12.9 6.9 12 8 12 9.1 12 10 12.9 10 14Z'/%3E%3Cpath d='M10 1.6C10 1.2 9.8 0.9 9.6 0.7 9.2 0.3 8.6 0 8 0 7.4 0 6.8 0.2 6.5 0.6 6.2 0.9 6 1.2 6 1.6 6 1.7 6 1.8 6 1.9L6.8 9.6C6.9 9.9 7 10.1 7.2 10.2 7.4 10.4 7.7 10.5 8 10.5 8.3 10.5 8.6 10.4 8.8 10.3 9 10.1 9.1 9.9 9.2 9.6L10 1.9C10 1.8 10 1.7 10 1.6Z'/%3E%3C/svg%3E") center / 0.875em no-repeat; + --notice-important-before-color: #fff; + --notice-important-before-content: ""; + --notice-tip-background: hsl(204, 60%, 96%); + --notice-tip-border-color: hsl(204, 90%, 45%); + --notice-tip-before-background: var(--notice-tip-border-color) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E") center / 0.875em no-repeat; + --notice-tip-before-color: #fff; + --notice-tip-before-content: ""; + --table-cell-border-color: var(--mono-tint2); + --table-cell-border-width: 1px 0; + --cover-background-color: hsl(var(--theme-hue), 25%, 60%); + --cover-background-image: radial-gradient(ellipse at center 115%, rgba(255, 255, 255, 0.9), transparent); + --cover-blockquote-color: var(--strong-color); + --cover-heading-color: #fff; + --cover-heading-font-size-max: 56; + --cover-heading-font-size-min: 34; + --cover-heading-font-weight: 200; + --navbar-root-color--active: var(--theme-color); + --navbar-menu-border-radius: var(--border-radius-m); + --navbar-menu-root-background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9.6' height='6' viewBox='0 0 9.6 6'%3E%3Cpath d='M1.5 1.5l3.3 3 3.3-3' stroke-width='1.5' stroke='rgb%28179, 179, 179%29' fill='none' stroke-linecap='square' stroke-linejoin='miter' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") right no-repeat; + --navbar-menu-root-padding: 0 18px 0 0; + --search-input-background-color: #fff; + --search-input-background-image: url("data:image/svg+xml,%3Csvg height='20px' width='20px' viewBox='0 0 24 24' fill='none' stroke='rgba(0, 0, 0, 0.3)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' preserveAspectRatio='xMidYMid meet' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10.5' cy='10.5' r='7.5' vector-effect='non-scaling-stroke'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='15.8' y2='15.8' vector-effect='non-scaling-stroke'%3E%3C/line%3E%3C/svg%3E"); + --search-input-background-position: 21px center; + --search-input-border-color: var(--sidebar-border-color); + --search-input-border-width: 1px 0; + --search-input-margin: 0 -25px; + --search-input-padding: 0.65em 1em 0.65em 50px; + --search-input-placeholder-color: rgba(0, 0, 0, 0.4); + --search-clear-icon-color1: rgba(0, 0, 0, 0.3); + --search-result-heading-font-weight: var(--strong-font-weight); + --search-result-item-border-color: var(--sidebar-border-color); + --search-result-keyword-border-radius: var(--border-radius-s); + --sidebar-background: var(--mono-tint3); + --sidebar-border-color: var(--mono-tint2); + --sidebar-border-width: 0 1px 0 0; + --sidebar-name-color: var(--theme-color); + --sidebar-name-font-weight: 300; + --sidebar-nav-strong-border-width: 0 0 1px 0; + --sidebar-nav-strong-font-size: smaller; + --sidebar-nav-strong-margin: 2em -25px 0.75em 0; + --sidebar-nav-strong-padding: 0.25em 0 0.75em 0; + --sidebar-nav-strong-text-transform: uppercase; + --sidebar-nav-link-border-color: transparent; + --sidebar-nav-link-border-color--active: var(--theme-color); + --sidebar-nav-link-border-width: 0 4px 0 0; + --sidebar-nav-link-color--active: var(--theme-color); + --sidebar-nav-link-margin: 0 -25px 0 0; + --sidebar-nav-link-text-decoration: none; + --sidebar-nav-link-text-decoration--active: none; + --sidebar-nav-link-text-decoration--hover: underline; + --sidebar-nav-pagelink-background: no-repeat 2px calc(50% - 2.5px) / 6px 5px linear-gradient(45deg, transparent 2.75px, var(--mono-tint1) 2.75px 4.25px, transparent 4px), no-repeat 2px calc(50% + 2.5px) / 6px 5px linear-gradient(135deg, transparent 2.75px, var(--mono-tint1) 2.75px 4.25px, transparent 4px); + --sidebar-nav-pagelink-background--active: no-repeat 0px center / 5px 6px linear-gradient(225deg, transparent 2.75px, var(--theme-color) 2.75px 4.25px, transparent 4.25px), no-repeat 5px center / 5px 6px linear-gradient(135deg, transparent 2.75px, var(--theme-color) 2.75px 4.25px, transparent 4.25px); + --sidebar-nav-pagelink-background--collapse: no-repeat 2px calc(50% - 2.5px) / 6px 5px linear-gradient(45deg, transparent 2.75px, var(--theme-color) 2.75px 4.25px, transparent 4px), no-repeat 2px calc(50% + 2.5px) / 6px 5px linear-gradient(135deg, transparent 2.75px, var(--theme-color) 2.75px 4.25px, transparent 4px); + --sidebar-nav-pagelink-background--loaded: no-repeat 0px center / 5px 6px linear-gradient(225deg, transparent 2.75px, var(--mono-tint1) 2.75px 4.25px, transparent 4.25px), no-repeat 5px center / 5px 6px linear-gradient(135deg, transparent 2.75px, var(--mono-tint1) 2.75px 4.25px, transparent 4.25px); + --sidebar-nav-pagelink-padding: 0.25em 0 0.25em 20px; + --sidebar-nav-pagelink-transition: none; + --sidebar-toggle-background: var(--sidebar-border-color); + --sidebar-toggle-border-radius: 0 var(--border-radius-s) var(--border-radius-s) 0; + --sidebar-toggle-width: 32px +} + +:root { + --code-theme-background: #222; + --code-theme-comment: #516e7a; + --code-theme-function: #f07178; + --code-theme-keyword: #c2e78c; + --code-theme-operator: #ffcb6b; + --code-theme-punctuation: #89ddff; + --code-theme-selector: #ffcb6b; + --code-theme-tag: #f07178; + --code-theme-text: #f3f3f3; + --code-theme-variable: #ffcb6b +} + +:root { + --mono-hue: 201; + --mono-saturation: 18%; + --mono-shade3: hsl(var(--mono-hue), var(--mono-saturation), 13%); + --mono-shade2: hsl(var(--mono-hue), var(--mono-saturation), 15%); + --mono-shade1: hsl(var(--mono-hue), var(--mono-saturation), 17%); + --mono-base: hsl(var(--mono-hue), var(--mono-saturation), 19%); + --mono-tint1: hsl(var(--mono-hue), var(--mono-saturation), 25%); + --mono-tint2: hsl(var(--mono-hue), var(--mono-saturation), 35%); + --mono-tint3: hsl(var(--mono-hue), var(--mono-saturation), 43%); + --spinner-track-color: rgba(255, 255, 255, 0.15); + --base-background-color: var(--mono-base); + --base-color: #d3d3d3; + --hr-border: 1px solid var(--mono-tint2); + --mark-background: #ffcb6b; + --mark-color: var(--base-background-color); + --selection-color: rgba(94, 131, 175, 0.75); + --blockquote-background: var(--mono-shade2); + --code-inline-background: var(--mono-tint1); + --code-theme-background: var(--mono-shade2); + --heading-color: #fff; + --heading-h2-border-color: var(--mono-tint2); + --kbd-background: var(--mono-shade2); + --kbd-border: none; + --kbd-color: var(--strong-color); + --notice-important-background: var(--mono-shade2); + --notice-tip-background: var(--mono-shade2); + --table-cell-border-color: var(--mono-tint1); + --table-row-odd-background: var(--mono-shade2); + --cover-background-color: var(--base-background-color); + --cover-background-image: radial-gradient(ellipse at center bottom, var(--mono-tint3), transparent); + --cover-blockquote-color: var(--mark-background); + --cover-button-border: 1px solid var(--mono-tint3); + --cover-button-color: #fff; + --navbar-menu-background: var(--mono-tint1); + --navbar-menu-box-shadow: rgba(0, 0, 0, 0.05) 0px 0px 1px, rgba(0, 0, 0, 0.05) 0px 1px 2px, rgba(0, 0, 0, 0.05) 0px 2px 4px, rgba(0, 0, 0, 0.05) 0px 4px 8px, rgba(0, 0, 0, 0.05) 0px 8px 16px, rgba(0, 0, 0, 0.05) 0px 16px 32px; + --copycode-background: var(--mono-tint1); + --copycode-color: #fff; + --docsifytabs-border-color: var(--mono-tint2); + --docsifytabs-tab-background: var(--mono-shade1); + --docsifytabs-tab-color: var(--mono-tint2); + --pagination-border-top: 1px solid var(--mono-tint2); + --pagination-title-color: #fff; + --search-input-background-color: var(--mono-shade2); + --search-input-background-image: url("data:image/svg+xml,%3Csvg height='20px' width='20px' viewBox='0 0 24 24' fill='none' stroke='rgba(255, 255, 255, 0.3)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' preserveAspectRatio='xMidYMid meet' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10.5' cy='10.5' r='7.5' vector-effect='non-scaling-stroke'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='15.8' y2='15.8' vector-effect='non-scaling-stroke'%3E%3C/line%3E%3C/svg%3E"); + --search-input-border-color: var(--mono-tint1); + --search-input-placeholder-color: rgba(255, 255, 255, 0.4); + --search-clear-icon-color1: rgba(255, 255, 255, 0.3); + --sidebar-background: var(--mono-shade1); + --sidebar-border-color: var(--mono-tint1); + --sidebar-nav-pagelink-background: no-repeat 2px calc(50% - 2.5px) / 6px 5px linear-gradient(45deg, transparent 2.75px, var(--mono-tint2) 2.75px 4.25px, transparent 4px), no-repeat 2px calc(50% + 2.5px) / 6px 5px linear-gradient(135deg, transparent 2.75px, var(--mono-tint2) 2.75px 4.25px, transparent 4px); + --sidebar-nav-pagelink-background--loaded: no-repeat 0px center / 5px 6px linear-gradient(225deg, transparent 2.75px, var(--mono-tint2) 2.75px 4.25px, transparent 4.25px), no-repeat 5px center / 5px 6px linear-gradient(135deg, transparent 2.75px, var(--mono-tint2) 2.75px 4.25px, transparent 4.25px) +} \ No newline at end of file diff --git a/docs/assets/css/main.css b/docs/assets/css/main.css new file mode 100644 index 0000000..0264740 --- /dev/null +++ b/docs/assets/css/main.css @@ -0,0 +1,44 @@ +.markdown-section iframe[src*='buttons.github.io'] { + margin: 0; +} + +figure.thumbnails img { + margin: 0.75em 0; + border-radius: 3px; + box-shadow: + 0 2px 6px rgba(0, 0, 0, 0.1), + 0 4px 12px rgba(0, 0, 0, 0.15); +} + +@media (min-width: 30em) { + figure.thumbnails:after { + content: ''; + display: table; + clear: both; + } + + figure.thumbnails img { + float: left; + width: calc(50% - 0.75em); + } + + figure.thumbnails img:nth-child(even) { + margin-left: 1.5em; + } + + @supports (display: flex) { + figure.thumbnails { + display: flex; + align-items: center; + } + + figure.thumbnails img { + flex-grow: 1; + width: 0; + } + + figure.thumbnails img + img { + margin: 0 0 0 1.5em; + } + } +} diff --git a/docs/assets/css/theme.css b/docs/assets/css/theme.css new file mode 100644 index 0000000..a9e0107 --- /dev/null +++ b/docs/assets/css/theme.css @@ -0,0 +1,579 @@ +.app-nav:not(:empty)~main .markdown-section { + padding-top: 5.0rem; +} + +.pagination-item, .pagination-item-title { + opacity: .9 !important; +} + +.pagination-item:not(:last-child) a .pagination-item-label, .pagination-item:not(:last-child) a .pagination-item-subtitle, .pagination-item:not(:last-child) a .pagination-item-title { + opacity: .9 !important; + transition: all .2s; +} + +.markdown-section { + padding: 1rem 40px; +} + +.markdown-section .alert, .markdown-section blockquote { + overflow: visible; + margin: 1em 0; + padding: 1em; + border-width: var(--blockquote-border-width, 0); + border-style: var(--blockquote-border-style); + border-color: #81f100; + border-radius: var(--blockquote-border-radius); + background: var(--blockquote-background); + color: var(--blockquote-color); + font-family: var(--blockquote-font-family); + font-size: var(--blockquote-font-size); + font-style: var(--blockquote-font-style); + font-weight: var(--blockquote-font-weight); + quotes: "“""”""‘""’"; +} + +.markdown-section ul { + list-style: square outside none; +} + +.markdown-section .alert ul, .markdown-section blockquote ul { + list-style: none; + margin-top: .8em; +} + +.markdown-section .alert ul li, .markdown-section blockquote ul li { + margin: 2px 0; +} + +.markdown-section .alert ul li:before, .markdown-section blockquote ul li:before { + position: absolute; + content: '\2B29'; + margin-left: -18px; +} + +.markdown-section .button { + cursor: pointer; + color: var(--base-background-color); + height: auto; + display: inline-block; + padding: 10px; + font-family: -apple-system, "Segoe UI", "Helvetica Neue", sans-serif; + line-height: 1.2rem; + background-color: var(--link-color); + text-decoration: none; + border-radius: .25rem; +} + +.markdown-section a.button { + cursor: pointer; + color: var(--base-background-color); + text-decoration: none !important; +} + +.markdown-section .button-secondary { + cursor: pointer; + color: var(--link-color); + height: auto; + display: inline-block; + padding: 10px; + font-family: -apple-system, "Segoe UI", "Helvetica Neue", sans-serif; + line-height: 1.2rem; + background-color: transparent; + text-decoration: none; + border: 1px solid var(--link-color)!important; + border-radius: .25rem; +} + +.markdown-section a.button-secondary { + cursor: pointer; + color: var(--link-color); + text-decoration: none !important; +} + +.markdown-section .button-rounded { + cursor: pointer; + color: var(--base-background-color); + height: auto; + display: inline-block; + padding: 10px min(20px, 5%) 10px min(20px, 5%); + font-family: -apple-system, "Segoe UI", "Helvetica Neue", sans-serif; + line-height: 1.2rem; + background-color: var(--link-color); + text-decoration: none; + border-radius: 1.2rem; +} + +.markdown-section a.button-rounded { + cursor: pointer; + color: var(--base-background-color); + text-decoration: none !important; +} + +.markdown-section .button-secondary-rounded { + cursor: pointer; + color: var(--link-color); + height: auto; + display: inline-block; + padding: 10px min(20px, 5%) 10px min(20px, 5%); + font-family: -apple-system, "Segoe UI", "Helvetica Neue", sans-serif; + line-height: 1.2rem; + background-color: transparent; + text-decoration: none; + border: 1px solid var(--link-color)!important; + border-radius: 1.4rem; +} + +.markdown-section a.button-secondary-rounded { + cursor: pointer; + color: var(--link-color); + text-decoration: none !important; +} + +.markdown-section .navpill { + cursor: pointer; + color: var(--base-color); + height: auto; + display: inline-block; + border: 1px solid var(--base-color); + border-radius: 4rem; + padding: 4px 14px 4px 14px; + margin-bottom: 4px; + margin-right: 6px; + font-size: .8rem; + line-height: .9rem; + background-color: --base-background-color; + font-family: -apple-system, "Segoe UI", "Helvetica Neue", sans-serif; + font-weight: bold; + text-decoration: none; +} + +.markdown-section a.navpill { + cursor: pointer; + color: var(--base-color)!important; + border: 1px solid var(--base-color); + text-decoration: none !important; +} + +.markdown-section .badge { + color: var(--badge-text-color, var(--base-background-color)); /* Default text color */ + background-color: var(--badge-bg-color, color-mix(in srgb, var(--base-color) 70%, transparent)); /* Default background */ + + display: inline-block; + padding: .25em .4em .25em .4em; + font-family: -apple-system, "Segoe UI", "Helvetica Neue", sans-serif; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: middle; + margin-top: -0.4em; + border-radius: .25rem; + transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + text-decoration: none; +} + +.markdown-section .badge a { + color: var(--badge-text-color, var(--base-background-color))!important; /* Default text color */ + text-decoration: none !important; +} + +.markdown-section a[href$="?id=a"], .markdown-section a[href$='?id=b'], .markdown-section a[href$="?id=c"], .markdown-section a[href$="?id=d"], .markdown-section a[href$="?id=e"], .markdown-section a[href$="?id=f"], .markdown-section a[href$="?id=g"], .markdown-section a[href$="?id=h"], .markdown-section a[href$="?id=i"], .markdown-section a[href$="?id=j"], .markdown-section a[href$="?id=k"], .markdown-section a[href$="?id=l"], .markdown-section a[href$="?id=m"], .markdown-section a[href$="?id=n"], .markdown-section a[href$="?id=o"], .markdown-section a[href$="?id=p"], .markdown-section a[href$="?id=q"], .markdown-section a[href$="?id=r"], .markdown-section a[href$="?id=s"], .markdown-section a[href$="?id=t"], .markdown-section a[href$="?id=u"], .markdown-section a[href$="?id=v"], .markdown-section a[href$="?id=w"], .markdown-section a[href$="?id=x"], .markdown-section a[href$="?id=y"], .markdown-section a[href$="?id=z"] { + display: inline-flex; + padding-top: 0px; + padding-right: 6px; + padding-bottom: 0px; + padding-left: 6px; + line-height: 1.2em; +} + +.markdown-section #a, .markdown-section #b, .markdown-section #c, .markdown-section #d, .markdown-section #e, .markdown-section #f, .markdown-section #g, .markdown-section #h, .markdown-section #i, .markdown-section #j, .markdown-section #k, .markdown-section #l, .markdown-section #m, .markdown-section #n, .markdown-section #o, .markdown-section #p, .markdown-section #q, .markdown-section #r, .markdown-section #s, .markdown-section #t, .markdown-section #u, .markdown-section #v, .markdown-section #w, .markdown-section #x, .markdown-section #y, .markdown-section #z { + width: 2em; + color: var(--base-background-color); + font-weight: 700; + margin-top: 1.00rem; + padding-left: 0.25rem; + background: color-mix(in srgb, var(--base-color) 70%, transparent); +} + +.markdown-section .accordion { + margin-top: 1.05rem; + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-clip: border-box; + border: 1px solid #CCCCCC; + border-radius: .15rem; +} + +.markdown-section details { + padding: .75rem 1.25rem; + margin-bottom: 0; + border-bottom: 1px solid #CCCCCC; +} + +.markdown-section summary { + cursor: pointer; + color: var(--link-color); + padding: 0; + + h1, h2, h3 { + margin: 0; + display: inline-block; + } +} + +.markdown-section code { + white-space: pre-wrap!important; +} + +.markdown-section pre code { + word-break: break-all!important; +} + +.markdown-section .fa-fw { + text-align: left; +} + +.markdown-section .video-container-4by3 { + position: relative; + padding-bottom: 75%; + height: 0; + overflow: hidden; + max-width: 100%; +} + +.markdown-section .video-container-16by9 { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + max-width: 100%; +} + +.video-container-16by9 iframe, .video-container-4by3 iframe, .embed-container object, .embed-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 93%; +} + +.markdown-section .responsive-container iframe { + max-width: 100%; +} + +.markdown-section .banner-image { + width: 100%; + height: 125px; + object-fit: cover; + object-position: 50% 50%; +} + +@media (min-width: 576px) { + .markdown-section .banner-image { + height: 250px; + } +} + +.markdown-section .banner-tall-image { + width: 100%; + height: 175px; + object-fit: cover; + object-position: 50% 50%; +} + +@media (min-width: 576px) { + .markdown-section .banner-tall-image { + height: 350px; + } +} + +.markdown-section .header-image-fade { + width: 100%; + margin: 0px auto; + position: absolute; + top: 0px; + left: 0; + -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0))); + mask-image: linear-gradient(to bottom, rgba(0,0,0,1), rgba(0,0,0,0)); + opacity: 0.4; + z-index: -1; +} + +/* CSS currently only works with sidebar and standalone pages */ +.markdown-section .header-image-fade-full-width { + margin-top: -2rem; + left: 50%; + right: 50%; + margin-left: -50vw; + margin-right: -50vw; + position: absolute; + width: 100vw; + max-width: 100vw; + -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0))); + mask-image: linear-gradient(to bottom, rgba(0,0,0,1), rgba(0,0,0,0)); + opacity: 0.4; + z-index: -1; +} + +/* CSS currently only works with sidebar and standalone pages */ +.markdown-section .header-image-full-width { + margin-top: -2rem; + left: 50%; + margin-left: -50vw; + margin-right: -50vw; + max-width: 100vw; + position: relative; + right: 50%; + width: 100vw; + height: 30dvh; + object-fit: cover; + object-position: center 50%; +} + +.markdown-section .header-tall-image-full-width { + margin-top: -2rem; + left: 50%; + margin-left: -50vw; + margin-right: -50vw; + max-width: 100vw; + position: relative; + right: 50%; + width: 100vw; + height: 40dvh; + object-fit: cover; + object-position: center 50%; +} + +.markdown-section .image-75 { + width: 75%; + height: auto; +} + +.markdown-section .image-50 { + width: 75%; + height: auto; +} + +.markdown-section .image-25 { + width: 75%; + height: auto; +} + +.markdown-section .image-75-border { + width: 75%; + height: auto; + border: 1px solid #dfdfdf; +} + +.markdown-section .image-50-border { + width: 75%; + height: auto; + border: 1px solid #dfdfdf; +} + +.markdown-section .image-25-border { + width: 75%; + height: auto; + border: 1px solid #dfdfdf; +} + +.markdown-section .image-border { + border: 1px solid #dfdfdf; +} + +.markdown-section .image-border-rounded { + border-radius: 0.35em; + border: 1px solid #dfdfdf; +} + +.markdown-section .column { + float: left; + padding-right: 1rem; + width: 50%; +} + +.markdown-section .column-right { + float: right; + padding-left: 1rem; + width: 50%; +} + +.markdown-section .column img { + padding-top: .35rem; +} + +.markdown-section .column-right img { + padding-top: .35rem; +} + +.markdown-section .reverse-columns .column { + float: right; +} + +.markdown-section .row:after { + content: ""; + display: table; + clear: both; +} + +@media screen and (max-width:800px) { + .markdown-section .column, .markdown-section .column-right { + width: 100%; + padding-right: 0rem; + padding-left: 0rem; + } + + .markdown-section .image-75, .markdown-section .image-50, .markdown-section .image-25, .markdown-section .image-75-border, .markdown-section .image-50-border, .markdown-section .image-25-border { + width: 100%; + height: auto; + } +} + +.markdown-section figure, .markdown-section p, .markdown-section ol, .markdown-section ul { + margin: 1em 0em .5em 0em; +} + +.markdown-section h1 { + line-height: 1.75rem; +} + +.markdown-section h2 { + line-height: 1.55rem; +} + +.markdown-section .h3 { + line-height: 1.35rem; +} + +.markdown-section h4 { + line-height: 1.3rem; +} + +.markdown-section h5 { + line-height: 1.25rem; +} + +.markdown-section h6 { + line-height: 1.2rem; +} + +.markdown-section .alert hr, .markdown-section blockquote hr { + margin: 1em 0; +} + +.markdown-section .alert h1, .markdown-section blockquote h1 { + font-size: 1.5rem; + line-height: 1.6rem; +} + +.markdown-section .alert h2, .markdown-section blockquote h2 { + font-size: 1.35rem; + line-height: 1.45rem; +} + +.markdown-section .alert h3, .markdown-section blockquote h3 { + font-size: 1.2rem; + line-height: 1.3rem; +} + +.markdown-section .alert h4, .markdown-section blockquote h4 { + font-size: 1.15rem; + line-height: 1.25rem; +} + +.markdown-section .alert h5, .markdown-section blockquote h5 { + font-size: 1.1rem; + line-height: 1.2rem; +} + +.markdown-section .alert h6, .markdown-section blockquote h6 { + font-size: 1rem; + line-height: 1.1rem; +} + +body .app-nav { + margin-right: -10px; +} + +body .docsify-pagination-container { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + overflow: hidden; + margin: 3em 0 1em; + border-top: 0px solid rgba(0, 0, 0, .07); +} + +.progress { + background-color: var(--blockquote-border-color); +} + +@media only screen and (max-width: 480px) { + + .markdown-section h1 { + font-size: 1.45rem; + line-height: 1.5rem; + } + + .markdown-section h2 { + font-size: 1.35rem; + line-height: 1.4rem; + } + + .markdown-section h3 { + font-size: 1.25rem; + line-height: 1.3rem; + } + + .markdown-section h4 { + font-size: 1.15rem; + line-height: 1.2rem; + } + + .markdown-section h5 { + font-size: 1.1rem; + line-height: 1.15rem; + } + + .markdown-section h6 { + font-size: 1rem; + line-height: 1.05rem; + } + + .markdown-section .alert h1, .markdown-section blockquote h1 { + font-size: 1.3rem; + line-height: 1.4rem; + } + + .markdown-section .alert h2, .markdown-section blockquote h2 { + font-size: 1.2rem; + line-height: 1.3rem; + } + + .markdown-section .alert h3, .markdown-section blockquote h3 { + font-size: 1.15rem; + line-height: 1.25rem; + } + + .markdown-section .alert h4, .markdown-section blockquote h4 { + font-size: 1.1rem; + line-height: 1.2rem; + } + + .markdown-section .alert h5, .markdown-section blockquote h5 { + font-size: 1.05rem; + line-height: 1.1rem; + } + + .markdown-section .alert h6, .markdown-section blockquote h6 { + font-size: 1rem; + line-height: 1.05rem; + } + +} \ No newline at end of file diff --git a/docs/assets/favicon/favicon.ico b/docs/assets/favicon/favicon.ico new file mode 100644 index 0000000..d0461d0 Binary files /dev/null and b/docs/assets/favicon/favicon.ico differ diff --git a/docs/assets/images/calc_raw_01.png b/docs/assets/images/calc_raw_01.png new file mode 100644 index 0000000..d9f9b80 Binary files /dev/null and b/docs/assets/images/calc_raw_01.png differ diff --git a/docs/assets/images/logo_512x512.png b/docs/assets/images/logo_512x512.png new file mode 100644 index 0000000..d0461d0 Binary files /dev/null and b/docs/assets/images/logo_512x512.png differ diff --git a/docs/assets/images/pola_settings.png b/docs/assets/images/pola_settings.png new file mode 100644 index 0000000..6383792 Binary files /dev/null and b/docs/assets/images/pola_settings.png differ diff --git a/docs/assets/images/webspace_files.png b/docs/assets/images/webspace_files.png new file mode 100644 index 0000000..52ccb9f Binary files /dev/null and b/docs/assets/images/webspace_files.png differ diff --git a/docs/assets/js/docsify-footer.js b/docs/assets/js/docsify-footer.js new file mode 100644 index 0000000..38b21ed --- /dev/null +++ b/docs/assets/js/docsify-footer.js @@ -0,0 +1,47 @@ +// Support for footer files ('_footer.md') in subfolders +// Original source plugin 'docsify-footer' by @alertbox +// This code was developed with the assistance of ChatGPT, an AI language model by OpenAI +(function (Docsify, $docsify, undefined) { + const DEFAULT_FOOTER = "_footer"; + + const install = function (hook, vm) { + const { loadFooter, ext, requestHeaders } = vm.config; + + // Fail fast if loadFooter is not defined + if (!loadFooter) { + return; + } + + hook.afterEach(function (html, next) { + try { + // Parse current URL to extract folder path + var urlFragment = window.location.hash.slice(1); // Remove '#' character + var pathSegments = urlFragment.split("/"); + var folderPath = pathSegments.slice(0, -1).join("/"); // Exclude the file part + folderPath = folderPath ? folderPath + "/" : ""; // Ensure folder path ends with '/' + + var footerAppended = false; // Flag to indicate footer append status + + var footerFile = + folderPath + + (loadFooter === true ? DEFAULT_FOOTER + ext : loadFooter); + + // Fetch and append the footer content + Docsify.get(vm.router.getFile(footerFile), false, requestHeaders) + .then((content) => { + const footerHtml = vm.compiler.compile(content); + footerAppended = true; // Set flag to true as footer is appended + next(html + footerHtml); // Append the footer to the current page content + }) + } finally { + // Check if footer was not appended, then pass html + if (!footerAppended) { + next(html); + } + } + }); + }; + + $docsify.plugins = [].concat(install, $docsify.plugins); + })(Docsify, $docsify); + \ No newline at end of file diff --git a/docs/assets/js/docsify-footer.min.js b/docs/assets/js/docsify-footer.min.js new file mode 100644 index 0000000..8a14d55 --- /dev/null +++ b/docs/assets/js/docsify-footer.min.js @@ -0,0 +1 @@ +!function(o,i,t){i.plugins=[].concat((function(i,t){const{loadFooter:e,ext:n,requestHeaders:c}=t.config;e&&i.afterEach((function(i,l){try{var s=window.location.hash.slice(1).split("/").slice(0,-1).join("/"),r=!1,a=(s=s?s+"/":"")+(!0===e?"_footer"+n:e);o.get(t.router.getFile(a),!1,c).then((o=>{const e=t.compiler.compile(o);r=!0,l(i+e)}))}finally{r||l(i)}}))}),i.plugins)}(Docsify,$docsify); \ No newline at end of file diff --git a/docs/assets/js/flexible-alerts.js b/docs/assets/js/flexible-alerts.js new file mode 100644 index 0000000..dc6eca8 --- /dev/null +++ b/docs/assets/js/flexible-alerts.js @@ -0,0 +1,99 @@ +/*! + * docsify-plugin-flexible-alerts + * v1.1.1 + * https://github.com/fzankl/docsify-plugin-flexible-alerts#readme + * (c) 2022 Fabian Zankl + * MIT license + */ +! function() { + "use strict"; + + function t(e) { + return t = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + return typeof t + } : function(t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t + }, t(e) + }! function(t, e) { + void 0 === e && (e = {}); + var a = e.insertAt; + if (t && "undefined" != typeof document) { + var o = document.head || document.getElementsByTagName("head")[0], + l = document.createElement("style"); + l.type = "text/css", "top" === a && o.firstChild ? o.insertBefore(l, o.firstChild) : o.appendChild(l), l.styleSheet ? l.styleSheet.cssText = t : l.appendChild(document.createTextNode(t)) + } + }(".alert{word-wrap:break-word;display:block;margin-bottom:1rem!important;padding:.75rem 1.25rem!important;position:relative;word-break:break-word}.alert>*{max-width:100%}.alert>:first-child{margin-top:0}.alert>:last-child{margin-bottom:0}.alert:before{content:unset!important}.alert+.alert{margin-top:-.25rem!important}.alert p{margin-bottom:.5rem;margin-top:.5rem}.alert .title{align-items:center;display:flex;flex-wrap:wrap;font-weight:600;margin:0}.icon{background-repeat:no-repeat;display:inline-block;height:16px;margin-right:.5rem;width:16px}.alert.callout{background:var(--background);border:1px solid #eee;border-left-width:.25rem;border-radius:.25rem}.alert.callout.note{border-left-color:#17a2b8!important}.alert.callout.note .title{color:#17a2b8}.alert.callout.note .icon-note{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1em' height='1em' viewBox='0 0 16 16' fill='%2317a2b8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM8 5.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2z'/%3E%3C/svg%3E\")}.alert.callout.tip{border-left-color:#28a745!important}.alert.callout.tip .title{color:#28a745}.alert.callout.tip .icon-tip{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1em' height='1em' viewBox='0 0 352 512' fill='%2328a745' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z'/%3E%3C/svg%3E\")}.alert.callout.warning{border-left-color:#f0ad4e!important}.alert.callout.warning .title{color:#f0ad4e}.alert.callout.warning .icon-warning{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1em' height='1em' viewBox='0 0 17 16' fill='%23f0ad4e' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 5zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z'/%3E%3C/svg%3E\")}.alert.callout.attention{border-left-color:#dc3545!important}.alert.callout.attention .title{color:#dc3545}.alert.callout.attention .icon-attention{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1em' height='1em' viewBox='0 0 16 16' fill='%23dc3545' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath fill-rule='evenodd' d='M11.354 4.646a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E\")}.alert.flat{background-color:#e2e3e5;border:1px solid #d6d8db;border-radius:.125rem;color:#383d41}.alert.flat.note{background-color:#cdeefd;border-color:#b4e6fc;color:#02587f}.alert.flat.note .title{color:#01354d}.alert.flat.note .icon-note{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1em' height='1em' viewBox='0 0 16 16' fill='%2301354d' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM8 5.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2z'/%3E%3C/svg%3E\")}.alert.flat.tip{background-color:#dbefdc;border-color:#c9e7cb;color:#285b2a}.alert.flat.tip .title{color:#18381a}.alert.flat.tip .icon-tip{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1em' height='1em' viewBox='0 0 352 512' fill='%2318381a' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z'/%3E%3C/svg%3E\")}.alert.flat.warning{background-color:#ffddd3;border-color:#ffc9ba;color:#852d12}.alert.flat.warning .title{color:#581e0c}.alert.flat.warning .icon-warning{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1em' height='1em' viewBox='0 0 17 16' fill='%23581e0c' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 5zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z'/%3E%3C/svg%3E\")}.alert.flat.attention{background-color:#fdd9d7;border-color:#fcc2bf;color:#7f231c}.alert.flat.attention .title{color:#551713}.alert.flat.attention .icon-attention{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='1em' height='1em' viewBox='0 0 16 16' fill='%23551713' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath fill-rule='evenodd' d='M11.354 4.646a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708l6-6a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E\")}"), + function() { + var e = { + style: "callout", + note: { + label: "Note", + icon: "icon-note", + className: "note" + }, + tip: { + label: "Tip", + icon: "icon-tip", + className: "tip" + }, + warning: { + label: "Warning", + icon: "icon-warning", + className: "warning" + }, + attention: { + label: "Attention", + icon: "icon-attention", + className: "attention" + }, + typeMappings: { + info: "note", + danger: "attention" + } + }; + + function a(t, e) { + var o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0; + for (var l in e) try { + e[l].constructor === Object && o < 1 ? t[l] = a(t[l], e[l], o + 1) : t[l] = e[l] + } catch (a) { + t[l] = e[l] + } + return t + } + window.$docsify = window.$docsify || {}, window.$docsify.plugins = [].concat((function(o, l) { + var r = a(e, l.config["flexible-alerts"] || l.config.flexibleAlerts), + i = function(t, e, a, o) { + var l = (t || "").match(new RegExp("".concat(e, ":(([\\s\\w\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF-]*))"))); + return l ? o ? o(l[1]) : l[1] : o ? o(a) : a + }; + o.afterEach((function(e, a) { + a(e.replace(/<\s*blockquote[^>]*>[\s]+?(?:

)?\[!(\w*)((?:\|[\w*:[\s\w\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF-]*)*?)\]([\s\S]*?)(?:<\/p>)?<\s*\/\s*blockquote>/g, (function(e, a, o, n) { + !r[a.toLowerCase()] && r.typeMappings[a.toLowerCase()] && (a = r.typeMappings[a.toLowerCase()]); + var c = r[a.toLowerCase()]; + if (!c) return e; + var d = i(o, "style", r.style), + s = i(o, "iconVisibility", "visible", (function(t) { + return "hidden" !== t + })), + g = i(o, "labelVisibility", "visible", (function(t) { + return "hidden" !== t + })), + m = i(o, "label", c.label), + u = i(o, "icon", c.icon), + f = i(o, "className", c.className); + if ("object" === t(m)) { + var p = Object.keys(m).filter((function(t) { + return l.route.path.indexOf(t) > -1 + })); + p && p.length > 0 ? m = m[p[0]] : (g = !1, s = !1) + } + var w = ''), + h = '

'.concat(s ? w : "").concat(g ? m : "", "

"); + return '
\n ').concat(s || g ? h : "", "\n

").concat(n, "

\n
") + }))) + })) + }), window.$docsify.plugins) + }() +}(); +//# sourceMappingURL=docsify-plugin-flexible-alerts.min.js.map \ No newline at end of file diff --git a/docs/assets/js/main.js b/docs/assets/js/main.js new file mode 100644 index 0000000..3547c4f --- /dev/null +++ b/docs/assets/js/main.js @@ -0,0 +1,148 @@ +(function () { + // Functions + // ========================================================================= + /** + * Adds event listeners to change active stylesheet and restore previously + * activated stylesheet on reload. + * + * @example + * + * This link: + * Bar + * Activates an existing matched (href + group match): + * + * Generates a new if needed (no href + group match): + * + * Disables elements that match group but not href + * + * Ignores elements that do not match href and group + * + */ + function initStyleSwitcher() { + var SESSION_STORAGE_KEY = 'activeStylesheetHref'; + var SESSION_VAL_SEPARATOR = '||'; + + var isInitialized = false; + + function createLinkedStylesheet(styleHref, styleGroup) { + var activeElm = document.createElement('link'); + + activeElm.setAttribute('rel', 'stylesheet'); + activeElm.setAttribute('href', styleHref); + activeElm.setAttribute('data-style-group', styleGroup || ''); + + document.head.appendChild(activeElm); + + activeElm.addEventListener('load', function linkOnLoad() { + activeElm.removeEventListener('load', linkOnLoad); + handleSwitch(styleHref, styleGroup); + }); + + return activeElm; + } + + function handleSwitch(styleHref, styleGroup) { + var activeElm = styleGroup + ? document.querySelector( + 'link[href*="' + + styleHref + + '"][data-style-group="' + + styleGroup + + '"]' + ) + : document.querySelector('link[href*="' + styleHref + '"]'); + + if (!activeElm) { + activeElm = createLinkedStylesheet(styleHref, styleGroup); + + // Stylesheet will call this function after loading is complete + return; + } + + // Remove "alternate" keyword and media attribute + activeElm.setAttribute( + 'rel', + (activeElm.rel || '').replace(/\s*alternate/g, '').trim() + ); + activeElm.removeAttribute('media'); + + // Force enable stylesheet (required for some browsers) + activeElm.disabled = true; + activeElm.disabled = false; + + // Store active style sheet + sessionStorage.setItem( + SESSION_STORAGE_KEY, + styleGroup ? styleHref + SESSION_VAL_SEPARATOR + styleGroup : styleHref + ); + + var inactiveElms = styleGroup + ? document.querySelectorAll( + 'link:not([href*="' + + styleHref + + '"])[data-style-group="' + + styleGroup + + '"]' + ) + : document.querySelectorAll('link:not([href*="' + styleHref + '"])'); + + // Disable other elms + for (var i = 0; i < inactiveElms.length; i++) { + var elm = inactiveElms[i]; + + elm.disabled = true; + + // Fix for browsersync and alternate stylesheet updates. Will + // cause FOUC when switching stylesheets during development, but + // required to properly apply style updates when alternate + // stylesheets are enabled. + if (window.browsersyncObserver) { + var linkRel = elm.getAttribute('rel') || ''; + var linkRelAlt = + linkRel.indexOf('alternate') > -1 + ? linkRel + : (linkRel + ' alternate').trim(); + + elm.setAttribute('rel', linkRelAlt); + } + } + + // CSS custom property ponyfill + if ((window.$docsify || {}).themeable) { + window.$docsify.themeable.util.cssVars(); + } + } + + // Event listeners + if (!isInitialized) { + isInitialized = true; + + // Restore active stylesheet + document.addEventListener('DOMContentLoaded', function () { + var storedData = sessionStorage.getItem(SESSION_STORAGE_KEY) || ''; + var storedVals = storedData.split(SESSION_VAL_SEPARATOR); + var styleHref = storedVals[0] || ''; + var styleGroup = storedVals[1] || ''; + + if (styleHref) { + handleSwitch(styleHref, styleGroup); + } + }); + + // Update active stylesheet + document.addEventListener('click', function (evt) { + var styleHref = evt.target.getAttribute('data-style-href'); + var styleGroup = evt.target.getAttribute('data-style-group'); + + if (styleHref) { + handleSwitch(styleHref, styleGroup); + evt.preventDefault(); + } + }); + } + } + + // Main + // ========================================================================= + initStyleSwitcher(); +})(); diff --git a/docs/home.md b/docs/home.md new file mode 100644 index 0000000..51c0453 --- /dev/null +++ b/docs/home.md @@ -0,0 +1,22 @@ +# Panda-Network Dokumentation + +Willkommen zur Dokumentation unserer Produkte! Hier finden Sie alle relevanten Informationen, Anleitungen und Referenzen, um unsere Produkte zu nutzen und zu konfigurieren. + +## Inhalt + +- **[Home](#panda-network-dokumentation)**: ~ + +- **[Polas-System](site/polas/polas.md)**: Schritt-für-Schritt-Anleitungen zur Installation des Web-Panels und zur Konfiguration. +- **[PV-System](site/pvs/pvs.md)**: Schritt-für-Schritt-Anleitungen zur Installation des Web-Panels und zur Konfiguration. +- **[R6 Roulette](site/r6roulette.md)**: 🇬🇧 Information on the API request options. **|** 🇩🇪 Informationen zu den API-Request-Möglichkeiten. +- **[Ts³-Server Installer und Updater](site/tsup.md)**: Schritt-für-Schritt-Anleitungen zur Installation und Aktualisierung. +- **[Kontakt und Support](#kontakt-und-support)**: Kontaktinformationen für Unterstützung und Feedback. + +## Kontakt und Support + +Wenn Sie Fragen, Anregungen oder Feedback haben, können Sie uns jederzeit kontaktieren: + +- **E-Mail**: [info@panda-network.de](mailto:info@panda-network.de) +- **Discord**: [Panda-Network Discord](https://pnnet.dev/discord) + +Vielen Dank für die Nutzung unserer Produkte! Wir hoffen, dass Ihnen die Dokumentation hilft, alle Informationen zu finden, die Sie benötigen. diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..9a300e6 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,91 @@ + + + + + + + + + Panda-Network Docs + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 0000000..b3f1c3f --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: /test/ \ No newline at end of file diff --git a/docs/sidebar.md b/docs/sidebar.md new file mode 100644 index 0000000..4f67ed8 --- /dev/null +++ b/docs/sidebar.md @@ -0,0 +1,8 @@ +- [Home](home) +- [Polas-System](site/polas/polas) + - [Quick Start](site/polas/installation) + - [Bußgeldrechner](site/polas/calaculator.md) +- [PV-System](site/pvs/pvs) + - [Quick Start](site/pvs/installation) +- [R6 Roulette - API](site/r6roulette) +- [TS-Updater](site/tsup) diff --git a/docs/site/polas/calaculator.md b/docs/site/polas/calaculator.md new file mode 100644 index 0000000..a7c4423 --- /dev/null +++ b/docs/site/polas/calaculator.md @@ -0,0 +1,30 @@ +# Bußgeldrechner + +## Datei + +**Datei herunterladen** + Download-Link: [https://pnnet.dev/calc-raw](https://pnnet.dev/calc-raw) + Diese Datei kann in jedem Tabellenprogramm, das `.csv`-Dateien unterstützt, geöffnet werden. + +## Artikel hinzufügen & bearbeiten + +1. **Datei herunterladen und öffnen** + Laden Sie die Datei über den obigen Link herunter und öffnen Sie sie in einem Tabellenprogramm. + + ![Raw-Datei](../../assets/images/calc_raw_01.png) + +2. **Paragraphen eintragen** + Ab Zeile `2` können Sie Ihre Paragraphen für den Rechner eintragen – ohne `§` und ohne Einheiten. Die Einheiten werden automatisch per Script an den richtigen Stellen hinzugefügt. + +3. **Datei speichern** + Wenn alle Artikel und Bußgelder korrekt eingestellt sind, wie z. B. die Hafteinheiten, speichern Sie die Datei ab. + +4. **Ins Polas-System gehen** + Gehen Sie ins Polas-System und navigieren Sie zur Seite `Einstellung`. (Beachten Sie, dass dafür bestimmte Benutzerrechte erforderlich sind: `Ränge/Rechte Bearbeiten`.) + + ![Polas-Einstellung](../../assets/images/pola_settings.png) + +5. **Datei hochladen** + Unter `Bußgeldeinträge Upload` laden Sie die zuvor gespeicherte Datei hoch. Alle Daten aus der `.csv`-Datei werden nun eingefügt. + +**Wichtig:** Die Einträge werden genau so gespeichert, wie sie in der Datei stehen. Die erste Zeile wird dabei nicht übernommen. diff --git a/docs/site/polas/installation.md b/docs/site/polas/installation.md new file mode 100644 index 0000000..c62bb9a --- /dev/null +++ b/docs/site/polas/installation.md @@ -0,0 +1,39 @@ +# Quick Start Guide + +## Anforderungen + +Um die Software erfolgreich zu installieren, benötigen Sie: + +- Einen funktionierenden Webspace mit Apache Server +- PHP Version 7.4 oder höher +- Eine MySQL/MariaDB-Datenbank oder eine ähnliche Datenbank + +## Installation + +1. **Dateien hochladen** + Entzippen Sie die bereitgestellten Dateien und laden Sie diese anschließend auf Ihren Webspace hoch. + + ![Webspace-Files](../../assets/images/webspace_files.png) + +2. **Datenbank einrichten** + Erstellen Sie eine neue Datenbank. Importieren Sie anschließend die Datei `DATABASE/pn_polassystem.sql` in diese Datenbank. + +3. **Konfiguration anpassen** + Öffnen Sie die Datei `inc/config.php` und passen Sie in den Zeilen `16` bis `18` die Datenbankverbindung an: + + ```php + //!! ANPASSEN !! + $dsn = 'mysql:host=DBDOMAIN; dbname=DBNAME'; + $user = 'DBUSER'; + $password = 'DBPASSWORD'; + ``` + +4. **Zugriff auf die Webseite** + Sobald die Konfiguration abgeschlossen ist, können Sie die Webseite aufrufen. Verwenden Sie die folgenden Anmeldedaten, um sich einzuloggen: + + ``` + Benutzername: admin + Passwort: admin + ``` + + **Wichtiger Hinweis:** Bitte ändern Sie das Passwort umgehend, da dies die Standardanmeldedaten für alle neuen Installationen sind und vollständigen Zugriff gewähren. \ No newline at end of file diff --git a/docs/site/polas/polas.md b/docs/site/polas/polas.md new file mode 100644 index 0000000..60f73b3 --- /dev/null +++ b/docs/site/polas/polas.md @@ -0,0 +1,19 @@ +# Polas-System Features + +--- + +* ✔ Polas + * Bürger & Fahrzeug suche +* ✔ Aktensystem + * Fahdungsliste + * Benutzerdefiniert Berichte schreiben +* ✔ Leistelle +* ✔ Bußgelrechner +* ✔ Termine +* ✔ Mitgliederliste + * Profil + * Benutzerdefiniert Logo upload +* ✔ Rechte-Einstellenung + * einfache Rechte bearbeitung +* ✔ Systemeinstellung + * Für Panelname & kleinigkeiten diff --git a/docs/site/pvs/installation.md b/docs/site/pvs/installation.md new file mode 100644 index 0000000..a28ee20 --- /dev/null +++ b/docs/site/pvs/installation.md @@ -0,0 +1,39 @@ +# Quick Start Guide + +## Anforderungen + +Um die Software erfolgreich zu installieren, benötigen Sie: + +- Einen funktionierenden Webspace mit Apache Server +- PHP Version 7.4 oder höher +- Eine MySQL/MariaDB-Datenbank oder eine ähnliche Datenbank + +## Installation + +1. **Dateien hochladen** + Entzippen Sie die bereitgestellten Dateien und laden Sie diese anschließend auf Ihren Webspace hoch. + + ![Webspace-Files](../../_media/webspace_files.png) + +2. **Datenbank einrichten** + Erstellen Sie eine neue Datenbank. Importieren Sie anschließend die Datei `DATABASE/pn_pvssystem.sql` in diese Datenbank. + +3. **Konfiguration anpassen** + Öffnen Sie die Datei `inc/config.php` und passen Sie in den Zeilen `16` bis `18` die Datenbankverbindung an: + + ```php + //!! ANPASSEN !! + $dsn = 'mysql:host=DBDOMAIN; dbname=DBNAME'; + $user = 'DBUSER'; + $password = 'DBPASSWORD'; + ``` + +4. **Zugriff auf die Webseite** + Sobald die Konfiguration abgeschlossen ist, können Sie die Webseite aufrufen. Verwenden Sie die folgenden Anmeldedaten, um sich einzuloggen: + + ``` + Benutzername: admin + Passwort: admin + ``` + + **Wichtiger Hinweis:** Bitte ändern Sie das Passwort umgehend, da dies die Standardanmeldedaten für alle neuen Installationen sind und vollständigen Zugriff gewähren. \ No newline at end of file diff --git a/docs/site/pvs/pvs.md b/docs/site/pvs/pvs.md new file mode 100644 index 0000000..b3fd2d0 --- /dev/null +++ b/docs/site/pvs/pvs.md @@ -0,0 +1,19 @@ +# PV-System Features + +--- + +- ✔ Patientenverzeichnis + - Bürger suche +- ✔ Aktenverzeichnis + - Benutzerdefiniert Berichte schreiben + - Teilen der Berichte +- ✔ Leistelle +- ✔ Mitgliederliste + - Profil + - Benutzerdefiniert Logo upload + - Passwort ändern +- ✔ Einstellenungen + - einfache Rechte bearbeitung + - einfache Akten Title Anlegen & Löschen +- ✔ Systemeinstellung + - Für Panelname & kleinigkeiten diff --git a/docs/site/r6roulette.md b/docs/site/r6roulette.md new file mode 100644 index 0000000..403d221 --- /dev/null +++ b/docs/site/r6roulette.md @@ -0,0 +1,26 @@ +--- + +# R6 Roulette - API + +> To access the API, you will need an API key. You can request this key through the ticket system on [Discord](https://discord.gg/z8ScRvf). +> Once you receive the API key, you can use it to access the API and utilize all available functions. + + +### Api Request +All Operator +```js +https://api.r6roulette.de/operator?api_key={YourApiKey} +``` +Select a specific one +```js +https://api.r6roulette.de/operator/Ace?api_key={YourApiKey} +``` +Only attacker or defender +```js +https://api.r6roulette.de/role/attacker?api_key={YourApiKey} +https://api.r6roulette.de/role/defender?api_key={YourApiKey} +``` +all challenges +```js +https://api.r6roulette.de/challenges?api_key={YourApiKey} +``` diff --git a/docs/site/tsup.md b/docs/site/tsup.md new file mode 100644 index 0000000..568df37 --- /dev/null +++ b/docs/site/tsup.md @@ -0,0 +1,51 @@ +# TeamSpeak 3 Server Installer and Updater + +Ein leichtgewichtiges Skript zum Installieren oder Aktualisieren eines TeamSpeak 3-Servers unter Linux oder FreeBSD. + +## Requirements + +- **jq** 1.6 or newer (https://stedolan.github.io/jq/download/) +- curl +- shasum, sha256, or sha256sum +- tar +- bzip2 + +# How to use [Linux] + +# Installieren einen neuen TeamSpeak 3-Server + +Speicher das Skript an der Stelle, an der Sie den TS-Server installieren soll, und machen das Script ausführbar `chmod +x ts3updater.sh` und starte es mit `./ts3updater.sh`. Nach der Installation verschiebt sich das Skript in den Installationsordner. Führen Sie es von dort aus, wann immer Sie den Server aktualisieren möchten. + +## Aktualisiert eine vorhandene TeamSpeak 3-Server installation + +Kopiere das Skript im Verzeichnis Ihrer vorhandenen TS-Installation. Dies bedeutet, dass sich das Skript im selben Verzeichnis wie die `ts3server_startscript.sh`. Datei befinden muss Mache es ausführbar mit `chmod +x ts3updater.sh` und starte es mit `./ts3updater.sh`. + +Wenn TSDNS verwendet wirt, stelle sicher, dass der Dienst gestoppt ist, bevor dieses Skript ausführt wird. + +## Aktualisieren Sie den Server automatisch + +Da der Server nur aktualisiert wird, wenn eine neue Version verfügbar ist, können Sie das Skript auch zum Automatisieren von Updates verwenden. Erstellen Sie einfach einen Cronjob, der das Skript beispielsweise stündlich oder täglich ausführt. + +Ein Crontab-Eintrag, um ts3updater täglich um 13:28 Uhr auszuführen, könnte so aussehen: `28 13 * * * /home/ts/teamspeak3-server_linux_amd64/ts3updater.sh`. +Wenn du nicht jedes Mal eine E-Mail erhalten möchten, wenn das Skript ausgeführt wird. hänge das an den Crontab ` >/dev/null 2>&1` + +du must die Serverlizenzvereinbarung akzeptieren, bevor Sie den Cronjob erstellen. Wechseln dazu in das Verzeichnis der TS-Installation und lesen Sie die Datei `LICENSE`und erstellen Sie eine Datei mit dem Namen `.ts3server_license_accepted`. + +## Befehlszeilenparameter + +Alle Parameter werden an übergeben `ts3server_startscript.sh` wenn der Server gestartet wird. Wenn du den Server nach der Installation oder Aktualisierung nicht starten möchten, verwenden den Parameter`--dont-start`. + +# + +# How to use [Windows] + +## Installieren einen neuen TeamSpeak 3-Server + +Speicher das Skript an der Stelle, an der Sie den TS-Server installieren soll. +in der `ts3updater.bat` die Variable server dein Server verzeichnis angeben +Ein Crontab-Eintrag, um ts3updater täglich um 13:28 Uhr auszuführen, könnte so aussehen: `set server= D:\Teamspeak-server_win64`.und starte die `ts3updater.bat` + +## Aktualisiert eine vorhandene TeamSpeak 3-Server installation + +Kopiere das Skript im Verzeichnis Ihrer vorhandenen TS-Installation. +starte die `ts3updater.bat`