diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..ea58058 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ + - Alloverse Documentation Alloverse Documentation | Getting started with Alloverse. Guides, code snippets, API references… Link Search Menu Expand Document

404

Page not found :(

The requested page could not be found.

diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..4bd21b0 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +docs.alloverse.com \ No newline at end of file diff --git a/assets/css/just-the-docs-dark.css b/assets/css/just-the-docs-dark.css new file mode 100644 index 0000000..75aa55a --- /dev/null +++ b/assets/css/just-the-docs-dark.css @@ -0,0 +1,1779 @@ +@charset "UTF-8"; +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document ========================================================================== */ +/** 1. Correct the line height in all browsers. 2. Prevent adjustments of font size after orientation changes in iOS. */ +@import url("https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400&family=Sen:wght@400;700;800"); +html { line-height: 1.15; /* 1 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/* Sections ========================================================================== */ +/** Remove the margin in all browsers. */ +body { margin: 0; } + +/** Render the `main` element consistently in IE. */ +main { display: block; } + +/** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/* Grouping content ========================================================================== */ +/** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ +hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +pre { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/* Text-level semantics ========================================================================== */ +/** Remove the gray background on active links in IE 10. */ +a { background-color: transparent; } + +/** 1. Remove the bottom border in Chrome 57- 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ +abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } + +/** Add the correct font weight in Chrome, Edge, and Safari. */ +b, strong { font-weight: bolder; } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +code, kbd, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/** Add the correct font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sub { bottom: -0.25em; } + +sup { top: -0.5em; } + +/* Embedded content ========================================================================== */ +/** Remove the border on images inside links in IE 10. */ +img { border-style: none; } + +/* Forms ========================================================================== */ +/** 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. */ +button, input, optgroup, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ line-height: 1.15; /* 1 */ margin: 0; /* 2 */ } + +/** Show the overflow in IE. 1. Show the overflow in Edge. */ +button, input { /* 1 */ overflow: visible; } + +/** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ +button, select { /* 1 */ text-transform: none; } + +/** Correct the inability to style clickable types in iOS and Safari. */ +button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } + +/** Remove the inner border and padding in Firefox. */ +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +/** Restore the focus styles unset by the previous rule. */ +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +/** Correct the padding in Firefox. */ +fieldset { padding: 0.35em 0.75em 0.625em; } + +/** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ +legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } + +/** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ +progress { vertical-align: baseline; } + +/** Remove the default vertical scrollbar in IE 10+. */ +textarea { overflow: auto; } + +/** 1. Add the correct box sizing in IE 10. 2. Remove the padding in IE 10. */ +[type="checkbox"], [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Correct the cursor style of increment and decrement buttons in Chrome. */ +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ +[type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } + +/** Remove the inner padding in Chrome and Safari on macOS. */ +[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ +::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } + +/* Interactive ========================================================================== */ +/* Add the correct display in Edge, IE 10+, and Firefox. */ +details { display: block; } + +/* Add the correct display in all browsers. */ +summary { display: list-item; } + +/* Misc ========================================================================== */ +/** Add the correct display in IE 10+. */ +template { display: none; } + +/** Add the correct display in IE 10. */ +[hidden] { display: none; } + +* { box-sizing: border-box; } + +::selection { color: #fff; background: #2c84fa; } + +html { font-size: 14px !important; scroll-behavior: smooth; } + +@media (min-width: 31.25rem) { html { font-size: 16px !important; } } + +body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: inherit; line-height: 1.4; color: #e6e1e8; background-color: #27262b; } + +ol, ul, dl, pre, address, blockquote, table, div, hr, form, fieldset, noscript .table-wrapper { margin-top: 0; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 1em; font-weight: 500; line-height: 1.25; color: #f5f6fa; } + +p { margin-top: 1em; margin-bottom: 1em; } + +a { color: #2c84fa; text-decoration: none; } + +a:not([class]) { text-decoration: none; background-image: linear-gradient(#44434d 0%, #44434d 100%); background-repeat: repeat-x; background-position: 0 100%; background-size: 1px 1px; } + +a:not([class]):hover { background-image: linear-gradient(rgba(44, 132, 250, 0.45) 0%, rgba(44, 132, 250, 0.45) 100%); background-size: 1px 1px; } + +code { font-family: "SFMono-Regular", Menlo, Consolas, Monospace; font-size: 0.75em; line-height: 1.4; } + +figure, pre { margin: 0; } + +li { margin: 0.25em 0; } + +img { max-width: 100%; height: auto; } + +hr { height: 1px; padding: 0; margin: 2rem 0; background-color: #44434d; border: 0; } + +.side-bar { z-index: 0; display: flex; flex-wrap: wrap; background-color: #27262b; } + +@media (min-width: 50rem) { .side-bar { flex-wrap: nowrap; position: fixed; width: 248px; height: 100%; flex-direction: column; border-right: 1px solid #44434d; align-items: flex-end; } } + +@media (min-width: 66.5rem) { .side-bar { width: calc((100% - 1064px) / 2 + 264px); min-width: 264px; } } + +@media (min-width: 50rem) { .main { position: relative; max-width: 800px; margin-left: 248px; } } + +@media (min-width: 66.5rem) { .main { margin-left: calc( (100% - 1064px) / 2 + 264px); } } + +.main-content-wrap { padding-right: 1rem; padding-left: 1rem; padding-top: 1rem; padding-bottom: 1rem; } + +@media (min-width: 50rem) { .main-content-wrap { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 50rem) { .main-content-wrap { padding-top: 2rem; padding-bottom: 2rem; } } + +.main-header { z-index: 0; display: none; background-color: #27262b; } + +@media (min-width: 50rem) { .main-header { display: flex; justify-content: space-between; height: 60px; background-color: #27262b; border-bottom: 1px solid #44434d; } } + +.main-header.nav-open { display: block; } + +@media (min-width: 50rem) { .main-header.nav-open { display: flex; } } + +.site-nav, .site-header, .site-footer { width: 100%; } + +@media (min-width: 66.5rem) { .site-nav, .site-header, .site-footer { width: 264px; } } + +.site-nav { display: none; } + +.site-nav.nav-open { display: block; } + +@media (min-width: 50rem) { .site-nav { display: block; padding-top: 3rem; padding-bottom: 1rem; overflow-y: auto; flex: 1 1 auto; } } + +.site-header { display: flex; min-height: 60px; align-items: center; } + +@media (min-width: 50rem) { .site-header { height: 60px; max-height: 60px; border-bottom: 1px solid #44434d; } } + +.site-title { padding-right: 1rem; padding-left: 1rem; flex-grow: 1; display: flex; height: 100%; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; color: #f5f6fa; font-size: 18px !important; } + +@media (min-width: 50rem) { .site-title { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-title { font-size: 24px !important; line-height: 1.25; } } + +@media (min-width: 50rem) { .site-title { padding-top: 0.5rem; padding-bottom: 0.5rem; } } + +.site-logo { width: 100%; height: 100%; background-image: url("https://alloverse.com/wp-content/uploads/Alloverse-logo-moniker-256x38-1.svg"); background-repeat: no-repeat; background-position: left center; background-size: contain; } + +.site-button { display: flex; height: 100%; padding: 1rem; align-items: center; } + +@media (min-width: 50rem) { .site-header .site-button { display: none; } } + +.site-title:hover { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 80%, rgba(32, 31, 35, 0) 100%); } + +.site-button:hover { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 100%); } + +body { position: relative; padding-bottom: 4rem; overflow-y: scroll; } + +@media (min-width: 50rem) { body { position: static; padding-bottom: 0; } } + +.site-footer { padding-right: 1rem; padding-left: 1rem; position: absolute; bottom: 0; left: 0; padding-top: 1rem; padding-bottom: 1rem; color: #959396; font-size: 11px !important; } + +@media (min-width: 50rem) { .site-footer { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-footer { font-size: 12px !important; } } + +@media (min-width: 50rem) { .site-footer { position: static; justify-self: end; } } + +.icon { width: 1.5rem; height: 1.5rem; color: #2c84fa; } + +.main-content { line-height: 1.6; } + +.main-content ol, .main-content ul, .main-content dl, .main-content pre, .main-content address, .main-content blockquote, .main-content .table-wrapper { margin-top: 0.5em; } + +.main-content a { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + +.main-content ul, .main-content ol { padding-left: 1.5em; } + +.main-content li .highlight { margin-top: 0.25rem; } + +.main-content ol { list-style-type: none; counter-reset: step-counter; } + +.main-content ol > li { position: relative; } + +.main-content ol > li::before { position: absolute; top: 0.2em; left: -1.6em; color: #959396; content: counter(step-counter); counter-increment: step-counter; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .main-content ol > li::before { font-size: 14px !important; } } + +@media (min-width: 31.25rem) { .main-content ol > li::before { top: 0.11em; } } + +.main-content ol > li ol { counter-reset: sub-counter; } + +.main-content ol > li ol li::before { content: counter(sub-counter, lower-alpha); counter-increment: sub-counter; } + +.main-content ul { list-style: none; } + +.main-content ul > li::before { position: absolute; margin-left: -1.4em; color: #959396; content: "•"; } + +.main-content .task-list { padding-left: 0; } + +.main-content .task-list-item { display: flex; align-items: center; } + +.main-content .task-list-item::before { content: ""; } + +.main-content .task-list-item-checkbox { margin-right: 0.6em; } + +.main-content hr + * { margin-top: 0; } + +.main-content h1:first-of-type { margin-top: 0.5em; } + +.main-content dl { display: grid; grid-template: auto / 10em 1fr; } + +.main-content dt, .main-content dd { margin: 0.25em 0; } + +.main-content dt { grid-column: 1; font-weight: 500; text-align: right; } + +.main-content dt::after { content: ":"; } + +.main-content dd { grid-column: 2; margin-bottom: 0; margin-left: 1em; } + +.main-content dd blockquote:first-child, .main-content dd div:first-child, .main-content dd dl:first-child, .main-content dd dt:first-child, .main-content dd h1:first-child, .main-content dd h2:first-child, .main-content dd h3:first-child, .main-content dd h4:first-child, .main-content dd h5:first-child, .main-content dd h6:first-child, .main-content dd li:first-child, .main-content dd ol:first-child, .main-content dd p:first-child, .main-content dd pre:first-child, .main-content dd table:first-child, .main-content dd ul:first-child, .main-content dd .table-wrapper:first-child { margin-top: 0; } + +.main-content dd dl:first-child dt:first-child, .main-content dd dl:first-child dd:nth-child(2), .main-content ol dl:first-child dt:first-child, .main-content ol dl:first-child dd:nth-child(2), .main-content ul dl:first-child dt:first-child, .main-content ul dl:first-child dd:nth-child(2) { margin-top: 0; } + +.main-content .anchor-heading { position: absolute; right: -1rem; width: 1.5rem; height: 100%; padding-right: 0.25rem; padding-left: 0.25rem; overflow: visible; } + +@media (min-width: 50rem) { .main-content .anchor-heading { right: auto; left: -1.5rem; } } + +.main-content .anchor-heading svg { display: inline-block; width: 100%; height: 100%; color: #2c84fa; visibility: hidden; } + +.main-content .anchor-heading:hover svg, .main-content h1:hover > .anchor-heading svg, .main-content h2:hover > .anchor-heading svg, .main-content h3:hover > .anchor-heading svg, .main-content h4:hover > .anchor-heading svg, .main-content h5:hover > .anchor-heading svg, .main-content h6:hover > .anchor-heading svg { visibility: visible; } + +.main-content summary { cursor: pointer; } + +.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 { position: relative; margin-top: 1.5em; margin-bottom: 0.25em; } + +.main-content h1:first-child, .main-content h2:first-child, .main-content h3:first-child, .main-content h4:first-child, .main-content h5:first-child, .main-content h6:first-child { margin-top: 0.5rem; } + +.main-content h1 + table, .main-content h1 + .table-wrapper, .main-content h1 + .code-example, .main-content h1 + .highlighter-rouge, .main-content h2 + table, .main-content h2 + .table-wrapper, .main-content h2 + .code-example, .main-content h2 + .highlighter-rouge, .main-content h3 + table, .main-content h3 + .table-wrapper, .main-content h3 + .code-example, .main-content h3 + .highlighter-rouge, .main-content h4 + table, .main-content h4 + .table-wrapper, .main-content h4 + .code-example, .main-content h4 + .highlighter-rouge, .main-content h5 + table, .main-content h5 + .table-wrapper, .main-content h5 + .code-example, .main-content h5 + .highlighter-rouge, .main-content h6 + table, .main-content h6 + .table-wrapper, .main-content h6 + .code-example, .main-content h6 + .highlighter-rouge { margin-top: 1em; } + +.main-content h1 + p, .main-content h2 + p, .main-content h3 + p, .main-content h4 + p, .main-content h5 + p, .main-content h6 + p { margin-top: 0; } + +.nav-list { padding: 0; margin-top: 0; margin-bottom: 0; list-style: none; } + +.nav-list .nav-list-item { font-size: 14px !important; position: relative; margin: 0; } + +@media (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 16px !important; } } + +@media (min-width: 50rem) { .nav-list .nav-list-item { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 14px !important; } } + +.nav-list .nav-list-item .nav-list-link { display: block; min-height: 3rem; padding-top: 0.25rem; padding-bottom: 0.25rem; line-height: 2.5rem; padding-right: 3rem; padding-left: 1rem; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-link { min-height: 2rem; line-height: 1.5rem; padding-right: 2rem; padding-left: 2rem; } } + +.nav-list .nav-list-item .nav-list-link.active { font-weight: 600; text-decoration: none; } + +.nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 80%, rgba(32, 31, 35, 0) 100%); } + +.nav-list .nav-list-item .nav-list-expander { position: absolute; right: 0; width: 3rem; height: 3rem; padding-top: 0.75rem; padding-right: 0.75rem; padding-bottom: 0.75rem; padding-left: 0.75rem; color: #2c84fa; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-expander { width: 2rem; height: 2rem; padding-top: 0.5rem; padding-right: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.5rem; } } + +.nav-list .nav-list-item .nav-list-expander:hover { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 100%); } + +.nav-list .nav-list-item .nav-list-expander svg { transform: rotate(90deg); } + +.nav-list .nav-list-item > .nav-list { display: none; padding-left: 0.75rem; list-style: none; } + +.nav-list .nav-list-item > .nav-list .nav-list-item { position: relative; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #959396; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { color: #959396; } + +.nav-list .nav-list-item.active > .nav-list-expander svg { transform: rotate(-90deg); } + +.nav-list .nav-list-item.active > .nav-list { display: block; } + +.nav-category { padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 1rem; font-weight: 600; text-align: end; text-transform: uppercase; border-bottom: 1px solid #44434d; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .nav-category { font-size: 12px !important; } } + +@media (min-width: 50rem) { .nav-category { padding-right: 2rem; padding-left: 2rem; margin-top: 1rem; text-align: start; } .nav-category:first-child { margin-top: 0; } } + +.aux-nav { height: 100%; overflow-x: auto; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .aux-nav { font-size: 12px !important; } } + +.aux-nav .aux-nav-list { display: flex; height: 100%; padding: 0; margin: 0; list-style: none; } + +.aux-nav .aux-nav-list-item { display: inline-block; height: 100%; padding: 0; margin: 0; } + +@media (min-width: 50rem) { .aux-nav { padding-right: 1rem; } } + +@media (min-width: 50rem) { .breadcrumb-nav { margin-top: -1rem; } } + +.breadcrumb-nav-list { padding-left: 0; margin-bottom: 0.75rem; list-style: none; } + +.breadcrumb-nav-list-item { display: table-cell; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .breadcrumb-nav-list-item { font-size: 12px !important; } } + +.breadcrumb-nav-list-item::before { display: none; } + +.breadcrumb-nav-list-item::after { display: inline-block; margin-right: 0.5rem; margin-left: 0.5rem; color: #959396; content: "/"; } + +.breadcrumb-nav-list-item:last-child::after { content: ""; } + +h1, .text-alpha { font-size: 32px !important; line-height: 1.25; font-weight: 300; } + +@media (min-width: 31.25rem) { h1, .text-alpha { font-size: 36px !important; } } + +h2, .text-beta { font-size: 18px !important; } + +@media (min-width: 31.25rem) { h2, .text-beta { font-size: 24px !important; line-height: 1.25; } } + +h3, .text-gamma { font-size: 16px !important; } + +@media (min-width: 31.25rem) { h3, .text-gamma { font-size: 18px !important; } } + +h4, .text-delta { font-size: 11px !important; font-weight: 400; text-transform: uppercase; letter-spacing: 0.1em; } + +@media (min-width: 31.25rem) { h4, .text-delta { font-size: 12px !important; } } + +h4 code { text-transform: none; } + +h5, .text-epsilon { font-size: 12px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h5, .text-epsilon { font-size: 14px !important; } } + +h6, .text-zeta { font-size: 11px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h6, .text-zeta { font-size: 12px !important; } } + +.text-small { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .text-small { font-size: 12px !important; } } + +.text-mono { font-family: "SFMono-Regular", Menlo, Consolas, Monospace !important; } + +.text-left { text-align: left !important; } + +.text-center { text-align: center !important; } + +.text-right { text-align: right !important; } + +.label, .label-blue { display: inline-block; padding-top: 0.16em; padding-right: 0.56em; padding-bottom: 0.16em; padding-left: 0.56em; margin-right: 0.5rem; margin-left: 0.5rem; color: #fff; text-transform: uppercase; vertical-align: middle; background-color: #2869e6; font-size: 11px !important; border-radius: 12px; } + +@media (min-width: 31.25rem) { .label, .label-blue { font-size: 12px !important; } } + +.label-green { background-color: #009c7b; } + +.label-purple { background-color: #5e41d0; } + +.label-red { background-color: #e94c4c; } + +.label-yellow { color: #44434d; background-color: #f7d12e; } + +.btn { display: inline-block; box-sizing: border-box; padding-top: 0.3em; padding-right: 1em; padding-bottom: 0.3em; padding-left: 1em; margin: 0; font-family: inherit; font-size: inherit; font-weight: 500; line-height: 1.5; color: #2c84fa; text-decoration: none; vertical-align: baseline; cursor: pointer; background-color: #302d36; border-width: 0; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); appearance: none; } + +.btn:focus { text-decoration: none; outline: none; box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:focus:hover, .btn.selected:focus { box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:hover, .btn.zeroclipboard-is-hover { color: #227efa; } + +.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: #2e2b33; } + +.btn:active, .btn.selected, .btn.zeroclipboard-is-active { background-color: #29262e; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn.selected:hover { background-color: #cfcfcf; } + +.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; box-shadow: none; } + +.btn-outline { color: #2c84fa; background: transparent; box-shadow: inset 0 0 0 2px #e6e1e8; } + +.btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { color: #1878fa; text-decoration: none; background-color: transparent; box-shadow: inset 0 0 0 3px #e6e1e8; } + +.btn-outline:focus { text-decoration: none; outline: none; box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn-outline:focus:hover, .btn-outline.selected:focus { box-shadow: inset 0 0 0 2px #5c5962; } + +.btn-primary { color: #fff; background-color: #2448a7; background-image: linear-gradient(#2b55c4, #2448a7); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-primary:hover, .btn-primary.zeroclipboard-is-hover { color: #fff; background-color: #22459e; background-image: linear-gradient(#2850b7, #22459e); } + +.btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { background-color: #21439a; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-primary.selected:hover { background-color: #1d3a85; } + +.btn-purple { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-purple:hover, .btn-purple.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-purple.selected:hover { background-color: #472cb2; } + +.btn-blue { color: #fff; background-color: #227efa; background-image: linear-gradient(#4593fb, #227efa); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-blue:hover, .btn-blue.zeroclipboard-is-hover { color: #fff; background-color: #1878fa; background-image: linear-gradient(#368afa, #1878fa); } + +.btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { background-color: #1375f9; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-blue.selected:hover { background-color: #0669ed; } + +.btn-green { color: #fff; background-color: #10ac7d; background-image: linear-gradient(#13cc95, #10ac7d); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-green:hover, .btn-green.zeroclipboard-is-hover { color: #fff; background-color: #0fa276; background-image: linear-gradient(#12be8b, #0fa276); } + +.btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { background-color: #0f9e73; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-green.selected:hover { background-color: #0d8662; } + +.search { position: relative; z-index: 2; flex-grow: 1; height: 4rem; padding: 0.5rem; transition: padding linear 200ms; } + +@media (min-width: 50rem) { .search { position: relative !important; width: auto !important; height: 100% !important; padding: 0; transition: none; } } + +.search-input-wrap { position: relative; z-index: 1; height: 3rem; overflow: hidden; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); transition: height linear 200ms; } + +@media (min-width: 50rem) { .search-input-wrap { position: absolute; width: 100%; max-width: 536px; height: 100% !important; border-radius: 0; box-shadow: none; transition: width ease 400ms; } } + +.search-input { position: absolute; width: 100%; height: 100%; padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 2.5rem; font-size: 16px; background-color: #302d36; border-top: 0; border-right: 0; border-bottom: 0; border-left: 0; border-radius: 0; } + +@media (min-width: 50rem) { .search-input { padding-top: 1rem; padding-bottom: 1rem; padding-left: 3.5rem; font-size: 14px; background-color: #27262b; transition: padding-left linear 200ms; } } + +.search-input:focus { outline: 0; } + +.search-input:focus + .search-label .search-icon { color: #2c84fa; } + +.search-label { position: absolute; display: flex; height: 100%; padding-left: 1rem; } + +@media (min-width: 50rem) { .search-label { padding-left: 2rem; transition: padding-left linear 200ms; } } + +.search-label .search-icon { width: 1.2rem; height: 1.2rem; align-self: center; color: #959396; } + +.search-results { position: absolute; left: 0; display: none; width: 100%; max-height: calc(100% - 4rem); overflow-y: auto; background-color: #302d36; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +@media (min-width: 50rem) { .search-results { top: 100%; width: 536px; max-height: calc(100vh - 200%) !important; } } + +.search-results-list { padding-left: 0; margin-bottom: 0.25rem; list-style: none; font-size: 14px !important; } + +@media (min-width: 31.25rem) { .search-results-list { font-size: 16px !important; } } + +@media (min-width: 50rem) { .search-results-list { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-results-list { font-size: 14px !important; } } + +.search-results-list-item { padding: 0; margin: 0; } + +.search-result { display: block; padding-top: 0.25rem; padding-right: 0.75rem; padding-bottom: 0.25rem; padding-left: 0.75rem; } + +.search-result:hover, .search-result.active { background-color: #201f23; } + +.search-result-title { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; } + +@media (min-width: 31.25rem) { .search-result-title { display: inline-block; width: 40%; padding-right: 0.5rem; vertical-align: top; } } + +.search-result-doc { display: flex; align-items: center; word-wrap: break-word; } + +.search-result-doc.search-result-doc-parent { opacity: 0.5; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 14px !important; } } + +@media (min-width: 50rem) { .search-result-doc.search-result-doc-parent { font-size: 11px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 12px !important; } } + +.search-result-doc .search-result-icon { width: 1rem; height: 1rem; margin-right: 0.5rem; color: #2c84fa; flex-shrink: 0; } + +.search-result-doc .search-result-doc-title { overflow: auto; } + +.search-result-section { margin-left: 1.5rem; word-wrap: break-word; } + +.search-result-rel-url { display: block; margin-left: 1.5rem; overflow: hidden; color: #959396; text-overflow: ellipsis; white-space: nowrap; font-size: 9px !important; } + +@media (min-width: 31.25rem) { .search-result-rel-url { font-size: 10px !important; } } + +.search-result-previews { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; margin-left: 0.5rem; color: #959396; word-wrap: break-word; border-left: 1px solid; border-left-color: #44434d; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .search-result-previews { font-size: 12px !important; } } + +@media (min-width: 31.25rem) { .search-result-previews { display: inline-block; width: 60%; padding-left: 0.5rem; margin-left: 0; vertical-align: top; } } + +.search-result-preview + .search-result-preview { margin-top: 0.25rem; } + +.search-result-highlight { font-weight: bold; } + +.search-no-result { padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-no-result { font-size: 14px !important; } } + +.search-button { position: fixed; right: 1rem; bottom: 1rem; display: flex; width: 3.5rem; height: 3.5rem; background-color: #302d36; border: 1px solid rgba(44, 132, 250, 0.3); border-radius: 1.75rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); align-items: center; justify-content: center; } + +.search-overlay { position: fixed; top: 0; left: 0; z-index: 1; width: 0; height: 0; background-color: rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } + +.search-active .search { position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 0; } + +.search-active .search-input-wrap { height: 4rem; border-radius: 0; } + +@media (min-width: 50rem) { .search-active .search-input-wrap { width: 536px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } + +.search-active .search-input { background-color: #302d36; } + +@media (min-width: 50rem) { .search-active .search-input { padding-left: 2.3rem; } } + +@media (min-width: 50rem) { .search-active .search-label { padding-left: 0.6rem; } } + +.search-active .search-results { display: block; } + +.search-active .search-overlay { width: 100%; height: 100%; opacity: 1; transition: opacity ease 400ms, width 0s, height 0s; } + +@media (min-width: 50rem) { .search-active .main { position: fixed; right: 0; left: 0; } } + +.search-active .main-header { padding-top: 4rem; } + +@media (min-width: 50rem) { .search-active .main-header { padding-top: 0; } } + +.table-wrapper { display: block; width: 100%; max-width: 100%; margin-bottom: 1.5rem; overflow-x: auto; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +table { display: table; min-width: 100%; border-collapse: separate; } + +th, td { font-size: 12px !important; min-width: 120px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; background-color: #302d36; border-bottom: 1px solid rgba(68, 67, 77, 0.5); border-left: 1px solid #44434d; } + +@media (min-width: 31.25rem) { th, td { font-size: 14px !important; } } + +th:first-of-type, td:first-of-type { border-left: 0; } + +tbody tr:last-of-type th, tbody tr:last-of-type td { border-bottom: 0; } + +tbody tr:last-of-type td { padding-bottom: 0.75rem; } + +thead th { border-bottom: 1px solid #44434d; } + +code { padding: 0.2em 0.15em; font-weight: 400; background-color: #302d36; border: 1px solid #44434d; border-radius: 4px; } + +a:visited code { border-color: #44434d; } + +div.highlighter-rouge { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; overflow-x: auto; background-color: #302d36; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +div.highlighter-rouge div.highlight, div.highlighter-rouge pre.highlight, div.highlighter-rouge code { padding: 0; margin: 0; border: 0; } + +figure.highlight { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; background-color: #302d36; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +figure.highlight pre, figure.highlight code { padding: 0; margin: 0; border: 0; } + +.highlight .table-wrapper { padding: 0; margin: 0; border: 0; box-shadow: none; } + +.highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 11px !important; min-width: 0; padding: 0; background-color: #302d36; border: 0; } + +@media (min-width: 31.25rem) { .highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 12px !important; } } + +.highlight .table-wrapper td.gl { padding-right: 0.75rem; } + +.highlight .table-wrapper pre { margin: 0; line-height: 2; } + +.highlight .c { color: #586e75; } + +.highlight .err { color: #93a1a1; } + +.highlight .g { color: #93a1a1; } + +.highlight .k { color: #859900; } + +.highlight .l { color: #93a1a1; } + +.highlight .n { color: #93a1a1; } + +.highlight .o { color: #859900; } + +.highlight .x { color: #cb4b16; } + +.highlight .p { color: #93a1a1; } + +.highlight .cm { color: #586e75; } + +.highlight .cp { color: #859900; } + +.highlight .c1 { color: #586e75; } + +.highlight .cs { color: #859900; } + +.highlight .gd { color: #2aa198; } + +.highlight .ge { font-style: italic; color: #93a1a1; } + +.highlight .gr { color: #dc322f; } + +.highlight .gh { color: #cb4b16; } + +.highlight .gi { color: #859900; } + +.highlight .go { color: #93a1a1; } + +.highlight .gp { color: #93a1a1; } + +.highlight .gs { font-weight: bold; color: #93a1a1; } + +.highlight .gu { color: #cb4b16; } + +.highlight .gt { color: #93a1a1; } + +.highlight .kc { color: #cb4b16; } + +.highlight .kd { color: #268bd2; } + +.highlight .kn { color: #859900; } + +.highlight .kp { color: #859900; } + +.highlight .kr { color: #268bd2; } + +.highlight .kt { color: #dc322f; } + +.highlight .ld { color: #93a1a1; } + +.highlight .m { color: #2aa198; } + +.highlight .s { color: #2aa198; } + +.highlight .na { color: #555; } + +.highlight .nb { color: #b58900; } + +.highlight .nc { color: #268bd2; } + +.highlight .no { color: #cb4b16; } + +.highlight .nd { color: #268bd2; } + +.highlight .ni { color: #cb4b16; } + +.highlight .ne { color: #cb4b16; } + +.highlight .nf { color: #268bd2; } + +.highlight .nl { color: #555; } + +.highlight .nn { color: #93a1a1; } + +.highlight .nx { color: #555; } + +.highlight .py { color: #93a1a1; } + +.highlight .nt { color: #268bd2; } + +.highlight .nv { color: #268bd2; } + +.highlight .ow { color: #859900; } + +.highlight .w { color: #93a1a1; } + +.highlight .mf { color: #2aa198; } + +.highlight .mh { color: #2aa198; } + +.highlight .mi { color: #2aa198; } + +.highlight .mo { color: #2aa198; } + +.highlight .sb { color: #586e75; } + +.highlight .sc { color: #2aa198; } + +.highlight .sd { color: #93a1a1; } + +.highlight .s2 { color: #2aa198; } + +.highlight .se { color: #cb4b16; } + +.highlight .sh { color: #93a1a1; } + +.highlight .si { color: #2aa198; } + +.highlight .sx { color: #2aa198; } + +.highlight .sr { color: #dc322f; } + +.highlight .s1 { color: #2aa198; } + +.highlight .ss { color: #2aa198; } + +.highlight .bp { color: #268bd2; } + +.highlight .vc { color: #268bd2; } + +.highlight .vg { color: #268bd2; } + +.highlight .vi { color: #268bd2; } + +.highlight .il { color: #2aa198; } + +.code-example { padding: 0.75rem; margin-bottom: 0.75rem; overflow: auto; border: 1px solid #44434d; border-radius: 4px; } + +.code-example + .highlighter-rouge, .code-example + figure.highlight { position: relative; margin-top: -1rem; border-right: 1px solid #44434d; border-bottom: 1px solid #44434d; border-left: 1px solid #44434d; border-top-left-radius: 0; border-top-right-radius: 0; } + +.text-grey-dk-000 { color: #959396 !important; } + +.text-grey-dk-100 { color: #5c5962 !important; } + +.text-grey-dk-200 { color: #44434d !important; } + +.text-grey-dk-250 { color: #302d36 !important; } + +.text-grey-dk-300 { color: #27262b !important; } + +.text-grey-lt-000 { color: #f5f6fa !important; } + +.text-grey-lt-100 { color: #eeebee !important; } + +.text-grey-lt-200 { color: #ecebed !important; } + +.text-grey-lt-300 { color: #e6e1e8 !important; } + +.text-blue-000 { color: #2c84fa !important; } + +.text-blue-100 { color: #2869e6 !important; } + +.text-blue-200 { color: #264caf !important; } + +.text-blue-300 { color: #183385 !important; } + +.text-green-000 { color: #41d693 !important; } + +.text-green-100 { color: #11b584 !important; } + +.text-green-200 { color: #009c7b !important; } + +.text-green-300 { color: #026e57 !important; } + +.text-purple-000 { color: #7253ed !important; } + +.text-purple-100 { color: #5e41d0 !important; } + +.text-purple-200 { color: #4e26af !important; } + +.text-purple-300 { color: #381885 !important; } + +.text-yellow-000 { color: #ffeb82 !important; } + +.text-yellow-100 { color: #fadf50 !important; } + +.text-yellow-200 { color: #f7d12e !important; } + +.text-yellow-300 { color: #e7af06 !important; } + +.text-red-000 { color: #f77e7e !important; } + +.text-red-100 { color: #f96e65 !important; } + +.text-red-200 { color: #e94c4c !important; } + +.text-red-300 { color: #dd2e2e !important; } + +.bg-grey-dk-000 { background-color: #959396 !important; } + +.bg-grey-dk-100 { background-color: #5c5962 !important; } + +.bg-grey-dk-200 { background-color: #44434d !important; } + +.bg-grey-dk-250 { background-color: #302d36 !important; } + +.bg-grey-dk-300 { background-color: #27262b !important; } + +.bg-grey-lt-000 { background-color: #f5f6fa !important; } + +.bg-grey-lt-100 { background-color: #eeebee !important; } + +.bg-grey-lt-200 { background-color: #ecebed !important; } + +.bg-grey-lt-300 { background-color: #e6e1e8 !important; } + +.bg-blue-000 { background-color: #2c84fa !important; } + +.bg-blue-100 { background-color: #2869e6 !important; } + +.bg-blue-200 { background-color: #264caf !important; } + +.bg-blue-300 { background-color: #183385 !important; } + +.bg-green-000 { background-color: #41d693 !important; } + +.bg-green-100 { background-color: #11b584 !important; } + +.bg-green-200 { background-color: #009c7b !important; } + +.bg-green-300 { background-color: #026e57 !important; } + +.bg-purple-000 { background-color: #7253ed !important; } + +.bg-purple-100 { background-color: #5e41d0 !important; } + +.bg-purple-200 { background-color: #4e26af !important; } + +.bg-purple-300 { background-color: #381885 !important; } + +.bg-yellow-000 { background-color: #ffeb82 !important; } + +.bg-yellow-100 { background-color: #fadf50 !important; } + +.bg-yellow-200 { background-color: #f7d12e !important; } + +.bg-yellow-300 { background-color: #e7af06 !important; } + +.bg-red-000 { background-color: #f77e7e !important; } + +.bg-red-100 { background-color: #f96e65 !important; } + +.bg-red-200 { background-color: #e94c4c !important; } + +.bg-red-300 { background-color: #dd2e2e !important; } + +.d-block { display: block !important; } + +.d-flex { display: flex !important; } + +.d-inline { display: inline !important; } + +.d-inline-block { display: inline-block !important; } + +.d-none { display: none !important; } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +.float-left { float: left !important; } + +.float-right { float: right !important; } + +.flex-justify-start { justify-content: flex-start !important; } + +.flex-justify-end { justify-content: flex-end !important; } + +.flex-justify-between { justify-content: space-between !important; } + +.flex-justify-around { justify-content: space-around !important; } + +.v-align-baseline { vertical-align: baseline !important; } + +.v-align-bottom { vertical-align: bottom !important; } + +.v-align-middle { vertical-align: middle !important; } + +.v-align-text-bottom { vertical-align: text-bottom !important; } + +.v-align-text-top { vertical-align: text-top !important; } + +.v-align-top { vertical-align: top !important; } + +.fs-1 { font-size: 9px !important; } + +@media (min-width: 31.25rem) { .fs-1 { font-size: 10px !important; } } + +.fs-2 { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .fs-2 { font-size: 12px !important; } } + +.fs-3 { font-size: 12px !important; } + +@media (min-width: 31.25rem) { .fs-3 { font-size: 14px !important; } } + +.fs-4 { font-size: 14px !important; } + +@media (min-width: 31.25rem) { .fs-4 { font-size: 16px !important; } } + +.fs-5 { font-size: 16px !important; } + +@media (min-width: 31.25rem) { .fs-5 { font-size: 18px !important; } } + +.fs-6 { font-size: 18px !important; } + +@media (min-width: 31.25rem) { .fs-6 { font-size: 24px !important; line-height: 1.25; } } + +.fs-7 { font-size: 24px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-7 { font-size: 32px !important; } } + +.fs-8 { font-size: 32px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-8 { font-size: 36px !important; } } + +.fs-9 { font-size: 36px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-9 { font-size: 42px !important; } } + +.fs-10 { font-size: 42px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-10 { font-size: 48px !important; } } + +.fw-300 { font-weight: 300 !important; } + +.fw-400 { font-weight: 400 !important; } + +.fw-500 { font-weight: 500 !important; } + +.fw-700 { font-weight: 700 !important; } + +.lh-0 { line-height: 0 !important; } + +.lh-default { line-height: 1.4; } + +.lh-tight { line-height: 1.25; } + +.ls-5 { letter-spacing: 0.05em !important; } + +.ls-10 { letter-spacing: 0.1em !important; } + +.ls-0 { letter-spacing: 0 !important; } + +.text-uppercase { text-transform: uppercase !important; } + +.list-style-none { padding: 0 !important; margin: 0 !important; list-style: none !important; } + +.list-style-none li::before { display: none !important; } + +.mx-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-0 { margin: 0 !important; } + +.mt-0 { margin-top: 0 !important; } + +.mr-0 { margin-right: 0 !important; } + +.mb-0 { margin-bottom: 0 !important; } + +.ml-0 { margin-left: 0 !important; } + +.mx-0 { margin-right: 0 !important; margin-left: 0 !important; } + +.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + +.mxn-0 { margin-right: -0 !important; margin-left: -0 !important; } + +.mx-0-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-1 { margin: 0.25rem !important; } + +.mt-1 { margin-top: 0.25rem !important; } + +.mr-1 { margin-right: 0.25rem !important; } + +.mb-1 { margin-bottom: 0.25rem !important; } + +.ml-1 { margin-left: 0.25rem !important; } + +.mx-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } + +.my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } + +.mxn-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } + +.mx-1-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-2 { margin: 0.5rem !important; } + +.mt-2 { margin-top: 0.5rem !important; } + +.mr-2 { margin-right: 0.5rem !important; } + +.mb-2 { margin-bottom: 0.5rem !important; } + +.ml-2 { margin-left: 0.5rem !important; } + +.mx-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } + +.my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } + +.mxn-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } + +.mx-2-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-3 { margin: 0.75rem !important; } + +.mt-3 { margin-top: 0.75rem !important; } + +.mr-3 { margin-right: 0.75rem !important; } + +.mb-3 { margin-bottom: 0.75rem !important; } + +.ml-3 { margin-left: 0.75rem !important; } + +.mx-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } + +.my-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } + +.mxn-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } + +.mx-3-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-4 { margin: 1rem !important; } + +.mt-4 { margin-top: 1rem !important; } + +.mr-4 { margin-right: 1rem !important; } + +.mb-4 { margin-bottom: 1rem !important; } + +.ml-4 { margin-left: 1rem !important; } + +.mx-4 { margin-right: 1rem !important; margin-left: 1rem !important; } + +.my-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } + +.mxn-4 { margin-right: -1rem !important; margin-left: -1rem !important; } + +.mx-4-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-5 { margin: 1.5rem !important; } + +.mt-5 { margin-top: 1.5rem !important; } + +.mr-5 { margin-right: 1.5rem !important; } + +.mb-5 { margin-bottom: 1.5rem !important; } + +.ml-5 { margin-left: 1.5rem !important; } + +.mx-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } + +.my-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } + +.mxn-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } + +.mx-5-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-6 { margin: 2rem !important; } + +.mt-6 { margin-top: 2rem !important; } + +.mr-6 { margin-right: 2rem !important; } + +.mb-6 { margin-bottom: 2rem !important; } + +.ml-6 { margin-left: 2rem !important; } + +.mx-6 { margin-right: 2rem !important; margin-left: 2rem !important; } + +.my-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } + +.mxn-6 { margin-right: -2rem !important; margin-left: -2rem !important; } + +.mx-6-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-7 { margin: 2.5rem !important; } + +.mt-7 { margin-top: 2.5rem !important; } + +.mr-7 { margin-right: 2.5rem !important; } + +.mb-7 { margin-bottom: 2.5rem !important; } + +.ml-7 { margin-left: 2.5rem !important; } + +.mx-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } + +.my-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } + +.mxn-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } + +.mx-7-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-8 { margin: 3rem !important; } + +.mt-8 { margin-top: 3rem !important; } + +.mr-8 { margin-right: 3rem !important; } + +.mb-8 { margin-bottom: 3rem !important; } + +.ml-8 { margin-left: 3rem !important; } + +.mx-8 { margin-right: 3rem !important; margin-left: 3rem !important; } + +.my-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } + +.mxn-8 { margin-right: -3rem !important; margin-left: -3rem !important; } + +.mx-8-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-9 { margin: 3.5rem !important; } + +.mt-9 { margin-top: 3.5rem !important; } + +.mr-9 { margin-right: 3.5rem !important; } + +.mb-9 { margin-bottom: 3.5rem !important; } + +.ml-9 { margin-left: 3.5rem !important; } + +.mx-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } + +.my-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } + +.mxn-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } + +.mx-9-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-10 { margin: 4rem !important; } + +.mt-10 { margin-top: 4rem !important; } + +.mr-10 { margin-right: 4rem !important; } + +.mb-10 { margin-bottom: 4rem !important; } + +.ml-10 { margin-left: 4rem !important; } + +.mx-10 { margin-right: 4rem !important; margin-left: 4rem !important; } + +.my-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } + +.mxn-10 { margin-right: -4rem !important; margin-left: -4rem !important; } + +.mx-10-auto { margin-right: auto !important; margin-left: auto !important; } + +@media (min-width: 20rem) { .m-xs-0 { margin: 0 !important; } .mt-xs-0 { margin-top: 0 !important; } .mr-xs-0 { margin-right: 0 !important; } .mb-xs-0 { margin-bottom: 0 !important; } .ml-xs-0 { margin-left: 0 !important; } .mx-xs-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xs-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xs-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 20rem) { .m-xs-1 { margin: 0.25rem !important; } .mt-xs-1 { margin-top: 0.25rem !important; } .mr-xs-1 { margin-right: 0.25rem !important; } .mb-xs-1 { margin-bottom: 0.25rem !important; } .ml-xs-1 { margin-left: 0.25rem !important; } .mx-xs-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xs-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xs-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 20rem) { .m-xs-2 { margin: 0.5rem !important; } .mt-xs-2 { margin-top: 0.5rem !important; } .mr-xs-2 { margin-right: 0.5rem !important; } .mb-xs-2 { margin-bottom: 0.5rem !important; } .ml-xs-2 { margin-left: 0.5rem !important; } .mx-xs-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xs-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xs-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-3 { margin: 0.75rem !important; } .mt-xs-3 { margin-top: 0.75rem !important; } .mr-xs-3 { margin-right: 0.75rem !important; } .mb-xs-3 { margin-bottom: 0.75rem !important; } .ml-xs-3 { margin-left: 0.75rem !important; } .mx-xs-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xs-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xs-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 20rem) { .m-xs-4 { margin: 1rem !important; } .mt-xs-4 { margin-top: 1rem !important; } .mr-xs-4 { margin-right: 1rem !important; } .mb-xs-4 { margin-bottom: 1rem !important; } .ml-xs-4 { margin-left: 1rem !important; } .mx-xs-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xs-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xs-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 20rem) { .m-xs-5 { margin: 1.5rem !important; } .mt-xs-5 { margin-top: 1.5rem !important; } .mr-xs-5 { margin-right: 1.5rem !important; } .mb-xs-5 { margin-bottom: 1.5rem !important; } .ml-xs-5 { margin-left: 1.5rem !important; } .mx-xs-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xs-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xs-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-6 { margin: 2rem !important; } .mt-xs-6 { margin-top: 2rem !important; } .mr-xs-6 { margin-right: 2rem !important; } .mb-xs-6 { margin-bottom: 2rem !important; } .ml-xs-6 { margin-left: 2rem !important; } .mx-xs-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xs-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xs-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 20rem) { .m-xs-7 { margin: 2.5rem !important; } .mt-xs-7 { margin-top: 2.5rem !important; } .mr-xs-7 { margin-right: 2.5rem !important; } .mb-xs-7 { margin-bottom: 2.5rem !important; } .ml-xs-7 { margin-left: 2.5rem !important; } .mx-xs-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xs-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xs-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-8 { margin: 3rem !important; } .mt-xs-8 { margin-top: 3rem !important; } .mr-xs-8 { margin-right: 3rem !important; } .mb-xs-8 { margin-bottom: 3rem !important; } .ml-xs-8 { margin-left: 3rem !important; } .mx-xs-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xs-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xs-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 20rem) { .m-xs-9 { margin: 3.5rem !important; } .mt-xs-9 { margin-top: 3.5rem !important; } .mr-xs-9 { margin-right: 3.5rem !important; } .mb-xs-9 { margin-bottom: 3.5rem !important; } .ml-xs-9 { margin-left: 3.5rem !important; } .mx-xs-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xs-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xs-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-10 { margin: 4rem !important; } .mt-xs-10 { margin-top: 4rem !important; } .mr-xs-10 { margin-right: 4rem !important; } .mb-xs-10 { margin-bottom: 4rem !important; } .ml-xs-10 { margin-left: 4rem !important; } .mx-xs-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xs-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xs-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-0 { margin: 0 !important; } .mt-sm-0 { margin-top: 0 !important; } .mr-sm-0 { margin-right: 0 !important; } .mb-sm-0 { margin-bottom: 0 !important; } .ml-sm-0 { margin-left: 0 !important; } .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-sm-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 31.25rem) { .m-sm-1 { margin: 0.25rem !important; } .mt-sm-1 { margin-top: 0.25rem !important; } .mr-sm-1 { margin-right: 0.25rem !important; } .mb-sm-1 { margin-bottom: 0.25rem !important; } .ml-sm-1 { margin-left: 0.25rem !important; } .mx-sm-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-sm-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-sm-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-2 { margin: 0.5rem !important; } .mt-sm-2 { margin-top: 0.5rem !important; } .mr-sm-2 { margin-right: 0.5rem !important; } .mb-sm-2 { margin-bottom: 0.5rem !important; } .ml-sm-2 { margin-left: 0.5rem !important; } .mx-sm-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-sm-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-sm-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-3 { margin: 0.75rem !important; } .mt-sm-3 { margin-top: 0.75rem !important; } .mr-sm-3 { margin-right: 0.75rem !important; } .mb-sm-3 { margin-bottom: 0.75rem !important; } .ml-sm-3 { margin-left: 0.75rem !important; } .mx-sm-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-sm-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-sm-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-4 { margin: 1rem !important; } .mt-sm-4 { margin-top: 1rem !important; } .mr-sm-4 { margin-right: 1rem !important; } .mb-sm-4 { margin-bottom: 1rem !important; } .ml-sm-4 { margin-left: 1rem !important; } .mx-sm-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-sm-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-sm-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-5 { margin: 1.5rem !important; } .mt-sm-5 { margin-top: 1.5rem !important; } .mr-sm-5 { margin-right: 1.5rem !important; } .mb-sm-5 { margin-bottom: 1.5rem !important; } .ml-sm-5 { margin-left: 1.5rem !important; } .mx-sm-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-sm-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-sm-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-6 { margin: 2rem !important; } .mt-sm-6 { margin-top: 2rem !important; } .mr-sm-6 { margin-right: 2rem !important; } .mb-sm-6 { margin-bottom: 2rem !important; } .ml-sm-6 { margin-left: 2rem !important; } .mx-sm-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-sm-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-sm-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-7 { margin: 2.5rem !important; } .mt-sm-7 { margin-top: 2.5rem !important; } .mr-sm-7 { margin-right: 2.5rem !important; } .mb-sm-7 { margin-bottom: 2.5rem !important; } .ml-sm-7 { margin-left: 2.5rem !important; } .mx-sm-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-sm-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-sm-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-8 { margin: 3rem !important; } .mt-sm-8 { margin-top: 3rem !important; } .mr-sm-8 { margin-right: 3rem !important; } .mb-sm-8 { margin-bottom: 3rem !important; } .ml-sm-8 { margin-left: 3rem !important; } .mx-sm-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-sm-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-sm-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-9 { margin: 3.5rem !important; } .mt-sm-9 { margin-top: 3.5rem !important; } .mr-sm-9 { margin-right: 3.5rem !important; } .mb-sm-9 { margin-bottom: 3.5rem !important; } .ml-sm-9 { margin-left: 3.5rem !important; } .mx-sm-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-sm-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-sm-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-10 { margin: 4rem !important; } .mt-sm-10 { margin-top: 4rem !important; } .mr-sm-10 { margin-right: 4rem !important; } .mb-sm-10 { margin-bottom: 4rem !important; } .ml-sm-10 { margin-left: 4rem !important; } .mx-sm-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-sm-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-sm-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 50rem) { .m-md-0 { margin: 0 !important; } .mt-md-0 { margin-top: 0 !important; } .mr-md-0 { margin-right: 0 !important; } .mb-md-0 { margin-bottom: 0 !important; } .ml-md-0 { margin-left: 0 !important; } .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-md-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 50rem) { .m-md-1 { margin: 0.25rem !important; } .mt-md-1 { margin-top: 0.25rem !important; } .mr-md-1 { margin-right: 0.25rem !important; } .mb-md-1 { margin-bottom: 0.25rem !important; } .ml-md-1 { margin-left: 0.25rem !important; } .mx-md-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-md-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-md-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 50rem) { .m-md-2 { margin: 0.5rem !important; } .mt-md-2 { margin-top: 0.5rem !important; } .mr-md-2 { margin-right: 0.5rem !important; } .mb-md-2 { margin-bottom: 0.5rem !important; } .ml-md-2 { margin-left: 0.5rem !important; } .mx-md-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-md-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-md-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 50rem) { .m-md-3 { margin: 0.75rem !important; } .mt-md-3 { margin-top: 0.75rem !important; } .mr-md-3 { margin-right: 0.75rem !important; } .mb-md-3 { margin-bottom: 0.75rem !important; } .ml-md-3 { margin-left: 0.75rem !important; } .mx-md-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-md-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-md-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 50rem) { .m-md-4 { margin: 1rem !important; } .mt-md-4 { margin-top: 1rem !important; } .mr-md-4 { margin-right: 1rem !important; } .mb-md-4 { margin-bottom: 1rem !important; } .ml-md-4 { margin-left: 1rem !important; } .mx-md-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-md-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-md-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 50rem) { .m-md-5 { margin: 1.5rem !important; } .mt-md-5 { margin-top: 1.5rem !important; } .mr-md-5 { margin-right: 1.5rem !important; } .mb-md-5 { margin-bottom: 1.5rem !important; } .ml-md-5 { margin-left: 1.5rem !important; } .mx-md-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-md-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-md-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 50rem) { .m-md-6 { margin: 2rem !important; } .mt-md-6 { margin-top: 2rem !important; } .mr-md-6 { margin-right: 2rem !important; } .mb-md-6 { margin-bottom: 2rem !important; } .ml-md-6 { margin-left: 2rem !important; } .mx-md-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-md-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-md-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 50rem) { .m-md-7 { margin: 2.5rem !important; } .mt-md-7 { margin-top: 2.5rem !important; } .mr-md-7 { margin-right: 2.5rem !important; } .mb-md-7 { margin-bottom: 2.5rem !important; } .ml-md-7 { margin-left: 2.5rem !important; } .mx-md-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-md-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-md-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 50rem) { .m-md-8 { margin: 3rem !important; } .mt-md-8 { margin-top: 3rem !important; } .mr-md-8 { margin-right: 3rem !important; } .mb-md-8 { margin-bottom: 3rem !important; } .ml-md-8 { margin-left: 3rem !important; } .mx-md-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-md-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-md-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 50rem) { .m-md-9 { margin: 3.5rem !important; } .mt-md-9 { margin-top: 3.5rem !important; } .mr-md-9 { margin-right: 3.5rem !important; } .mb-md-9 { margin-bottom: 3.5rem !important; } .ml-md-9 { margin-left: 3.5rem !important; } .mx-md-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-md-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-md-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 50rem) { .m-md-10 { margin: 4rem !important; } .mt-md-10 { margin-top: 4rem !important; } .mr-md-10 { margin-right: 4rem !important; } .mb-md-10 { margin-bottom: 4rem !important; } .ml-md-10 { margin-left: 4rem !important; } .mx-md-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-md-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-md-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-0 { margin: 0 !important; } .mt-lg-0 { margin-top: 0 !important; } .mr-lg-0 { margin-right: 0 !important; } .mb-lg-0 { margin-bottom: 0 !important; } .ml-lg-0 { margin-left: 0 !important; } .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-lg-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 66.5rem) { .m-lg-1 { margin: 0.25rem !important; } .mt-lg-1 { margin-top: 0.25rem !important; } .mr-lg-1 { margin-right: 0.25rem !important; } .mb-lg-1 { margin-bottom: 0.25rem !important; } .ml-lg-1 { margin-left: 0.25rem !important; } .mx-lg-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-lg-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-lg-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-2 { margin: 0.5rem !important; } .mt-lg-2 { margin-top: 0.5rem !important; } .mr-lg-2 { margin-right: 0.5rem !important; } .mb-lg-2 { margin-bottom: 0.5rem !important; } .ml-lg-2 { margin-left: 0.5rem !important; } .mx-lg-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-lg-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-lg-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-3 { margin: 0.75rem !important; } .mt-lg-3 { margin-top: 0.75rem !important; } .mr-lg-3 { margin-right: 0.75rem !important; } .mb-lg-3 { margin-bottom: 0.75rem !important; } .ml-lg-3 { margin-left: 0.75rem !important; } .mx-lg-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-lg-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-lg-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-4 { margin: 1rem !important; } .mt-lg-4 { margin-top: 1rem !important; } .mr-lg-4 { margin-right: 1rem !important; } .mb-lg-4 { margin-bottom: 1rem !important; } .ml-lg-4 { margin-left: 1rem !important; } .mx-lg-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-lg-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-lg-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-5 { margin: 1.5rem !important; } .mt-lg-5 { margin-top: 1.5rem !important; } .mr-lg-5 { margin-right: 1.5rem !important; } .mb-lg-5 { margin-bottom: 1.5rem !important; } .ml-lg-5 { margin-left: 1.5rem !important; } .mx-lg-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-lg-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-lg-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-6 { margin: 2rem !important; } .mt-lg-6 { margin-top: 2rem !important; } .mr-lg-6 { margin-right: 2rem !important; } .mb-lg-6 { margin-bottom: 2rem !important; } .ml-lg-6 { margin-left: 2rem !important; } .mx-lg-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-lg-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-lg-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-7 { margin: 2.5rem !important; } .mt-lg-7 { margin-top: 2.5rem !important; } .mr-lg-7 { margin-right: 2.5rem !important; } .mb-lg-7 { margin-bottom: 2.5rem !important; } .ml-lg-7 { margin-left: 2.5rem !important; } .mx-lg-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-lg-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-lg-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-8 { margin: 3rem !important; } .mt-lg-8 { margin-top: 3rem !important; } .mr-lg-8 { margin-right: 3rem !important; } .mb-lg-8 { margin-bottom: 3rem !important; } .ml-lg-8 { margin-left: 3rem !important; } .mx-lg-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-lg-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-lg-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-9 { margin: 3.5rem !important; } .mt-lg-9 { margin-top: 3.5rem !important; } .mr-lg-9 { margin-right: 3.5rem !important; } .mb-lg-9 { margin-bottom: 3.5rem !important; } .ml-lg-9 { margin-left: 3.5rem !important; } .mx-lg-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-lg-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-lg-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-10 { margin: 4rem !important; } .mt-lg-10 { margin-top: 4rem !important; } .mr-lg-10 { margin-right: 4rem !important; } .mb-lg-10 { margin-bottom: 4rem !important; } .ml-lg-10 { margin-left: 4rem !important; } .mx-lg-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-lg-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-lg-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-0 { margin: 0 !important; } .mt-xl-0 { margin-top: 0 !important; } .mr-xl-0 { margin-right: 0 !important; } .mb-xl-0 { margin-bottom: 0 !important; } .ml-xl-0 { margin-left: 0 !important; } .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xl-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 87.5rem) { .m-xl-1 { margin: 0.25rem !important; } .mt-xl-1 { margin-top: 0.25rem !important; } .mr-xl-1 { margin-right: 0.25rem !important; } .mb-xl-1 { margin-bottom: 0.25rem !important; } .ml-xl-1 { margin-left: 0.25rem !important; } .mx-xl-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xl-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-2 { margin: 0.5rem !important; } .mt-xl-2 { margin-top: 0.5rem !important; } .mr-xl-2 { margin-right: 0.5rem !important; } .mb-xl-2 { margin-bottom: 0.5rem !important; } .ml-xl-2 { margin-left: 0.5rem !important; } .mx-xl-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xl-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-3 { margin: 0.75rem !important; } .mt-xl-3 { margin-top: 0.75rem !important; } .mr-xl-3 { margin-right: 0.75rem !important; } .mb-xl-3 { margin-bottom: 0.75rem !important; } .ml-xl-3 { margin-left: 0.75rem !important; } .mx-xl-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xl-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xl-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-4 { margin: 1rem !important; } .mt-xl-4 { margin-top: 1rem !important; } .mr-xl-4 { margin-right: 1rem !important; } .mb-xl-4 { margin-bottom: 1rem !important; } .ml-xl-4 { margin-left: 1rem !important; } .mx-xl-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xl-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xl-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-5 { margin: 1.5rem !important; } .mt-xl-5 { margin-top: 1.5rem !important; } .mr-xl-5 { margin-right: 1.5rem !important; } .mb-xl-5 { margin-bottom: 1.5rem !important; } .ml-xl-5 { margin-left: 1.5rem !important; } .mx-xl-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xl-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xl-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-6 { margin: 2rem !important; } .mt-xl-6 { margin-top: 2rem !important; } .mr-xl-6 { margin-right: 2rem !important; } .mb-xl-6 { margin-bottom: 2rem !important; } .ml-xl-6 { margin-left: 2rem !important; } .mx-xl-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xl-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xl-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-7 { margin: 2.5rem !important; } .mt-xl-7 { margin-top: 2.5rem !important; } .mr-xl-7 { margin-right: 2.5rem !important; } .mb-xl-7 { margin-bottom: 2.5rem !important; } .ml-xl-7 { margin-left: 2.5rem !important; } .mx-xl-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xl-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xl-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-8 { margin: 3rem !important; } .mt-xl-8 { margin-top: 3rem !important; } .mr-xl-8 { margin-right: 3rem !important; } .mb-xl-8 { margin-bottom: 3rem !important; } .ml-xl-8 { margin-left: 3rem !important; } .mx-xl-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xl-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xl-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-9 { margin: 3.5rem !important; } .mt-xl-9 { margin-top: 3.5rem !important; } .mr-xl-9 { margin-right: 3.5rem !important; } .mb-xl-9 { margin-bottom: 3.5rem !important; } .ml-xl-9 { margin-left: 3.5rem !important; } .mx-xl-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xl-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xl-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-10 { margin: 4rem !important; } .mt-xl-10 { margin-top: 4rem !important; } .mr-xl-10 { margin-right: 4rem !important; } .mb-xl-10 { margin-bottom: 4rem !important; } .ml-xl-10 { margin-left: 4rem !important; } .mx-xl-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xl-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xl-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +.p-0 { padding: 0 !important; } + +.pt-0 { padding-top: 0 !important; } + +.pr-0 { padding-right: 0 !important; } + +.pb-0 { padding-bottom: 0 !important; } + +.pl-0 { padding-left: 0 !important; } + +.px-0 { padding-right: 0 !important; padding-left: 0 !important; } + +.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + +.p-1 { padding: 0.25rem !important; } + +.pt-1 { padding-top: 0.25rem !important; } + +.pr-1 { padding-right: 0.25rem !important; } + +.pb-1 { padding-bottom: 0.25rem !important; } + +.pl-1 { padding-left: 0.25rem !important; } + +.px-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } + +.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } + +.p-2 { padding: 0.5rem !important; } + +.pt-2 { padding-top: 0.5rem !important; } + +.pr-2 { padding-right: 0.5rem !important; } + +.pb-2 { padding-bottom: 0.5rem !important; } + +.pl-2 { padding-left: 0.5rem !important; } + +.px-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } + +.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } + +.p-3 { padding: 0.75rem !important; } + +.pt-3 { padding-top: 0.75rem !important; } + +.pr-3 { padding-right: 0.75rem !important; } + +.pb-3 { padding-bottom: 0.75rem !important; } + +.pl-3 { padding-left: 0.75rem !important; } + +.px-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } + +.py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } + +.p-4 { padding: 1rem !important; } + +.pt-4 { padding-top: 1rem !important; } + +.pr-4 { padding-right: 1rem !important; } + +.pb-4 { padding-bottom: 1rem !important; } + +.pl-4 { padding-left: 1rem !important; } + +.px-4 { padding-right: 1rem !important; padding-left: 1rem !important; } + +.py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } + +.p-5 { padding: 1.5rem !important; } + +.pt-5 { padding-top: 1.5rem !important; } + +.pr-5 { padding-right: 1.5rem !important; } + +.pb-5 { padding-bottom: 1.5rem !important; } + +.pl-5 { padding-left: 1.5rem !important; } + +.px-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } + +.py-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } + +.p-6 { padding: 2rem !important; } + +.pt-6 { padding-top: 2rem !important; } + +.pr-6 { padding-right: 2rem !important; } + +.pb-6 { padding-bottom: 2rem !important; } + +.pl-6 { padding-left: 2rem !important; } + +.px-6 { padding-right: 2rem !important; padding-left: 2rem !important; } + +.py-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } + +.p-7 { padding: 2.5rem !important; } + +.pt-7 { padding-top: 2.5rem !important; } + +.pr-7 { padding-right: 2.5rem !important; } + +.pb-7 { padding-bottom: 2.5rem !important; } + +.pl-7 { padding-left: 2.5rem !important; } + +.px-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } + +.py-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } + +.p-8 { padding: 3rem !important; } + +.pt-8 { padding-top: 3rem !important; } + +.pr-8 { padding-right: 3rem !important; } + +.pb-8 { padding-bottom: 3rem !important; } + +.pl-8 { padding-left: 3rem !important; } + +.px-8 { padding-right: 3rem !important; padding-left: 3rem !important; } + +.py-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } + +.p-9 { padding: 3.5rem !important; } + +.pt-9 { padding-top: 3.5rem !important; } + +.pr-9 { padding-right: 3.5rem !important; } + +.pb-9 { padding-bottom: 3.5rem !important; } + +.pl-9 { padding-left: 3.5rem !important; } + +.px-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } + +.py-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } + +.p-10 { padding: 4rem !important; } + +.pt-10 { padding-top: 4rem !important; } + +.pr-10 { padding-right: 4rem !important; } + +.pb-10 { padding-bottom: 4rem !important; } + +.pl-10 { padding-left: 4rem !important; } + +.px-10 { padding-right: 4rem !important; padding-left: 4rem !important; } + +.py-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } + +@media (min-width: 20rem) { .p-xs-0 { padding: 0 !important; } .pt-xs-0 { padding-top: 0 !important; } .pr-xs-0 { padding-right: 0 !important; } .pb-xs-0 { padding-bottom: 0 !important; } .pl-xs-0 { padding-left: 0 !important; } .px-xs-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xs-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xs-1 { padding: 0.25rem !important; } .pt-xs-1 { padding-top: 0.25rem !important; } .pr-xs-1 { padding-right: 0.25rem !important; } .pb-xs-1 { padding-bottom: 0.25rem !important; } .pl-xs-1 { padding-left: 0.25rem !important; } .px-xs-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xs-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xs-2 { padding: 0.5rem !important; } .pt-xs-2 { padding-top: 0.5rem !important; } .pr-xs-2 { padding-right: 0.5rem !important; } .pb-xs-2 { padding-bottom: 0.5rem !important; } .pl-xs-2 { padding-left: 0.5rem !important; } .px-xs-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xs-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xs-3 { padding: 0.75rem !important; } .pt-xs-3 { padding-top: 0.75rem !important; } .pr-xs-3 { padding-right: 0.75rem !important; } .pb-xs-3 { padding-bottom: 0.75rem !important; } .pl-xs-3 { padding-left: 0.75rem !important; } .px-xs-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xs-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xs-4 { padding: 1rem !important; } .pt-xs-4 { padding-top: 1rem !important; } .pr-xs-4 { padding-right: 1rem !important; } .pb-xs-4 { padding-bottom: 1rem !important; } .pl-xs-4 { padding-left: 1rem !important; } .px-xs-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xs-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xs-5 { padding: 1.5rem !important; } .pt-xs-5 { padding-top: 1.5rem !important; } .pr-xs-5 { padding-right: 1.5rem !important; } .pb-xs-5 { padding-bottom: 1.5rem !important; } .pl-xs-5 { padding-left: 1.5rem !important; } .px-xs-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xs-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xs-6 { padding: 2rem !important; } .pt-xs-6 { padding-top: 2rem !important; } .pr-xs-6 { padding-right: 2rem !important; } .pb-xs-6 { padding-bottom: 2rem !important; } .pl-xs-6 { padding-left: 2rem !important; } .px-xs-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xs-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xs-7 { padding: 2.5rem !important; } .pt-xs-7 { padding-top: 2.5rem !important; } .pr-xs-7 { padding-right: 2.5rem !important; } .pb-xs-7 { padding-bottom: 2.5rem !important; } .pl-xs-7 { padding-left: 2.5rem !important; } .px-xs-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xs-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xs-8 { padding: 3rem !important; } .pt-xs-8 { padding-top: 3rem !important; } .pr-xs-8 { padding-right: 3rem !important; } .pb-xs-8 { padding-bottom: 3rem !important; } .pl-xs-8 { padding-left: 3rem !important; } .px-xs-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xs-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xs-9 { padding: 3.5rem !important; } .pt-xs-9 { padding-top: 3.5rem !important; } .pr-xs-9 { padding-right: 3.5rem !important; } .pb-xs-9 { padding-bottom: 3.5rem !important; } .pl-xs-9 { padding-left: 3.5rem !important; } .px-xs-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xs-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xs-10 { padding: 4rem !important; } .pt-xs-10 { padding-top: 4rem !important; } .pr-xs-10 { padding-right: 4rem !important; } .pb-xs-10 { padding-bottom: 4rem !important; } .pl-xs-10 { padding-left: 4rem !important; } .px-xs-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xs-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 31.25rem) { .p-sm-0 { padding: 0 !important; } .pt-sm-0 { padding-top: 0 !important; } .pr-sm-0 { padding-right: 0 !important; } .pb-sm-0 { padding-bottom: 0 !important; } .pl-sm-0 { padding-left: 0 !important; } .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-sm-1 { padding: 0.25rem !important; } .pt-sm-1 { padding-top: 0.25rem !important; } .pr-sm-1 { padding-right: 0.25rem !important; } .pb-sm-1 { padding-bottom: 0.25rem !important; } .pl-sm-1 { padding-left: 0.25rem !important; } .px-sm-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-sm-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-sm-2 { padding: 0.5rem !important; } .pt-sm-2 { padding-top: 0.5rem !important; } .pr-sm-2 { padding-right: 0.5rem !important; } .pb-sm-2 { padding-bottom: 0.5rem !important; } .pl-sm-2 { padding-left: 0.5rem !important; } .px-sm-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-sm-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-sm-3 { padding: 0.75rem !important; } .pt-sm-3 { padding-top: 0.75rem !important; } .pr-sm-3 { padding-right: 0.75rem !important; } .pb-sm-3 { padding-bottom: 0.75rem !important; } .pl-sm-3 { padding-left: 0.75rem !important; } .px-sm-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-sm-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-sm-4 { padding: 1rem !important; } .pt-sm-4 { padding-top: 1rem !important; } .pr-sm-4 { padding-right: 1rem !important; } .pb-sm-4 { padding-bottom: 1rem !important; } .pl-sm-4 { padding-left: 1rem !important; } .px-sm-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-sm-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-sm-5 { padding: 1.5rem !important; } .pt-sm-5 { padding-top: 1.5rem !important; } .pr-sm-5 { padding-right: 1.5rem !important; } .pb-sm-5 { padding-bottom: 1.5rem !important; } .pl-sm-5 { padding-left: 1.5rem !important; } .px-sm-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-sm-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-sm-6 { padding: 2rem !important; } .pt-sm-6 { padding-top: 2rem !important; } .pr-sm-6 { padding-right: 2rem !important; } .pb-sm-6 { padding-bottom: 2rem !important; } .pl-sm-6 { padding-left: 2rem !important; } .px-sm-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-sm-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-sm-7 { padding: 2.5rem !important; } .pt-sm-7 { padding-top: 2.5rem !important; } .pr-sm-7 { padding-right: 2.5rem !important; } .pb-sm-7 { padding-bottom: 2.5rem !important; } .pl-sm-7 { padding-left: 2.5rem !important; } .px-sm-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-sm-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-sm-8 { padding: 3rem !important; } .pt-sm-8 { padding-top: 3rem !important; } .pr-sm-8 { padding-right: 3rem !important; } .pb-sm-8 { padding-bottom: 3rem !important; } .pl-sm-8 { padding-left: 3rem !important; } .px-sm-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-sm-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-sm-9 { padding: 3.5rem !important; } .pt-sm-9 { padding-top: 3.5rem !important; } .pr-sm-9 { padding-right: 3.5rem !important; } .pb-sm-9 { padding-bottom: 3.5rem !important; } .pl-sm-9 { padding-left: 3.5rem !important; } .px-sm-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-sm-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-sm-10 { padding: 4rem !important; } .pt-sm-10 { padding-top: 4rem !important; } .pr-sm-10 { padding-right: 4rem !important; } .pb-sm-10 { padding-bottom: 4rem !important; } .pl-sm-10 { padding-left: 4rem !important; } .px-sm-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-sm-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 50rem) { .p-md-0 { padding: 0 !important; } .pt-md-0 { padding-top: 0 !important; } .pr-md-0 { padding-right: 0 !important; } .pb-md-0 { padding-bottom: 0 !important; } .pl-md-0 { padding-left: 0 !important; } .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-md-1 { padding: 0.25rem !important; } .pt-md-1 { padding-top: 0.25rem !important; } .pr-md-1 { padding-right: 0.25rem !important; } .pb-md-1 { padding-bottom: 0.25rem !important; } .pl-md-1 { padding-left: 0.25rem !important; } .px-md-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-md-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-md-2 { padding: 0.5rem !important; } .pt-md-2 { padding-top: 0.5rem !important; } .pr-md-2 { padding-right: 0.5rem !important; } .pb-md-2 { padding-bottom: 0.5rem !important; } .pl-md-2 { padding-left: 0.5rem !important; } .px-md-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-md-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-md-3 { padding: 0.75rem !important; } .pt-md-3 { padding-top: 0.75rem !important; } .pr-md-3 { padding-right: 0.75rem !important; } .pb-md-3 { padding-bottom: 0.75rem !important; } .pl-md-3 { padding-left: 0.75rem !important; } .px-md-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-md-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-md-4 { padding: 1rem !important; } .pt-md-4 { padding-top: 1rem !important; } .pr-md-4 { padding-right: 1rem !important; } .pb-md-4 { padding-bottom: 1rem !important; } .pl-md-4 { padding-left: 1rem !important; } .px-md-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-md-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-md-5 { padding: 1.5rem !important; } .pt-md-5 { padding-top: 1.5rem !important; } .pr-md-5 { padding-right: 1.5rem !important; } .pb-md-5 { padding-bottom: 1.5rem !important; } .pl-md-5 { padding-left: 1.5rem !important; } .px-md-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-md-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-md-6 { padding: 2rem !important; } .pt-md-6 { padding-top: 2rem !important; } .pr-md-6 { padding-right: 2rem !important; } .pb-md-6 { padding-bottom: 2rem !important; } .pl-md-6 { padding-left: 2rem !important; } .px-md-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-md-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-md-7 { padding: 2.5rem !important; } .pt-md-7 { padding-top: 2.5rem !important; } .pr-md-7 { padding-right: 2.5rem !important; } .pb-md-7 { padding-bottom: 2.5rem !important; } .pl-md-7 { padding-left: 2.5rem !important; } .px-md-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-md-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-md-8 { padding: 3rem !important; } .pt-md-8 { padding-top: 3rem !important; } .pr-md-8 { padding-right: 3rem !important; } .pb-md-8 { padding-bottom: 3rem !important; } .pl-md-8 { padding-left: 3rem !important; } .px-md-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-md-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-md-9 { padding: 3.5rem !important; } .pt-md-9 { padding-top: 3.5rem !important; } .pr-md-9 { padding-right: 3.5rem !important; } .pb-md-9 { padding-bottom: 3.5rem !important; } .pl-md-9 { padding-left: 3.5rem !important; } .px-md-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-md-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-md-10 { padding: 4rem !important; } .pt-md-10 { padding-top: 4rem !important; } .pr-md-10 { padding-right: 4rem !important; } .pb-md-10 { padding-bottom: 4rem !important; } .pl-md-10 { padding-left: 4rem !important; } .px-md-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-md-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 66.5rem) { .p-lg-0 { padding: 0 !important; } .pt-lg-0 { padding-top: 0 !important; } .pr-lg-0 { padding-right: 0 !important; } .pb-lg-0 { padding-bottom: 0 !important; } .pl-lg-0 { padding-left: 0 !important; } .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-lg-1 { padding: 0.25rem !important; } .pt-lg-1 { padding-top: 0.25rem !important; } .pr-lg-1 { padding-right: 0.25rem !important; } .pb-lg-1 { padding-bottom: 0.25rem !important; } .pl-lg-1 { padding-left: 0.25rem !important; } .px-lg-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-lg-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-lg-2 { padding: 0.5rem !important; } .pt-lg-2 { padding-top: 0.5rem !important; } .pr-lg-2 { padding-right: 0.5rem !important; } .pb-lg-2 { padding-bottom: 0.5rem !important; } .pl-lg-2 { padding-left: 0.5rem !important; } .px-lg-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-lg-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-lg-3 { padding: 0.75rem !important; } .pt-lg-3 { padding-top: 0.75rem !important; } .pr-lg-3 { padding-right: 0.75rem !important; } .pb-lg-3 { padding-bottom: 0.75rem !important; } .pl-lg-3 { padding-left: 0.75rem !important; } .px-lg-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-lg-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-lg-4 { padding: 1rem !important; } .pt-lg-4 { padding-top: 1rem !important; } .pr-lg-4 { padding-right: 1rem !important; } .pb-lg-4 { padding-bottom: 1rem !important; } .pl-lg-4 { padding-left: 1rem !important; } .px-lg-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-lg-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-lg-5 { padding: 1.5rem !important; } .pt-lg-5 { padding-top: 1.5rem !important; } .pr-lg-5 { padding-right: 1.5rem !important; } .pb-lg-5 { padding-bottom: 1.5rem !important; } .pl-lg-5 { padding-left: 1.5rem !important; } .px-lg-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-lg-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-lg-6 { padding: 2rem !important; } .pt-lg-6 { padding-top: 2rem !important; } .pr-lg-6 { padding-right: 2rem !important; } .pb-lg-6 { padding-bottom: 2rem !important; } .pl-lg-6 { padding-left: 2rem !important; } .px-lg-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-lg-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-lg-7 { padding: 2.5rem !important; } .pt-lg-7 { padding-top: 2.5rem !important; } .pr-lg-7 { padding-right: 2.5rem !important; } .pb-lg-7 { padding-bottom: 2.5rem !important; } .pl-lg-7 { padding-left: 2.5rem !important; } .px-lg-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-lg-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-lg-8 { padding: 3rem !important; } .pt-lg-8 { padding-top: 3rem !important; } .pr-lg-8 { padding-right: 3rem !important; } .pb-lg-8 { padding-bottom: 3rem !important; } .pl-lg-8 { padding-left: 3rem !important; } .px-lg-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-lg-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-lg-9 { padding: 3.5rem !important; } .pt-lg-9 { padding-top: 3.5rem !important; } .pr-lg-9 { padding-right: 3.5rem !important; } .pb-lg-9 { padding-bottom: 3.5rem !important; } .pl-lg-9 { padding-left: 3.5rem !important; } .px-lg-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-lg-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-lg-10 { padding: 4rem !important; } .pt-lg-10 { padding-top: 4rem !important; } .pr-lg-10 { padding-right: 4rem !important; } .pb-lg-10 { padding-bottom: 4rem !important; } .pl-lg-10 { padding-left: 4rem !important; } .px-lg-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-lg-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 87.5rem) { .p-xl-0 { padding: 0 !important; } .pt-xl-0 { padding-top: 0 !important; } .pr-xl-0 { padding-right: 0 !important; } .pb-xl-0 { padding-bottom: 0 !important; } .pl-xl-0 { padding-left: 0 !important; } .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xl-1 { padding: 0.25rem !important; } .pt-xl-1 { padding-top: 0.25rem !important; } .pr-xl-1 { padding-right: 0.25rem !important; } .pb-xl-1 { padding-bottom: 0.25rem !important; } .pl-xl-1 { padding-left: 0.25rem !important; } .px-xl-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xl-2 { padding: 0.5rem !important; } .pt-xl-2 { padding-top: 0.5rem !important; } .pr-xl-2 { padding-right: 0.5rem !important; } .pb-xl-2 { padding-bottom: 0.5rem !important; } .pl-xl-2 { padding-left: 0.5rem !important; } .px-xl-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xl-3 { padding: 0.75rem !important; } .pt-xl-3 { padding-top: 0.75rem !important; } .pr-xl-3 { padding-right: 0.75rem !important; } .pb-xl-3 { padding-bottom: 0.75rem !important; } .pl-xl-3 { padding-left: 0.75rem !important; } .px-xl-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xl-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xl-4 { padding: 1rem !important; } .pt-xl-4 { padding-top: 1rem !important; } .pr-xl-4 { padding-right: 1rem !important; } .pb-xl-4 { padding-bottom: 1rem !important; } .pl-xl-4 { padding-left: 1rem !important; } .px-xl-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xl-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xl-5 { padding: 1.5rem !important; } .pt-xl-5 { padding-top: 1.5rem !important; } .pr-xl-5 { padding-right: 1.5rem !important; } .pb-xl-5 { padding-bottom: 1.5rem !important; } .pl-xl-5 { padding-left: 1.5rem !important; } .px-xl-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xl-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xl-6 { padding: 2rem !important; } .pt-xl-6 { padding-top: 2rem !important; } .pr-xl-6 { padding-right: 2rem !important; } .pb-xl-6 { padding-bottom: 2rem !important; } .pl-xl-6 { padding-left: 2rem !important; } .px-xl-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xl-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xl-7 { padding: 2.5rem !important; } .pt-xl-7 { padding-top: 2.5rem !important; } .pr-xl-7 { padding-right: 2.5rem !important; } .pb-xl-7 { padding-bottom: 2.5rem !important; } .pl-xl-7 { padding-left: 2.5rem !important; } .px-xl-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xl-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xl-8 { padding: 3rem !important; } .pt-xl-8 { padding-top: 3rem !important; } .pr-xl-8 { padding-right: 3rem !important; } .pb-xl-8 { padding-bottom: 3rem !important; } .pl-xl-8 { padding-left: 3rem !important; } .px-xl-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xl-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xl-9 { padding: 3.5rem !important; } .pt-xl-9 { padding-top: 3.5rem !important; } .pr-xl-9 { padding-right: 3.5rem !important; } .pb-xl-9 { padding-bottom: 3.5rem !important; } .pl-xl-9 { padding-left: 3.5rem !important; } .px-xl-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xl-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xl-10 { padding: 4rem !important; } .pt-xl-10 { padding-top: 4rem !important; } .pr-xl-10 { padding-right: 4rem !important; } .pb-xl-10 { padding-bottom: 4rem !important; } .pl-xl-10 { padding-left: 4rem !important; } .px-xl-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xl-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media print { .site-footer, .site-button, #edit-this-page, #back-to-top, .site-nav, .main-header { display: none !important; } .side-bar { width: 100%; height: auto; border-right: 0 !important; } .site-header { border-bottom: 1px solid #44434d; } .site-title { font-size: 16px !important; font-weight: 700 !important; } .text-small { font-size: 8pt !important; } pre.highlight { border: 1px solid #44434d; } .main { max-width: none; margin-left: 0; } } + +/* Just-the-docs overrides and custom styles */ +/* Rogue (Jekyll's syntax highlighter) uses Pygment compatible styles. This is the "github" theme: https://github.com/uraimo/pygments-vimstyles/blob/master/github.css */ +.highlight .hll { background-color: #ffffcc; } + +.highlight { background: #F8F8FF; color: #000000; background-color: #F8F8FF; } + +.highlight .c { color: #999988; background-color: #F8F8FF; } + +/* Comment */ +.highlight .err { color: #000000; background-color: #F8F8FF; } + +/* Error */ +.highlight .g { color: #000000; background-color: #F8F8FF; } + +/* Generic */ +.highlight .k { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword */ +.highlight .l { color: #000000; background-color: #F8F8FF; } + +/* Literal */ +.highlight .n { color: #000000; background-color: #F8F8FF; } + +/* Name */ +.highlight .o { color: #000000; background-color: #F8F8FF; } + +/* Operator */ +.highlight .x { color: #000000; background-color: #F8F8FF; } + +/* Other */ +.highlight .p { color: #000000; background-color: #F8F8FF; } + +/* Punctuation */ +.highlight .cm { color: #999988; background-color: #F8F8FF; } + +/* Comment.Multiline */ +.highlight .cp { color: #A0A0A0; font-weight: bold; background-color: #F8F8FF; } + +/* Comment.Preproc */ +.highlight .c1 { color: #999988; background-color: #F8F8FF; } + +/* Comment.Single */ +.highlight .cs { color: #999988; background-color: #F8F8FF; } + +/* Comment.Special */ +.highlight .gd { color: #DDCCCC; background-color: #FFDDDD; } + +/* Generic.Deleted */ +.highlight .ge { color: #000000; text-decoration: underline; background-color: #F8F8FF; } + +/* Generic.Emph */ +.highlight .gr { color: #ff1100; background-color: #f8f8ff; } + +/* Generic.Error */ +.highlight .gh { color: #ef5939; background-color: #F8F8FF; } + +/* Generic.Heading */ +.highlight .gi { color: #003300; background-color: #DDFFDD; } + +/* Generic.Inserted */ +.highlight .go { color: #808080; background-color: #ECECEC; } + +/* Generic.Output */ +.highlight .gp { color: #000000; background-color: #F8F8FF; } + +/* Generic.Prompt */ +.highlight .gs { color: #000000; background-color: #F8F8FF; } + +/* Generic.Strong */ +.highlight .gu { color: #ef5939; background-color: #F8F8FF; } + +/* Generic.Subheading */ +.highlight .gt { color: #000000; background-color: #F8F8FF; } + +/* Generic.Traceback */ +.highlight .kc { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Constant */ +.highlight .kd { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Declaration */ +.highlight .kn { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Namespace */ +.highlight .kp { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Pseudo */ +.highlight .kr { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Type */ +.highlight .ld { color: #000000; background-color: #F8F8FF; } + +/* Literal.Date */ +.highlight .m { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number */ +.highlight .s { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String */ +.highlight .na { color: #990000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Attribute */ +.highlight .nb { color: #000000; background-color: #F8F8FF; } + +/* Name.Builtin */ +.highlight .nc { color: #000000; background-color: #F8F8FF; } + +/* Name.Class */ +.highlight .no { color: #177F80; background-color: #F8F8FF; } + +/* Name.Constant */ +.highlight .nd { color: #000000; background-color: #F8F8FF; } + +/* Name.Decorator */ +.highlight .ni { color: #159828; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Entity */ +.highlight .ne { color: #000000; background-color: #F8F8FF; } + +/* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Function */ +.highlight .nl { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Label */ +.highlight .nn { color: #000000; background-color: #F8F8FF; } + +/* Name.Namespace */ +.highlight .nx { color: #000000; background-color: #F8F8FF; } + +/* Name.Other */ +.highlight .py { color: #000000; background-color: #F8F8FF; } + +/* Name.Property */ +.highlight .nt { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Tag */ +.highlight .nv { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable */ +.highlight .ow { color: #000000; background-color: #F8F8FF; } + +/* Operator.Word */ +.highlight .w { color: #000000; background-color: #F8F8FF; } + +/* Text.Whitespace */ +.highlight .mf { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Float */ +.highlight .mh { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Hex */ +.highlight .mi { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Integer */ +.highlight .mo { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Oct */ +.highlight .sb { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Backtick */ +.highlight .sc { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Char */ +.highlight .sd { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Doc */ +.highlight .s2 { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Double */ +.highlight .se { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Escape */ +.highlight .sh { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Heredoc */ +.highlight .si { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Interpol */ +.highlight .sx { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Other */ +.highlight .sr { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Regex */ +.highlight .s1 { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Single */ +.highlight .ss { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Symbol */ +.highlight .bp { color: #000000; background-color: #F8F8FF; } + +/* Name.Builtin.Pseudo */ +.highlight .vc { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable.Class */ +.highlight .vg { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable.Global */ +.highlight .vi { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable.Instance */ +.highlight .il { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Integer.Long */ +/* Style variable overrides to match Alloverse style List of changeable variables: https://github.com/pmarsceill/just-the-docs/blob/master/_sass/support/_variables.scss */ +body { font-family: "Open Sans", "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif; color: #0c2b48; } + +h1, h2, h3, h4, .text-delta { font-family: "Sen", "Segoe UI", sans-serif; color: #0c2b48; font-weight: 700; letter-spacing: -0.5px; } + +.main-content h1 { font-size: 36px !important; font-weight: 800; letter-spacing: -1px; margin-bottom: 24px; } + +pre { white-space: pre-wrap; } + +code { padding: 2px 4px; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #0c2b48; } + +.table-wrapper table { border-collapse: collapse; } + +.table-wrapper table thead { text-align: left; } + +.table-wrapper table thead th { background: #E5E9F1; } + +.table-wrapper table td { border-bottom-color: rgba(12, 43, 72, 0.1); } + +.returns-nothing { color: #A9B6D1; font-style: italic; } + +@media print { .side-bar, .page-header { display: none; } .main-content { max-width: auto; margin: 1em; } } + +/*# sourceMappingURL=just-the-docs-dark.css.map */ \ No newline at end of file diff --git a/assets/css/just-the-docs-dark.css.map b/assets/css/just-the-docs-dark.css.map new file mode 100644 index 0000000..0528ea9 --- /dev/null +++ b/assets/css/just-the-docs-dark.css.map @@ -0,0 +1,78 @@ +{ + "version": 3, + "file": "just-the-docs-dark.css", + "sources": [ + "just-the-docs-dark.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/support.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/_variables.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/_functions.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/mixins.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_layout.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_buttons.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_typography.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/color_schemes/dark.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/modules.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/vendor/normalize.scss/normalize.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/base.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/layout.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/content.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/navigation.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/typography.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/labels.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/buttons.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/search.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/tables.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/code.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/utilities.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_colors.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_layout.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_typography.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_lists.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_spacing.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/print.scss", + "_sass/custom/custom.scss", + "_sass/custom/code.scss", + "_sass/color_schemes/alloverse.scss" + ], + "sourcesContent": [ + "\n$logo: \"https://alloverse.com/wp-content/uploads/Alloverse-logo-moniker-256x38-1.svg\";\n\n@import \"./support/support\";\n@import \"./color_schemes/dark\";\n@import \"./modules\";\n@import \"./custom/custom\";\n\n\n", + "@import \"./variables\";\n@import \"./functions\";\n@import \"./mixins/mixins\";\n", + "//\n// Typography\n//\n\n$body-font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n$mono-font-family: \"SFMono-Regular\", Menlo, Consolas, Monospace !default;\n$root-font-size: 16px !default; // Base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n//\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n//\n\n$font-size-1: 9px !default;\n$font-size-1-sm: 10px !default;\n$font-size-2: 11px !default; //h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 12px !default; //h5\n$font-size-4: 14px !default;\n$font-size-5: 16px !default; //h3\n$font-size-6: 18px !default; //h2\n$font-size-7: 24px !default;\n$font-size-8: 32px !default; //h1\n$font-size-9: 36px !default;\n$font-size-10: 42px !default;\n$font-size-10-sm: 48px !default;\n\n//\n// Colors\n//\n\n$white: #fff !default;\n\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n$body-background-color: $white !default;\n$sidebar-color: $grey-lt-000 !default;\n$search-background-color: $white !default;\n$table-background-color: $white !default;\n$code-background-color: $grey-lt-000 !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n\n$body-text-color: $grey-dk-100 !default;\n$body-heading-color: $grey-dk-300 !default;\n$search-result-preview-color: $grey-dk-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$btn-primary-color: $purple-100 !default;\n$base-button-color: #f7f7f7 !default;\n\n//\n// Spacing\n//\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n//\n// Borders\n//\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n//\n// Grid system\n//\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 264px !default;\n$nav-width-md: 248px !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 800px !default;\n$header-height: 60px !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n//\n// Media queries in pixels\n//\n\n$media-queries: (\n xs: 320px,\n sm: 500px,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 1400px,\n) !default;\n", + "@function rem($size, $unit: \"\") {\n $remSize: $size / $root-font-size;\n\n @if ($unit == false) {\n @return #{$remSize};\n } @else {\n @return #{$remSize}rem;\n }\n}\n", + "@import \"./layout\";\n@import \"./buttons\";\n@import \"./typography\";\n", + "// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value != null {\n // Prints a media query based on the value\n @media (min-width: rem($value)) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. \"\n + \"Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n", + "// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n", + "@mixin fs-1 {\n font-size: $font-size-1 !important;\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n font-size: $font-size-2 !important;\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n font-size: $font-size-3 !important;\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n font-size: $font-size-4 !important;\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n font-size: $font-size-5 !important;\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n font-size: $font-size-6 !important;\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n", + "$body-background-color: $grey-dk-300;\n$sidebar-color: $grey-dk-300;\n$border-color: $grey-dk-200;\n\n$body-text-color: $grey-lt-300;\n$body-heading-color: $grey-lt-000;\n$nav-child-link-color: $grey-dk-000;\n$search-result-preview-color: $grey-dk-000;\n\n$link-color: $blue-000;\n$btn-primary-color: $blue-200;\n$base-button-color: $grey-dk-250;\n\n$code-background-color: $grey-dk-250;\n$search-background-color: $grey-dk-250;\n$table-background-color: $grey-dk-250;\n$feedback-color: darken($sidebar-color, 3%);\n", + "//\n// Import external dependencies\n//\n@import \"./vendor/normalize.scss/normalize.scss\";\n\n//\n// Modules\n//\n@import \"./base\";\n@import \"./layout\";\n@import \"./content\";\n@import \"./navigation\";\n@import \"./typography\";\n@import \"./labels\";\n@import \"./buttons\";\n@import \"./search\";\n@import \"./tables\";\n@import \"./code\";\n@import \"./utilities/utilities\";\n@import \"./print\";\n", + "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n", + "//\n// Base element style overrides\n//\n// stylelint-disable selector-no-type, selector-max-type\n\n* {\n box-sizing: border-box;\n}\n\n::selection {\n color: $white;\n background: $link-color;\n}\n\nhtml {\n @include fs-4;\n scroll-behavior: smooth;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: none;\n background-image: linear-gradient($border-color 0%, $border-color 100%);\n background-repeat: repeat-x;\n background-position: 0 100%;\n background-size: 1px 1px;\n\n &:hover {\n background-image: linear-gradient(\n rgba($link-color, 0.45) 0%,\n rgba($link-color, 0.45) 100%\n );\n background-size: 1px 1px;\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n", + "//\n// The basic two column layout\n//\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-wrap: nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n flex-direction: column;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n}\n\n.main {\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n margin-left: calc(\n (100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}\n );\n }\n}\n\n.main-content-wrap {\n @include container;\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n background-color: $body-background-color;\n border-bottom: $border $border-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n @include container;\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n// stylelint-disable selector-max-type\n\nbody {\n position: relative;\n padding-bottom: $sp-10;\n overflow-y: scroll;\n\n @include mq(md) {\n position: static;\n padding-bottom: 0;\n }\n}\n\n// stylelint-enable selector-max-type\n\n.site-footer {\n @include container;\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n color: $grey-dk-000;\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n", + "@charset \"UTF-8\";\n\n//\n// Styles for rendered markdown in the .main-content container\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list {\n padding-left: 0;\n }\n\n .task-list-item {\n display: flex;\n align-items: center;\n\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n &:first-child {\n margin-top: $sp-2;\n }\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge {\n margin-top: 1em;\n }\n\n + p {\n margin-top: 0;\n }\n }\n}\n", + "//\n// Main nav, breadcrumb, etc...\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n @include fs-4;\n position: relative;\n margin: 0;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding-top: #{$nav-list-item-height-sm / 4};\n padding-right: #{$nav-list-item-height-sm / 4};\n padding-bottom: #{$nav-list-item-height-sm / 4};\n padding-left: #{$nav-list-item-height-sm / 4};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding-top: #{$nav-list-item-height / 4};\n padding-right: #{$nav-list-item-height / 4};\n padding-bottom: #{$nav-list-item-height / 4};\n padding-left: #{$nav-list-item-height / 4};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: $gutter-spacing-sm;\n font-weight: 600;\n text-align: end;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n", + "//\n// Typography\n//\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type\n\nh1,\n.text-alpha {\n @include fs-8;\n font-weight: 300;\n}\n\nh2,\n.text-beta {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n @include fs-2;\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n color: $grey-dk-200;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n color: $grey-dk-200;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n", + "//\n// Labels (not the form kind)\n//\n\n.label,\n.label-blue {\n display: inline-block;\n padding-top: 0.16em;\n padding-right: 0.56em;\n padding-bottom: 0.16em;\n padding-left: 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n @include fs-2;\n border-radius: 12px;\n}\n\n.label-green {\n background-color: $green-200;\n}\n\n.label-purple {\n background-color: $purple-100;\n}\n\n.label-red {\n background-color: $red-200;\n}\n\n.label-yellow {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n", + "//\n// Buttons and things that look like buttons\n//\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding-top: 0.3em;\n padding-right: 1em;\n padding-bottom: 0.3em;\n padding-left: 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-000);\n}\n\n.btn-green {\n @include btn-color($white, $green-100);\n}\n", + "//\n// Search input and autocomplete\n//\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: #{$gutter-spacing-sm + $sp-5};\n font-size: 16px;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n padding-left: #{$gutter-spacing + $sp-5};\n font-size: 14px;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n &:focus {\n outline: 0;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding-top: $sp-1;\n padding-right: $sp-3;\n padding-bottom: $sp-1;\n padding-left: $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 / 2};\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition: opacity ease $transition-duration, width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition: opacity ease $transition-duration, width 0s, height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n", + "//\n// Tables\n//\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n @include fs-3;\n min-width: 120px;\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n", + "//\n// Code and syntax highlighting\n//\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type\n\ncode {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n//
...
:\n// figure.highlight > pre > code.language-LANG\n//\n//
1
+
...
+
:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\ndiv.highlighter-rouge {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n overflow-x: auto;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n div.highlight,\n pre.highlight,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n//
...
,\n//
1
+
...
+
:\nfigure.highlight {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n pre,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n//
1
+
...
+
:\n.highlight .table-wrapper {\n padding: 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n @include fs-2;\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n }\n\n td.gl {\n padding-right: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n.highlight .c {\n color: #586e75;\n} // comment //\n.highlight .err {\n color: #93a1a1;\n} // error //\n.highlight .g {\n color: #93a1a1;\n} // generic //\n.highlight .k {\n color: #859900;\n} // keyword //\n.highlight .l {\n color: #93a1a1;\n} // literal //\n.highlight .n {\n color: #93a1a1;\n} // name //\n.highlight .o {\n color: #859900;\n} // operator //\n.highlight .x {\n color: #cb4b16;\n} // other //\n.highlight .p {\n color: #93a1a1;\n} // punctuation //\n.highlight .cm {\n color: #586e75;\n} // comment.multiline //\n.highlight .cp {\n color: #859900;\n} // comment.preproc //\n.highlight .c1 {\n color: #586e75;\n} // comment.single //\n.highlight .cs {\n color: #859900;\n} // comment.special //\n.highlight .gd {\n color: #2aa198;\n} // generic.deleted //\n.highlight .ge {\n font-style: italic;\n color: #93a1a1;\n} // generic.emph //\n.highlight .gr {\n color: #dc322f;\n} // generic.error //\n.highlight .gh {\n color: #cb4b16;\n} // generic.heading //\n.highlight .gi {\n color: #859900;\n} // generic.inserted //\n.highlight .go {\n color: #93a1a1;\n} // generic.output //\n.highlight .gp {\n color: #93a1a1;\n} // generic.prompt //\n.highlight .gs {\n font-weight: bold;\n color: #93a1a1;\n} // generic.strong //\n.highlight .gu {\n color: #cb4b16;\n} // generic.subheading //\n.highlight .gt {\n color: #93a1a1;\n} // generic.traceback //\n.highlight .kc {\n color: #cb4b16;\n} // keyword.constant //\n.highlight .kd {\n color: #268bd2;\n} // keyword.declaration //\n.highlight .kn {\n color: #859900;\n} // keyword.namespace //\n.highlight .kp {\n color: #859900;\n} // keyword.pseudo //\n.highlight .kr {\n color: #268bd2;\n} // keyword.reserved //\n.highlight .kt {\n color: #dc322f;\n} // keyword.type //\n.highlight .ld {\n color: #93a1a1;\n} // literal.date //\n.highlight .m {\n color: #2aa198;\n} // literal.number //\n.highlight .s {\n color: #2aa198;\n} // literal.string //\n.highlight .na {\n color: #555;\n} // name.attribute //\n.highlight .nb {\n color: #b58900;\n} // name.builtin //\n.highlight .nc {\n color: #268bd2;\n} // name.class //\n.highlight .no {\n color: #cb4b16;\n} // name.constant //\n.highlight .nd {\n color: #268bd2;\n} // name.decorator //\n.highlight .ni {\n color: #cb4b16;\n} // name.entity //\n.highlight .ne {\n color: #cb4b16;\n} // name.exception //\n.highlight .nf {\n color: #268bd2;\n} // name.function //\n.highlight .nl {\n color: #555;\n} // name.label //\n.highlight .nn {\n color: #93a1a1;\n} // name.namespace //\n.highlight .nx {\n color: #555;\n} // name.other //\n.highlight .py {\n color: #93a1a1;\n} // name.property //\n.highlight .nt {\n color: #268bd2;\n} // name.tag //\n.highlight .nv {\n color: #268bd2;\n} // name.variable //\n.highlight .ow {\n color: #859900;\n} // operator.word //\n.highlight .w {\n color: #93a1a1;\n} // text.whitespace //\n.highlight .mf {\n color: #2aa198;\n} // literal.number.float //\n.highlight .mh {\n color: #2aa198;\n} // literal.number.hex //\n.highlight .mi {\n color: #2aa198;\n} // literal.number.integer //\n.highlight .mo {\n color: #2aa198;\n} // literal.number.oct //\n.highlight .sb {\n color: #586e75;\n} // literal.string.backtick //\n.highlight .sc {\n color: #2aa198;\n} // literal.string.char //\n.highlight .sd {\n color: #93a1a1;\n} // literal.string.doc //\n.highlight .s2 {\n color: #2aa198;\n} // literal.string.double //\n.highlight .se {\n color: #cb4b16;\n} // literal.string.escape //\n.highlight .sh {\n color: #93a1a1;\n} // literal.string.heredoc //\n.highlight .si {\n color: #2aa198;\n} // literal.string.interpol //\n.highlight .sx {\n color: #2aa198;\n} // literal.string.other //\n.highlight .sr {\n color: #dc322f;\n} // literal.string.regex //\n.highlight .s1 {\n color: #2aa198;\n} // literal.string.single //\n.highlight .ss {\n color: #2aa198;\n} // literal.string.symbol //\n.highlight .bp {\n color: #268bd2;\n} // name.builtin.pseudo //\n.highlight .vc {\n color: #268bd2;\n} // name.variable.class //\n.highlight .vg {\n color: #268bd2;\n} // name.variable.global //\n.highlight .vi {\n color: #268bd2;\n} // name.variable.instance //\n.highlight .il {\n color: #2aa198;\n} // literal.number.integer.long //\n\n//\n// Code examples (rendered)\n//\n\n.code-example {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n", + "@import \"./colors\";\n@import \"./layout\";\n@import \"./typography\";\n@import \"./lists\";\n@import \"./spacing\";\n", + "//\n// Utility classes for colors\n//\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n", + "// stylelint-disable primer/selector-no-utility, primer/no-override\n//\n// Utility classes for layout\n//\n\n// Display\n\n.d-block {\n display: block !important;\n}\n.d-flex {\n display: flex !important;\n}\n.d-inline {\n display: inline !important;\n}\n.d-inline-block {\n display: inline-block !important;\n}\n.d-none {\n display: none !important;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n.v-align-middle {\n vertical-align: middle !important;\n}\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n.v-align-top {\n vertical-align: top !important;\n}\n", + "//\n// Utility classes for typography\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n// stylelint-enable primer/selector-no-utility\n", + "//\n// Utility classes for lists\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n", + "//\n// Utility classes for margins and padding\n//\n\n// scss-lint:disable SpaceAfterPropertyName\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility, primer/no-override\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n", + "// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type, primer/no-override,\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: $root-font-size !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n", + "/* Just-the-docs overrides and custom styles */\n\n@import url(\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400&family=Sen:wght@400;700;800\");\n\n\n\n@import \"./code\";\n@import \"../color_schemes/alloverse.scss\";\n\nbody {\n font-family: \"Open Sans\", \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", Arial, sans-serif;\n color: $allo-text-color-dark;\n}\n\nh1,\nh2,\nh3,\nh4,\n.text-delta {\n font-family: \"Sen\", \"Segoe UI\", sans-serif;\n color: $allo-text-color-dark;\n font-weight: 700;\n letter-spacing: -0.5px;\n}\n\n.main-content {\n h1 {\n font-size: 36px!important;;\n font-weight: 800;\n letter-spacing: -1px;\n margin-bottom: 24px;\n }\n // h2 {\n // font-size: 30px!important;\n // color: $allo-text-color-dark-90;\n // letter-spacing: -0.8px;\n \n // margin-top: 48px;\n // margin-bottom: 6px;\n // }\n // h3 {\n // font-size: 24px!important;\n \n // margin-top: 32px;\n // margin-bottom: 6px;\n // }\n // h4 {\n // font-size: 18px!important;\n // text-transform: none;\n\n // margin-top: 30px;\n // margin-bottom: 6px;\n // }\n}\n\npre {\n white-space: pre-wrap;\n}\n\ncode {\n padding: 2px 4px;\n}\n\n// Different link color for children of lists in the sidebar\n.nav-list .nav-list-item>.nav-list .nav-list-item .nav-list-link {\n color: #0c2b48;\n}\n\n// Tables for arguments & returns\n.table-wrapper {\n table {\n border-collapse: collapse;\n\n thead {\n text-align: left;\n th {\n background: $allo-dark-gray-30;\n }\n }\n \n td {\n border-bottom-color: $border-color;\n }\n\n }\n}\n\n.returns-nothing {\n color: $allo-dark-gray;\n font-style: italic;\n}\n\n// Print-only styles.\n@media print {\n .side-bar,\n .page-header {\n display: none;\n }\n .main-content {\n max-width: auto;\n margin: 1em;\n }\n}\n", + "/*\n Rogue (Jekyll's syntax highlighter) uses Pygment compatible styles.\n\n This is the \"github\" theme: https://github.com/uraimo/pygments-vimstyles/blob/master/github.css\n*/\n\n\n.highlight .hll { background-color: #ffffcc }\n.highlight { background: #F8F8FF; color: #000000; background-color: #F8F8FF }\n.highlight .c { color: #999988; background-color: #F8F8FF } /* Comment */\n.highlight .err { color: #000000; background-color: #F8F8FF } /* Error */\n.highlight .g { color: #000000; background-color: #F8F8FF } /* Generic */\n.highlight .k { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword */\n.highlight .l { color: #000000; background-color: #F8F8FF } /* Literal */\n.highlight .n { color: #000000; background-color: #F8F8FF } /* Name */\n.highlight .o { color: #000000; background-color: #F8F8FF } /* Operator */\n.highlight .x { color: #000000; background-color: #F8F8FF } /* Other */\n.highlight .p { color: #000000; background-color: #F8F8FF } /* Punctuation */\n.highlight .cm { color: #999988; background-color: #F8F8FF } /* Comment.Multiline */\n.highlight .cp { color: #A0A0A0; font-weight: bold; background-color: #F8F8FF } /* Comment.Preproc */\n.highlight .c1 { color: #999988; background-color: #F8F8FF } /* Comment.Single */\n.highlight .cs { color: #999988; background-color: #F8F8FF } /* Comment.Special */\n.highlight .gd { color: #DDCCCC; background-color: #FFDDDD } /* Generic.Deleted */\n.highlight .ge { color: #000000; text-decoration: underline; background-color: #F8F8FF } /* Generic.Emph */\n.highlight .gr { color: #ff1100; background-color: #f8f8ff } /* Generic.Error */\n.highlight .gh { color: #ef5939; background-color: #F8F8FF } /* Generic.Heading */\n.highlight .gi { color: #003300; background-color: #DDFFDD } /* Generic.Inserted */\n.highlight .go { color: #808080; background-color: #ECECEC } /* Generic.Output */\n.highlight .gp { color: #000000; background-color: #F8F8FF } /* Generic.Prompt */\n.highlight .gs { color: #000000; background-color: #F8F8FF } /* Generic.Strong */\n.highlight .gu { color: #ef5939; background-color: #F8F8FF } /* Generic.Subheading */\n.highlight .gt { color: #000000; background-color: #F8F8FF } /* Generic.Traceback */\n.highlight .kc { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Constant */\n.highlight .kd { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Declaration */\n.highlight .kn { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Namespace */\n.highlight .kp { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Pseudo */\n.highlight .kr { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Reserved */\n.highlight .kt { color: #445588; font-weight: bold; background-color: #F8F8FF } /* Keyword.Type */\n.highlight .ld { color: #000000; background-color: #F8F8FF } /* Literal.Date */\n.highlight .m { color: #1C9898; background-color: #F8F8FF } /* Literal.Number */\n.highlight .s { color: #D81745; background-color: #F8F8FF } /* Literal.String */\n.highlight .na { color: #990000; font-weight: bold; background-color: #F8F8FF } /* Name.Attribute */\n.highlight .nb { color: #000000; background-color: #F8F8FF } /* Name.Builtin */\n.highlight .nc { color: #000000; background-color: #F8F8FF } /* Name.Class */\n.highlight .no { color: #177F80; background-color: #F8F8FF } /* Name.Constant */\n.highlight .nd { color: #000000; background-color: #F8F8FF } /* Name.Decorator */\n.highlight .ni { color: #159828; font-weight: bold; background-color: #F8F8FF } /* Name.Entity */\n.highlight .ne { color: #000000; background-color: #F8F8FF } /* Name.Exception */\n.highlight .nf { color: #990000; font-weight: bold; background-color: #F8F8FF } /* Name.Function */\n.highlight .nl { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Name.Label */\n.highlight .nn { color: #000000; background-color: #F8F8FF } /* Name.Namespace */\n.highlight .nx { color: #000000; background-color: #F8F8FF } /* Name.Other */\n.highlight .py { color: #000000; background-color: #F8F8FF } /* Name.Property */\n.highlight .nt { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Name.Tag */\n.highlight .nv { color: #0086B3; background-color: #F8F8FF } /* Name.Variable */\n.highlight .ow { color: #000000; background-color: #F8F8FF } /* Operator.Word */\n.highlight .w { color: #000000; background-color: #F8F8FF } /* Text.Whitespace */\n.highlight .mf { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Float */\n.highlight .mh { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Hex */\n.highlight .mi { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Integer */\n.highlight .mo { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Oct */\n.highlight .sb { color: #D81745; background-color: #F8F8FF } /* Literal.String.Backtick */\n.highlight .sc { color: #D81745; background-color: #F8F8FF } /* Literal.String.Char */\n.highlight .sd { color: #D81745; background-color: #F8F8FF } /* Literal.String.Doc */\n.highlight .s2 { color: #D81745; background-color: #F8F8FF } /* Literal.String.Double */\n.highlight .se { color: #D81745; background-color: #F8F8FF } /* Literal.String.Escape */\n.highlight .sh { color: #D81745; background-color: #F8F8FF } /* Literal.String.Heredoc */\n.highlight .si { color: #D81745; background-color: #F8F8FF } /* Literal.String.Interpol */\n.highlight .sx { color: #D81745; background-color: #F8F8FF } /* Literal.String.Other */\n.highlight .sr { color: #D81745; background-color: #F8F8FF } /* Literal.String.Regex */\n.highlight .s1 { color: #D81745; background-color: #F8F8FF } /* Literal.String.Single */\n.highlight .ss { color: #D81745; background-color: #F8F8FF } /* Literal.String.Symbol */\n.highlight .bp { color: #000000; background-color: #F8F8FF } /* Name.Builtin.Pseudo */\n.highlight .vc { color: #0086B3; background-color: #F8F8FF } /* Name.Variable.Class */\n.highlight .vg { color: #0086B3; background-color: #F8F8FF } /* Name.Variable.Global */\n.highlight .vi { color: #0086B3; background-color: #F8F8FF } /* Name.Variable.Instance */\n.highlight .il { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Integer.Long */", + "/*\n Style variable overrides to match Alloverse style\n\n List of changeable variables:\n https://github.com/pmarsceill/just-the-docs/blob/master/_sass/support/_variables.scss \n*/\n\n\n// Variables\n\n$allo-light-blue: #EAF6FF;\n$allo-dark-blue: #CDEBFA;\n$allo-light-gray-30: #EFF1F6;\n$allo-dark-gray: #A9B6D1;\n$allo-dark-gray-30: #E5E9F1;\n\n$allo-text-color-dark: #0c2b48;\n$allo-text-color-dark-90: #24405A;\n\n$link-color: $blue-200;\n$nav-child-link-color: $blue-200;\n\n$body-text-color: $allo-text-color-dark;\n$body-heading-color: $allo-text-color-dark;\n\n$border-color: rgba(12, 43, 72, 0.1); // 10% of text-color-dark\n\n$sidebar-color: $allo-light-blue;\n\n// Hover background color for clickable items in the sidebar\n$feedback-color: $allo-dark-blue;" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/assets/css/just-the-docs-default.css b/assets/css/just-the-docs-default.css new file mode 100644 index 0000000..6498e42 --- /dev/null +++ b/assets/css/just-the-docs-default.css @@ -0,0 +1,1780 @@ +@charset "UTF-8"; +/* Style variable overrides to match Alloverse style List of changeable variables: https://github.com/pmarsceill/just-the-docs/blob/master/_sass/support/_variables.scss */ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document ========================================================================== */ +/** 1. Correct the line height in all browsers. 2. Prevent adjustments of font size after orientation changes in iOS. */ +@import url("https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400&family=Sen:wght@400;700;800"); +html { line-height: 1.15; /* 1 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/* Sections ========================================================================== */ +/** Remove the margin in all browsers. */ +body { margin: 0; } + +/** Render the `main` element consistently in IE. */ +main { display: block; } + +/** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/* Grouping content ========================================================================== */ +/** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ +hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +pre { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/* Text-level semantics ========================================================================== */ +/** Remove the gray background on active links in IE 10. */ +a { background-color: transparent; } + +/** 1. Remove the bottom border in Chrome 57- 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ +abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } + +/** Add the correct font weight in Chrome, Edge, and Safari. */ +b, strong { font-weight: bolder; } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +code, kbd, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/** Add the correct font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sub { bottom: -0.25em; } + +sup { top: -0.5em; } + +/* Embedded content ========================================================================== */ +/** Remove the border on images inside links in IE 10. */ +img { border-style: none; } + +/* Forms ========================================================================== */ +/** 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. */ +button, input, optgroup, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ line-height: 1.15; /* 1 */ margin: 0; /* 2 */ } + +/** Show the overflow in IE. 1. Show the overflow in Edge. */ +button, input { /* 1 */ overflow: visible; } + +/** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ +button, select { /* 1 */ text-transform: none; } + +/** Correct the inability to style clickable types in iOS and Safari. */ +button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } + +/** Remove the inner border and padding in Firefox. */ +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +/** Restore the focus styles unset by the previous rule. */ +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +/** Correct the padding in Firefox. */ +fieldset { padding: 0.35em 0.75em 0.625em; } + +/** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ +legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } + +/** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ +progress { vertical-align: baseline; } + +/** Remove the default vertical scrollbar in IE 10+. */ +textarea { overflow: auto; } + +/** 1. Add the correct box sizing in IE 10. 2. Remove the padding in IE 10. */ +[type="checkbox"], [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Correct the cursor style of increment and decrement buttons in Chrome. */ +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ +[type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } + +/** Remove the inner padding in Chrome and Safari on macOS. */ +[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ +::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } + +/* Interactive ========================================================================== */ +/* Add the correct display in Edge, IE 10+, and Firefox. */ +details { display: block; } + +/* Add the correct display in all browsers. */ +summary { display: list-item; } + +/* Misc ========================================================================== */ +/** Add the correct display in IE 10+. */ +template { display: none; } + +/** Add the correct display in IE 10. */ +[hidden] { display: none; } + +* { box-sizing: border-box; } + +::selection { color: #fff; background: #264caf; } + +html { font-size: 14px !important; scroll-behavior: smooth; } + +@media (min-width: 31.25rem) { html { font-size: 16px !important; } } + +body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: inherit; line-height: 1.4; color: #0c2b48; background-color: #fff; } + +ol, ul, dl, pre, address, blockquote, table, div, hr, form, fieldset, noscript .table-wrapper { margin-top: 0; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 1em; font-weight: 500; line-height: 1.25; color: #0c2b48; } + +p { margin-top: 1em; margin-bottom: 1em; } + +a { color: #264caf; text-decoration: none; } + +a:not([class]) { text-decoration: none; background-image: linear-gradient(rgba(12, 43, 72, 0.1) 0%, rgba(12, 43, 72, 0.1) 100%); background-repeat: repeat-x; background-position: 0 100%; background-size: 1px 1px; } + +a:not([class]):hover { background-image: linear-gradient(rgba(38, 76, 175, 0.45) 0%, rgba(38, 76, 175, 0.45) 100%); background-size: 1px 1px; } + +code { font-family: "SFMono-Regular", Menlo, Consolas, Monospace; font-size: 0.75em; line-height: 1.4; } + +figure, pre { margin: 0; } + +li { margin: 0.25em 0; } + +img { max-width: 100%; height: auto; } + +hr { height: 1px; padding: 0; margin: 2rem 0; background-color: rgba(12, 43, 72, 0.1); border: 0; } + +.side-bar { z-index: 0; display: flex; flex-wrap: wrap; background-color: #EAF6FF; } + +@media (min-width: 50rem) { .side-bar { flex-wrap: nowrap; position: fixed; width: 248px; height: 100%; flex-direction: column; border-right: 1px solid rgba(12, 43, 72, 0.1); align-items: flex-end; } } + +@media (min-width: 66.5rem) { .side-bar { width: calc((100% - 1064px) / 2 + 264px); min-width: 264px; } } + +@media (min-width: 50rem) { .main { position: relative; max-width: 800px; margin-left: 248px; } } + +@media (min-width: 66.5rem) { .main { margin-left: calc( (100% - 1064px) / 2 + 264px); } } + +.main-content-wrap { padding-right: 1rem; padding-left: 1rem; padding-top: 1rem; padding-bottom: 1rem; } + +@media (min-width: 50rem) { .main-content-wrap { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 50rem) { .main-content-wrap { padding-top: 2rem; padding-bottom: 2rem; } } + +.main-header { z-index: 0; display: none; background-color: #EAF6FF; } + +@media (min-width: 50rem) { .main-header { display: flex; justify-content: space-between; height: 60px; background-color: #fff; border-bottom: 1px solid rgba(12, 43, 72, 0.1); } } + +.main-header.nav-open { display: block; } + +@media (min-width: 50rem) { .main-header.nav-open { display: flex; } } + +.site-nav, .site-header, .site-footer { width: 100%; } + +@media (min-width: 66.5rem) { .site-nav, .site-header, .site-footer { width: 264px; } } + +.site-nav { display: none; } + +.site-nav.nav-open { display: block; } + +@media (min-width: 50rem) { .site-nav { display: block; padding-top: 3rem; padding-bottom: 1rem; overflow-y: auto; flex: 1 1 auto; } } + +.site-header { display: flex; min-height: 60px; align-items: center; } + +@media (min-width: 50rem) { .site-header { height: 60px; max-height: 60px; border-bottom: 1px solid rgba(12, 43, 72, 0.1); } } + +.site-title { padding-right: 1rem; padding-left: 1rem; flex-grow: 1; display: flex; height: 100%; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; color: #0c2b48; font-size: 18px !important; } + +@media (min-width: 50rem) { .site-title { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-title { font-size: 24px !important; line-height: 1.25; } } + +@media (min-width: 50rem) { .site-title { padding-top: 0.5rem; padding-bottom: 0.5rem; } } + +.site-logo { width: 100%; height: 100%; background-image: url("https://alloverse.com/wp-content/uploads/Alloverse-logo-moniker-256x38-1.svg"); background-repeat: no-repeat; background-position: left center; background-size: contain; } + +.site-button { display: flex; height: 100%; padding: 1rem; align-items: center; } + +@media (min-width: 50rem) { .site-header .site-button { display: none; } } + +.site-title:hover { background-image: linear-gradient(-90deg, #cdebfa 0%, rgba(205, 235, 250, 0.8) 80%, rgba(205, 235, 250, 0) 100%); } + +.site-button:hover { background-image: linear-gradient(-90deg, #cdebfa 0%, rgba(205, 235, 250, 0.8) 100%); } + +body { position: relative; padding-bottom: 4rem; overflow-y: scroll; } + +@media (min-width: 50rem) { body { position: static; padding-bottom: 0; } } + +.site-footer { padding-right: 1rem; padding-left: 1rem; position: absolute; bottom: 0; left: 0; padding-top: 1rem; padding-bottom: 1rem; color: #959396; font-size: 11px !important; } + +@media (min-width: 50rem) { .site-footer { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-footer { font-size: 12px !important; } } + +@media (min-width: 50rem) { .site-footer { position: static; justify-self: end; } } + +.icon { width: 1.5rem; height: 1.5rem; color: #264caf; } + +.main-content { line-height: 1.6; } + +.main-content ol, .main-content ul, .main-content dl, .main-content pre, .main-content address, .main-content blockquote, .main-content .table-wrapper { margin-top: 0.5em; } + +.main-content a { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + +.main-content ul, .main-content ol { padding-left: 1.5em; } + +.main-content li .highlight { margin-top: 0.25rem; } + +.main-content ol { list-style-type: none; counter-reset: step-counter; } + +.main-content ol > li { position: relative; } + +.main-content ol > li::before { position: absolute; top: 0.2em; left: -1.6em; color: #959396; content: counter(step-counter); counter-increment: step-counter; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .main-content ol > li::before { font-size: 14px !important; } } + +@media (min-width: 31.25rem) { .main-content ol > li::before { top: 0.11em; } } + +.main-content ol > li ol { counter-reset: sub-counter; } + +.main-content ol > li ol li::before { content: counter(sub-counter, lower-alpha); counter-increment: sub-counter; } + +.main-content ul { list-style: none; } + +.main-content ul > li::before { position: absolute; margin-left: -1.4em; color: #959396; content: "•"; } + +.main-content .task-list { padding-left: 0; } + +.main-content .task-list-item { display: flex; align-items: center; } + +.main-content .task-list-item::before { content: ""; } + +.main-content .task-list-item-checkbox { margin-right: 0.6em; } + +.main-content hr + * { margin-top: 0; } + +.main-content h1:first-of-type { margin-top: 0.5em; } + +.main-content dl { display: grid; grid-template: auto / 10em 1fr; } + +.main-content dt, .main-content dd { margin: 0.25em 0; } + +.main-content dt { grid-column: 1; font-weight: 500; text-align: right; } + +.main-content dt::after { content: ":"; } + +.main-content dd { grid-column: 2; margin-bottom: 0; margin-left: 1em; } + +.main-content dd blockquote:first-child, .main-content dd div:first-child, .main-content dd dl:first-child, .main-content dd dt:first-child, .main-content dd h1:first-child, .main-content dd h2:first-child, .main-content dd h3:first-child, .main-content dd h4:first-child, .main-content dd h5:first-child, .main-content dd h6:first-child, .main-content dd li:first-child, .main-content dd ol:first-child, .main-content dd p:first-child, .main-content dd pre:first-child, .main-content dd table:first-child, .main-content dd ul:first-child, .main-content dd .table-wrapper:first-child { margin-top: 0; } + +.main-content dd dl:first-child dt:first-child, .main-content dd dl:first-child dd:nth-child(2), .main-content ol dl:first-child dt:first-child, .main-content ol dl:first-child dd:nth-child(2), .main-content ul dl:first-child dt:first-child, .main-content ul dl:first-child dd:nth-child(2) { margin-top: 0; } + +.main-content .anchor-heading { position: absolute; right: -1rem; width: 1.5rem; height: 100%; padding-right: 0.25rem; padding-left: 0.25rem; overflow: visible; } + +@media (min-width: 50rem) { .main-content .anchor-heading { right: auto; left: -1.5rem; } } + +.main-content .anchor-heading svg { display: inline-block; width: 100%; height: 100%; color: #264caf; visibility: hidden; } + +.main-content .anchor-heading:hover svg, .main-content h1:hover > .anchor-heading svg, .main-content h2:hover > .anchor-heading svg, .main-content h3:hover > .anchor-heading svg, .main-content h4:hover > .anchor-heading svg, .main-content h5:hover > .anchor-heading svg, .main-content h6:hover > .anchor-heading svg { visibility: visible; } + +.main-content summary { cursor: pointer; } + +.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 { position: relative; margin-top: 1.5em; margin-bottom: 0.25em; } + +.main-content h1:first-child, .main-content h2:first-child, .main-content h3:first-child, .main-content h4:first-child, .main-content h5:first-child, .main-content h6:first-child { margin-top: 0.5rem; } + +.main-content h1 + table, .main-content h1 + .table-wrapper, .main-content h1 + .code-example, .main-content h1 + .highlighter-rouge, .main-content h2 + table, .main-content h2 + .table-wrapper, .main-content h2 + .code-example, .main-content h2 + .highlighter-rouge, .main-content h3 + table, .main-content h3 + .table-wrapper, .main-content h3 + .code-example, .main-content h3 + .highlighter-rouge, .main-content h4 + table, .main-content h4 + .table-wrapper, .main-content h4 + .code-example, .main-content h4 + .highlighter-rouge, .main-content h5 + table, .main-content h5 + .table-wrapper, .main-content h5 + .code-example, .main-content h5 + .highlighter-rouge, .main-content h6 + table, .main-content h6 + .table-wrapper, .main-content h6 + .code-example, .main-content h6 + .highlighter-rouge { margin-top: 1em; } + +.main-content h1 + p, .main-content h2 + p, .main-content h3 + p, .main-content h4 + p, .main-content h5 + p, .main-content h6 + p { margin-top: 0; } + +.nav-list { padding: 0; margin-top: 0; margin-bottom: 0; list-style: none; } + +.nav-list .nav-list-item { font-size: 14px !important; position: relative; margin: 0; } + +@media (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 16px !important; } } + +@media (min-width: 50rem) { .nav-list .nav-list-item { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 14px !important; } } + +.nav-list .nav-list-item .nav-list-link { display: block; min-height: 3rem; padding-top: 0.25rem; padding-bottom: 0.25rem; line-height: 2.5rem; padding-right: 3rem; padding-left: 1rem; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-link { min-height: 2rem; line-height: 1.5rem; padding-right: 2rem; padding-left: 2rem; } } + +.nav-list .nav-list-item .nav-list-link.active { font-weight: 600; text-decoration: none; } + +.nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { background-image: linear-gradient(-90deg, #cdebfa 0%, rgba(205, 235, 250, 0.8) 80%, rgba(205, 235, 250, 0) 100%); } + +.nav-list .nav-list-item .nav-list-expander { position: absolute; right: 0; width: 3rem; height: 3rem; padding-top: 0.75rem; padding-right: 0.75rem; padding-bottom: 0.75rem; padding-left: 0.75rem; color: #264caf; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-expander { width: 2rem; height: 2rem; padding-top: 0.5rem; padding-right: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.5rem; } } + +.nav-list .nav-list-item .nav-list-expander:hover { background-image: linear-gradient(-90deg, #cdebfa 0%, rgba(205, 235, 250, 0.8) 100%); } + +.nav-list .nav-list-item .nav-list-expander svg { transform: rotate(90deg); } + +.nav-list .nav-list-item > .nav-list { display: none; padding-left: 0.75rem; list-style: none; } + +.nav-list .nav-list-item > .nav-list .nav-list-item { position: relative; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #264caf; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { color: #264caf; } + +.nav-list .nav-list-item.active > .nav-list-expander svg { transform: rotate(-90deg); } + +.nav-list .nav-list-item.active > .nav-list { display: block; } + +.nav-category { padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 1rem; font-weight: 600; text-align: end; text-transform: uppercase; border-bottom: 1px solid rgba(12, 43, 72, 0.1); font-size: 11px !important; } + +@media (min-width: 31.25rem) { .nav-category { font-size: 12px !important; } } + +@media (min-width: 50rem) { .nav-category { padding-right: 2rem; padding-left: 2rem; margin-top: 1rem; text-align: start; } .nav-category:first-child { margin-top: 0; } } + +.aux-nav { height: 100%; overflow-x: auto; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .aux-nav { font-size: 12px !important; } } + +.aux-nav .aux-nav-list { display: flex; height: 100%; padding: 0; margin: 0; list-style: none; } + +.aux-nav .aux-nav-list-item { display: inline-block; height: 100%; padding: 0; margin: 0; } + +@media (min-width: 50rem) { .aux-nav { padding-right: 1rem; } } + +@media (min-width: 50rem) { .breadcrumb-nav { margin-top: -1rem; } } + +.breadcrumb-nav-list { padding-left: 0; margin-bottom: 0.75rem; list-style: none; } + +.breadcrumb-nav-list-item { display: table-cell; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .breadcrumb-nav-list-item { font-size: 12px !important; } } + +.breadcrumb-nav-list-item::before { display: none; } + +.breadcrumb-nav-list-item::after { display: inline-block; margin-right: 0.5rem; margin-left: 0.5rem; color: #959396; content: "/"; } + +.breadcrumb-nav-list-item:last-child::after { content: ""; } + +h1, .text-alpha { font-size: 32px !important; line-height: 1.25; font-weight: 300; } + +@media (min-width: 31.25rem) { h1, .text-alpha { font-size: 36px !important; } } + +h2, .text-beta { font-size: 18px !important; } + +@media (min-width: 31.25rem) { h2, .text-beta { font-size: 24px !important; line-height: 1.25; } } + +h3, .text-gamma { font-size: 16px !important; } + +@media (min-width: 31.25rem) { h3, .text-gamma { font-size: 18px !important; } } + +h4, .text-delta { font-size: 11px !important; font-weight: 400; text-transform: uppercase; letter-spacing: 0.1em; } + +@media (min-width: 31.25rem) { h4, .text-delta { font-size: 12px !important; } } + +h4 code { text-transform: none; } + +h5, .text-epsilon { font-size: 12px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h5, .text-epsilon { font-size: 14px !important; } } + +h6, .text-zeta { font-size: 11px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h6, .text-zeta { font-size: 12px !important; } } + +.text-small { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .text-small { font-size: 12px !important; } } + +.text-mono { font-family: "SFMono-Regular", Menlo, Consolas, Monospace !important; } + +.text-left { text-align: left !important; } + +.text-center { text-align: center !important; } + +.text-right { text-align: right !important; } + +.label, .label-blue { display: inline-block; padding-top: 0.16em; padding-right: 0.56em; padding-bottom: 0.16em; padding-left: 0.56em; margin-right: 0.5rem; margin-left: 0.5rem; color: #fff; text-transform: uppercase; vertical-align: middle; background-color: #2869e6; font-size: 11px !important; border-radius: 12px; } + +@media (min-width: 31.25rem) { .label, .label-blue { font-size: 12px !important; } } + +.label-green { background-color: #009c7b; } + +.label-purple { background-color: #5e41d0; } + +.label-red { background-color: #e94c4c; } + +.label-yellow { color: #44434d; background-color: #f7d12e; } + +.btn { display: inline-block; box-sizing: border-box; padding-top: 0.3em; padding-right: 1em; padding-bottom: 0.3em; padding-left: 1em; margin: 0; font-family: inherit; font-size: inherit; font-weight: 500; line-height: 1.5; color: #264caf; text-decoration: none; vertical-align: baseline; cursor: pointer; background-color: #f7f7f7; border-width: 0; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); appearance: none; } + +.btn:focus { text-decoration: none; outline: none; box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:focus:hover, .btn.selected:focus { box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:hover, .btn.zeroclipboard-is-hover { color: #2448a7; } + +.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: #f4f4f4; } + +.btn:active, .btn.selected, .btn.zeroclipboard-is-active { background-color: #efefef; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn.selected:hover { background-color: #cfcfcf; } + +.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; box-shadow: none; } + +.btn-outline { color: #264caf; background: transparent; box-shadow: inset 0 0 0 2px #e6e1e8; } + +.btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { color: #22459e; text-decoration: none; background-color: transparent; box-shadow: inset 0 0 0 3px #e6e1e8; } + +.btn-outline:focus { text-decoration: none; outline: none; box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn-outline:focus:hover, .btn-outline.selected:focus { box-shadow: inset 0 0 0 2px #5c5962; } + +.btn-primary { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-primary:hover, .btn-primary.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-primary.selected:hover { background-color: #472cb2; } + +.btn-purple { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-purple:hover, .btn-purple.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-purple.selected:hover { background-color: #472cb2; } + +.btn-blue { color: #fff; background-color: #227efa; background-image: linear-gradient(#4593fb, #227efa); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-blue:hover, .btn-blue.zeroclipboard-is-hover { color: #fff; background-color: #1878fa; background-image: linear-gradient(#368afa, #1878fa); } + +.btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { background-color: #1375f9; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-blue.selected:hover { background-color: #0669ed; } + +.btn-green { color: #fff; background-color: #10ac7d; background-image: linear-gradient(#13cc95, #10ac7d); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-green:hover, .btn-green.zeroclipboard-is-hover { color: #fff; background-color: #0fa276; background-image: linear-gradient(#12be8b, #0fa276); } + +.btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { background-color: #0f9e73; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-green.selected:hover { background-color: #0d8662; } + +.search { position: relative; z-index: 2; flex-grow: 1; height: 4rem; padding: 0.5rem; transition: padding linear 200ms; } + +@media (min-width: 50rem) { .search { position: relative !important; width: auto !important; height: 100% !important; padding: 0; transition: none; } } + +.search-input-wrap { position: relative; z-index: 1; height: 3rem; overflow: hidden; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); transition: height linear 200ms; } + +@media (min-width: 50rem) { .search-input-wrap { position: absolute; width: 100%; max-width: 536px; height: 100% !important; border-radius: 0; box-shadow: none; transition: width ease 400ms; } } + +.search-input { position: absolute; width: 100%; height: 100%; padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 2.5rem; font-size: 16px; background-color: #fff; border-top: 0; border-right: 0; border-bottom: 0; border-left: 0; border-radius: 0; } + +@media (min-width: 50rem) { .search-input { padding-top: 1rem; padding-bottom: 1rem; padding-left: 3.5rem; font-size: 14px; background-color: #fff; transition: padding-left linear 200ms; } } + +.search-input:focus { outline: 0; } + +.search-input:focus + .search-label .search-icon { color: #264caf; } + +.search-label { position: absolute; display: flex; height: 100%; padding-left: 1rem; } + +@media (min-width: 50rem) { .search-label { padding-left: 2rem; transition: padding-left linear 200ms; } } + +.search-label .search-icon { width: 1.2rem; height: 1.2rem; align-self: center; color: #959396; } + +.search-results { position: absolute; left: 0; display: none; width: 100%; max-height: calc(100% - 4rem); overflow-y: auto; background-color: #fff; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +@media (min-width: 50rem) { .search-results { top: 100%; width: 536px; max-height: calc(100vh - 200%) !important; } } + +.search-results-list { padding-left: 0; margin-bottom: 0.25rem; list-style: none; font-size: 14px !important; } + +@media (min-width: 31.25rem) { .search-results-list { font-size: 16px !important; } } + +@media (min-width: 50rem) { .search-results-list { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-results-list { font-size: 14px !important; } } + +.search-results-list-item { padding: 0; margin: 0; } + +.search-result { display: block; padding-top: 0.25rem; padding-right: 0.75rem; padding-bottom: 0.25rem; padding-left: 0.75rem; } + +.search-result:hover, .search-result.active { background-color: #CDEBFA; } + +.search-result-title { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; } + +@media (min-width: 31.25rem) { .search-result-title { display: inline-block; width: 40%; padding-right: 0.5rem; vertical-align: top; } } + +.search-result-doc { display: flex; align-items: center; word-wrap: break-word; } + +.search-result-doc.search-result-doc-parent { opacity: 0.5; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 14px !important; } } + +@media (min-width: 50rem) { .search-result-doc.search-result-doc-parent { font-size: 11px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 12px !important; } } + +.search-result-doc .search-result-icon { width: 1rem; height: 1rem; margin-right: 0.5rem; color: #264caf; flex-shrink: 0; } + +.search-result-doc .search-result-doc-title { overflow: auto; } + +.search-result-section { margin-left: 1.5rem; word-wrap: break-word; } + +.search-result-rel-url { display: block; margin-left: 1.5rem; overflow: hidden; color: #959396; text-overflow: ellipsis; white-space: nowrap; font-size: 9px !important; } + +@media (min-width: 31.25rem) { .search-result-rel-url { font-size: 10px !important; } } + +.search-result-previews { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; margin-left: 0.5rem; color: #959396; word-wrap: break-word; border-left: 1px solid; border-left-color: rgba(12, 43, 72, 0.1); font-size: 11px !important; } + +@media (min-width: 31.25rem) { .search-result-previews { font-size: 12px !important; } } + +@media (min-width: 31.25rem) { .search-result-previews { display: inline-block; width: 60%; padding-left: 0.5rem; margin-left: 0; vertical-align: top; } } + +.search-result-preview + .search-result-preview { margin-top: 0.25rem; } + +.search-result-highlight { font-weight: bold; } + +.search-no-result { padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-no-result { font-size: 14px !important; } } + +.search-button { position: fixed; right: 1rem; bottom: 1rem; display: flex; width: 3.5rem; height: 3.5rem; background-color: #fff; border: 1px solid rgba(38, 76, 175, 0.3); border-radius: 1.75rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); align-items: center; justify-content: center; } + +.search-overlay { position: fixed; top: 0; left: 0; z-index: 1; width: 0; height: 0; background-color: rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } + +.search-active .search { position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 0; } + +.search-active .search-input-wrap { height: 4rem; border-radius: 0; } + +@media (min-width: 50rem) { .search-active .search-input-wrap { width: 536px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } + +.search-active .search-input { background-color: #fff; } + +@media (min-width: 50rem) { .search-active .search-input { padding-left: 2.3rem; } } + +@media (min-width: 50rem) { .search-active .search-label { padding-left: 0.6rem; } } + +.search-active .search-results { display: block; } + +.search-active .search-overlay { width: 100%; height: 100%; opacity: 1; transition: opacity ease 400ms, width 0s, height 0s; } + +@media (min-width: 50rem) { .search-active .main { position: fixed; right: 0; left: 0; } } + +.search-active .main-header { padding-top: 4rem; } + +@media (min-width: 50rem) { .search-active .main-header { padding-top: 0; } } + +.table-wrapper { display: block; width: 100%; max-width: 100%; margin-bottom: 1.5rem; overflow-x: auto; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +table { display: table; min-width: 100%; border-collapse: separate; } + +th, td { font-size: 12px !important; min-width: 120px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; background-color: #fff; border-bottom: 1px solid rgba(12, 43, 72, 0.5); border-left: 1px solid rgba(12, 43, 72, 0.1); } + +@media (min-width: 31.25rem) { th, td { font-size: 14px !important; } } + +th:first-of-type, td:first-of-type { border-left: 0; } + +tbody tr:last-of-type th, tbody tr:last-of-type td { border-bottom: 0; } + +tbody tr:last-of-type td { padding-bottom: 0.75rem; } + +thead th { border-bottom: 1px solid rgba(12, 43, 72, 0.1); } + +code { padding: 0.2em 0.15em; font-weight: 400; background-color: #f5f6fa; border: 1px solid rgba(12, 43, 72, 0.1); border-radius: 4px; } + +a:visited code { border-color: rgba(12, 43, 72, 0.1); } + +div.highlighter-rouge { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; overflow-x: auto; background-color: #f5f6fa; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +div.highlighter-rouge div.highlight, div.highlighter-rouge pre.highlight, div.highlighter-rouge code { padding: 0; margin: 0; border: 0; } + +figure.highlight { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; background-color: #f5f6fa; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +figure.highlight pre, figure.highlight code { padding: 0; margin: 0; border: 0; } + +.highlight .table-wrapper { padding: 0; margin: 0; border: 0; box-shadow: none; } + +.highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 11px !important; min-width: 0; padding: 0; background-color: #f5f6fa; border: 0; } + +@media (min-width: 31.25rem) { .highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 12px !important; } } + +.highlight .table-wrapper td.gl { padding-right: 0.75rem; } + +.highlight .table-wrapper pre { margin: 0; line-height: 2; } + +.highlight .c { color: #586e75; } + +.highlight .err { color: #93a1a1; } + +.highlight .g { color: #93a1a1; } + +.highlight .k { color: #859900; } + +.highlight .l { color: #93a1a1; } + +.highlight .n { color: #93a1a1; } + +.highlight .o { color: #859900; } + +.highlight .x { color: #cb4b16; } + +.highlight .p { color: #93a1a1; } + +.highlight .cm { color: #586e75; } + +.highlight .cp { color: #859900; } + +.highlight .c1 { color: #586e75; } + +.highlight .cs { color: #859900; } + +.highlight .gd { color: #2aa198; } + +.highlight .ge { font-style: italic; color: #93a1a1; } + +.highlight .gr { color: #dc322f; } + +.highlight .gh { color: #cb4b16; } + +.highlight .gi { color: #859900; } + +.highlight .go { color: #93a1a1; } + +.highlight .gp { color: #93a1a1; } + +.highlight .gs { font-weight: bold; color: #93a1a1; } + +.highlight .gu { color: #cb4b16; } + +.highlight .gt { color: #93a1a1; } + +.highlight .kc { color: #cb4b16; } + +.highlight .kd { color: #268bd2; } + +.highlight .kn { color: #859900; } + +.highlight .kp { color: #859900; } + +.highlight .kr { color: #268bd2; } + +.highlight .kt { color: #dc322f; } + +.highlight .ld { color: #93a1a1; } + +.highlight .m { color: #2aa198; } + +.highlight .s { color: #2aa198; } + +.highlight .na { color: #555; } + +.highlight .nb { color: #b58900; } + +.highlight .nc { color: #268bd2; } + +.highlight .no { color: #cb4b16; } + +.highlight .nd { color: #268bd2; } + +.highlight .ni { color: #cb4b16; } + +.highlight .ne { color: #cb4b16; } + +.highlight .nf { color: #268bd2; } + +.highlight .nl { color: #555; } + +.highlight .nn { color: #93a1a1; } + +.highlight .nx { color: #555; } + +.highlight .py { color: #93a1a1; } + +.highlight .nt { color: #268bd2; } + +.highlight .nv { color: #268bd2; } + +.highlight .ow { color: #859900; } + +.highlight .w { color: #93a1a1; } + +.highlight .mf { color: #2aa198; } + +.highlight .mh { color: #2aa198; } + +.highlight .mi { color: #2aa198; } + +.highlight .mo { color: #2aa198; } + +.highlight .sb { color: #586e75; } + +.highlight .sc { color: #2aa198; } + +.highlight .sd { color: #93a1a1; } + +.highlight .s2 { color: #2aa198; } + +.highlight .se { color: #cb4b16; } + +.highlight .sh { color: #93a1a1; } + +.highlight .si { color: #2aa198; } + +.highlight .sx { color: #2aa198; } + +.highlight .sr { color: #dc322f; } + +.highlight .s1 { color: #2aa198; } + +.highlight .ss { color: #2aa198; } + +.highlight .bp { color: #268bd2; } + +.highlight .vc { color: #268bd2; } + +.highlight .vg { color: #268bd2; } + +.highlight .vi { color: #268bd2; } + +.highlight .il { color: #2aa198; } + +.code-example { padding: 0.75rem; margin-bottom: 0.75rem; overflow: auto; border: 1px solid rgba(12, 43, 72, 0.1); border-radius: 4px; } + +.code-example + .highlighter-rouge, .code-example + figure.highlight { position: relative; margin-top: -1rem; border-right: 1px solid rgba(12, 43, 72, 0.1); border-bottom: 1px solid rgba(12, 43, 72, 0.1); border-left: 1px solid rgba(12, 43, 72, 0.1); border-top-left-radius: 0; border-top-right-radius: 0; } + +.text-grey-dk-000 { color: #959396 !important; } + +.text-grey-dk-100 { color: #5c5962 !important; } + +.text-grey-dk-200 { color: #44434d !important; } + +.text-grey-dk-250 { color: #302d36 !important; } + +.text-grey-dk-300 { color: #27262b !important; } + +.text-grey-lt-000 { color: #f5f6fa !important; } + +.text-grey-lt-100 { color: #eeebee !important; } + +.text-grey-lt-200 { color: #ecebed !important; } + +.text-grey-lt-300 { color: #e6e1e8 !important; } + +.text-blue-000 { color: #2c84fa !important; } + +.text-blue-100 { color: #2869e6 !important; } + +.text-blue-200 { color: #264caf !important; } + +.text-blue-300 { color: #183385 !important; } + +.text-green-000 { color: #41d693 !important; } + +.text-green-100 { color: #11b584 !important; } + +.text-green-200 { color: #009c7b !important; } + +.text-green-300 { color: #026e57 !important; } + +.text-purple-000 { color: #7253ed !important; } + +.text-purple-100 { color: #5e41d0 !important; } + +.text-purple-200 { color: #4e26af !important; } + +.text-purple-300 { color: #381885 !important; } + +.text-yellow-000 { color: #ffeb82 !important; } + +.text-yellow-100 { color: #fadf50 !important; } + +.text-yellow-200 { color: #f7d12e !important; } + +.text-yellow-300 { color: #e7af06 !important; } + +.text-red-000 { color: #f77e7e !important; } + +.text-red-100 { color: #f96e65 !important; } + +.text-red-200 { color: #e94c4c !important; } + +.text-red-300 { color: #dd2e2e !important; } + +.bg-grey-dk-000 { background-color: #959396 !important; } + +.bg-grey-dk-100 { background-color: #5c5962 !important; } + +.bg-grey-dk-200 { background-color: #44434d !important; } + +.bg-grey-dk-250 { background-color: #302d36 !important; } + +.bg-grey-dk-300 { background-color: #27262b !important; } + +.bg-grey-lt-000 { background-color: #f5f6fa !important; } + +.bg-grey-lt-100 { background-color: #eeebee !important; } + +.bg-grey-lt-200 { background-color: #ecebed !important; } + +.bg-grey-lt-300 { background-color: #e6e1e8 !important; } + +.bg-blue-000 { background-color: #2c84fa !important; } + +.bg-blue-100 { background-color: #2869e6 !important; } + +.bg-blue-200 { background-color: #264caf !important; } + +.bg-blue-300 { background-color: #183385 !important; } + +.bg-green-000 { background-color: #41d693 !important; } + +.bg-green-100 { background-color: #11b584 !important; } + +.bg-green-200 { background-color: #009c7b !important; } + +.bg-green-300 { background-color: #026e57 !important; } + +.bg-purple-000 { background-color: #7253ed !important; } + +.bg-purple-100 { background-color: #5e41d0 !important; } + +.bg-purple-200 { background-color: #4e26af !important; } + +.bg-purple-300 { background-color: #381885 !important; } + +.bg-yellow-000 { background-color: #ffeb82 !important; } + +.bg-yellow-100 { background-color: #fadf50 !important; } + +.bg-yellow-200 { background-color: #f7d12e !important; } + +.bg-yellow-300 { background-color: #e7af06 !important; } + +.bg-red-000 { background-color: #f77e7e !important; } + +.bg-red-100 { background-color: #f96e65 !important; } + +.bg-red-200 { background-color: #e94c4c !important; } + +.bg-red-300 { background-color: #dd2e2e !important; } + +.d-block { display: block !important; } + +.d-flex { display: flex !important; } + +.d-inline { display: inline !important; } + +.d-inline-block { display: inline-block !important; } + +.d-none { display: none !important; } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +.float-left { float: left !important; } + +.float-right { float: right !important; } + +.flex-justify-start { justify-content: flex-start !important; } + +.flex-justify-end { justify-content: flex-end !important; } + +.flex-justify-between { justify-content: space-between !important; } + +.flex-justify-around { justify-content: space-around !important; } + +.v-align-baseline { vertical-align: baseline !important; } + +.v-align-bottom { vertical-align: bottom !important; } + +.v-align-middle { vertical-align: middle !important; } + +.v-align-text-bottom { vertical-align: text-bottom !important; } + +.v-align-text-top { vertical-align: text-top !important; } + +.v-align-top { vertical-align: top !important; } + +.fs-1 { font-size: 9px !important; } + +@media (min-width: 31.25rem) { .fs-1 { font-size: 10px !important; } } + +.fs-2 { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .fs-2 { font-size: 12px !important; } } + +.fs-3 { font-size: 12px !important; } + +@media (min-width: 31.25rem) { .fs-3 { font-size: 14px !important; } } + +.fs-4 { font-size: 14px !important; } + +@media (min-width: 31.25rem) { .fs-4 { font-size: 16px !important; } } + +.fs-5 { font-size: 16px !important; } + +@media (min-width: 31.25rem) { .fs-5 { font-size: 18px !important; } } + +.fs-6 { font-size: 18px !important; } + +@media (min-width: 31.25rem) { .fs-6 { font-size: 24px !important; line-height: 1.25; } } + +.fs-7 { font-size: 24px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-7 { font-size: 32px !important; } } + +.fs-8 { font-size: 32px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-8 { font-size: 36px !important; } } + +.fs-9 { font-size: 36px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-9 { font-size: 42px !important; } } + +.fs-10 { font-size: 42px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-10 { font-size: 48px !important; } } + +.fw-300 { font-weight: 300 !important; } + +.fw-400 { font-weight: 400 !important; } + +.fw-500 { font-weight: 500 !important; } + +.fw-700 { font-weight: 700 !important; } + +.lh-0 { line-height: 0 !important; } + +.lh-default { line-height: 1.4; } + +.lh-tight { line-height: 1.25; } + +.ls-5 { letter-spacing: 0.05em !important; } + +.ls-10 { letter-spacing: 0.1em !important; } + +.ls-0 { letter-spacing: 0 !important; } + +.text-uppercase { text-transform: uppercase !important; } + +.list-style-none { padding: 0 !important; margin: 0 !important; list-style: none !important; } + +.list-style-none li::before { display: none !important; } + +.mx-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-0 { margin: 0 !important; } + +.mt-0 { margin-top: 0 !important; } + +.mr-0 { margin-right: 0 !important; } + +.mb-0 { margin-bottom: 0 !important; } + +.ml-0 { margin-left: 0 !important; } + +.mx-0 { margin-right: 0 !important; margin-left: 0 !important; } + +.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + +.mxn-0 { margin-right: -0 !important; margin-left: -0 !important; } + +.mx-0-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-1 { margin: 0.25rem !important; } + +.mt-1 { margin-top: 0.25rem !important; } + +.mr-1 { margin-right: 0.25rem !important; } + +.mb-1 { margin-bottom: 0.25rem !important; } + +.ml-1 { margin-left: 0.25rem !important; } + +.mx-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } + +.my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } + +.mxn-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } + +.mx-1-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-2 { margin: 0.5rem !important; } + +.mt-2 { margin-top: 0.5rem !important; } + +.mr-2 { margin-right: 0.5rem !important; } + +.mb-2 { margin-bottom: 0.5rem !important; } + +.ml-2 { margin-left: 0.5rem !important; } + +.mx-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } + +.my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } + +.mxn-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } + +.mx-2-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-3 { margin: 0.75rem !important; } + +.mt-3 { margin-top: 0.75rem !important; } + +.mr-3 { margin-right: 0.75rem !important; } + +.mb-3 { margin-bottom: 0.75rem !important; } + +.ml-3 { margin-left: 0.75rem !important; } + +.mx-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } + +.my-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } + +.mxn-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } + +.mx-3-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-4 { margin: 1rem !important; } + +.mt-4 { margin-top: 1rem !important; } + +.mr-4 { margin-right: 1rem !important; } + +.mb-4 { margin-bottom: 1rem !important; } + +.ml-4 { margin-left: 1rem !important; } + +.mx-4 { margin-right: 1rem !important; margin-left: 1rem !important; } + +.my-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } + +.mxn-4 { margin-right: -1rem !important; margin-left: -1rem !important; } + +.mx-4-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-5 { margin: 1.5rem !important; } + +.mt-5 { margin-top: 1.5rem !important; } + +.mr-5 { margin-right: 1.5rem !important; } + +.mb-5 { margin-bottom: 1.5rem !important; } + +.ml-5 { margin-left: 1.5rem !important; } + +.mx-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } + +.my-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } + +.mxn-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } + +.mx-5-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-6 { margin: 2rem !important; } + +.mt-6 { margin-top: 2rem !important; } + +.mr-6 { margin-right: 2rem !important; } + +.mb-6 { margin-bottom: 2rem !important; } + +.ml-6 { margin-left: 2rem !important; } + +.mx-6 { margin-right: 2rem !important; margin-left: 2rem !important; } + +.my-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } + +.mxn-6 { margin-right: -2rem !important; margin-left: -2rem !important; } + +.mx-6-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-7 { margin: 2.5rem !important; } + +.mt-7 { margin-top: 2.5rem !important; } + +.mr-7 { margin-right: 2.5rem !important; } + +.mb-7 { margin-bottom: 2.5rem !important; } + +.ml-7 { margin-left: 2.5rem !important; } + +.mx-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } + +.my-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } + +.mxn-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } + +.mx-7-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-8 { margin: 3rem !important; } + +.mt-8 { margin-top: 3rem !important; } + +.mr-8 { margin-right: 3rem !important; } + +.mb-8 { margin-bottom: 3rem !important; } + +.ml-8 { margin-left: 3rem !important; } + +.mx-8 { margin-right: 3rem !important; margin-left: 3rem !important; } + +.my-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } + +.mxn-8 { margin-right: -3rem !important; margin-left: -3rem !important; } + +.mx-8-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-9 { margin: 3.5rem !important; } + +.mt-9 { margin-top: 3.5rem !important; } + +.mr-9 { margin-right: 3.5rem !important; } + +.mb-9 { margin-bottom: 3.5rem !important; } + +.ml-9 { margin-left: 3.5rem !important; } + +.mx-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } + +.my-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } + +.mxn-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } + +.mx-9-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-10 { margin: 4rem !important; } + +.mt-10 { margin-top: 4rem !important; } + +.mr-10 { margin-right: 4rem !important; } + +.mb-10 { margin-bottom: 4rem !important; } + +.ml-10 { margin-left: 4rem !important; } + +.mx-10 { margin-right: 4rem !important; margin-left: 4rem !important; } + +.my-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } + +.mxn-10 { margin-right: -4rem !important; margin-left: -4rem !important; } + +.mx-10-auto { margin-right: auto !important; margin-left: auto !important; } + +@media (min-width: 20rem) { .m-xs-0 { margin: 0 !important; } .mt-xs-0 { margin-top: 0 !important; } .mr-xs-0 { margin-right: 0 !important; } .mb-xs-0 { margin-bottom: 0 !important; } .ml-xs-0 { margin-left: 0 !important; } .mx-xs-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xs-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xs-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 20rem) { .m-xs-1 { margin: 0.25rem !important; } .mt-xs-1 { margin-top: 0.25rem !important; } .mr-xs-1 { margin-right: 0.25rem !important; } .mb-xs-1 { margin-bottom: 0.25rem !important; } .ml-xs-1 { margin-left: 0.25rem !important; } .mx-xs-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xs-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xs-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 20rem) { .m-xs-2 { margin: 0.5rem !important; } .mt-xs-2 { margin-top: 0.5rem !important; } .mr-xs-2 { margin-right: 0.5rem !important; } .mb-xs-2 { margin-bottom: 0.5rem !important; } .ml-xs-2 { margin-left: 0.5rem !important; } .mx-xs-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xs-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xs-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-3 { margin: 0.75rem !important; } .mt-xs-3 { margin-top: 0.75rem !important; } .mr-xs-3 { margin-right: 0.75rem !important; } .mb-xs-3 { margin-bottom: 0.75rem !important; } .ml-xs-3 { margin-left: 0.75rem !important; } .mx-xs-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xs-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xs-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 20rem) { .m-xs-4 { margin: 1rem !important; } .mt-xs-4 { margin-top: 1rem !important; } .mr-xs-4 { margin-right: 1rem !important; } .mb-xs-4 { margin-bottom: 1rem !important; } .ml-xs-4 { margin-left: 1rem !important; } .mx-xs-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xs-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xs-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 20rem) { .m-xs-5 { margin: 1.5rem !important; } .mt-xs-5 { margin-top: 1.5rem !important; } .mr-xs-5 { margin-right: 1.5rem !important; } .mb-xs-5 { margin-bottom: 1.5rem !important; } .ml-xs-5 { margin-left: 1.5rem !important; } .mx-xs-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xs-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xs-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-6 { margin: 2rem !important; } .mt-xs-6 { margin-top: 2rem !important; } .mr-xs-6 { margin-right: 2rem !important; } .mb-xs-6 { margin-bottom: 2rem !important; } .ml-xs-6 { margin-left: 2rem !important; } .mx-xs-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xs-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xs-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 20rem) { .m-xs-7 { margin: 2.5rem !important; } .mt-xs-7 { margin-top: 2.5rem !important; } .mr-xs-7 { margin-right: 2.5rem !important; } .mb-xs-7 { margin-bottom: 2.5rem !important; } .ml-xs-7 { margin-left: 2.5rem !important; } .mx-xs-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xs-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xs-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-8 { margin: 3rem !important; } .mt-xs-8 { margin-top: 3rem !important; } .mr-xs-8 { margin-right: 3rem !important; } .mb-xs-8 { margin-bottom: 3rem !important; } .ml-xs-8 { margin-left: 3rem !important; } .mx-xs-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xs-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xs-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 20rem) { .m-xs-9 { margin: 3.5rem !important; } .mt-xs-9 { margin-top: 3.5rem !important; } .mr-xs-9 { margin-right: 3.5rem !important; } .mb-xs-9 { margin-bottom: 3.5rem !important; } .ml-xs-9 { margin-left: 3.5rem !important; } .mx-xs-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xs-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xs-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-10 { margin: 4rem !important; } .mt-xs-10 { margin-top: 4rem !important; } .mr-xs-10 { margin-right: 4rem !important; } .mb-xs-10 { margin-bottom: 4rem !important; } .ml-xs-10 { margin-left: 4rem !important; } .mx-xs-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xs-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xs-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-0 { margin: 0 !important; } .mt-sm-0 { margin-top: 0 !important; } .mr-sm-0 { margin-right: 0 !important; } .mb-sm-0 { margin-bottom: 0 !important; } .ml-sm-0 { margin-left: 0 !important; } .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-sm-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 31.25rem) { .m-sm-1 { margin: 0.25rem !important; } .mt-sm-1 { margin-top: 0.25rem !important; } .mr-sm-1 { margin-right: 0.25rem !important; } .mb-sm-1 { margin-bottom: 0.25rem !important; } .ml-sm-1 { margin-left: 0.25rem !important; } .mx-sm-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-sm-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-sm-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-2 { margin: 0.5rem !important; } .mt-sm-2 { margin-top: 0.5rem !important; } .mr-sm-2 { margin-right: 0.5rem !important; } .mb-sm-2 { margin-bottom: 0.5rem !important; } .ml-sm-2 { margin-left: 0.5rem !important; } .mx-sm-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-sm-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-sm-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-3 { margin: 0.75rem !important; } .mt-sm-3 { margin-top: 0.75rem !important; } .mr-sm-3 { margin-right: 0.75rem !important; } .mb-sm-3 { margin-bottom: 0.75rem !important; } .ml-sm-3 { margin-left: 0.75rem !important; } .mx-sm-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-sm-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-sm-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-4 { margin: 1rem !important; } .mt-sm-4 { margin-top: 1rem !important; } .mr-sm-4 { margin-right: 1rem !important; } .mb-sm-4 { margin-bottom: 1rem !important; } .ml-sm-4 { margin-left: 1rem !important; } .mx-sm-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-sm-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-sm-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-5 { margin: 1.5rem !important; } .mt-sm-5 { margin-top: 1.5rem !important; } .mr-sm-5 { margin-right: 1.5rem !important; } .mb-sm-5 { margin-bottom: 1.5rem !important; } .ml-sm-5 { margin-left: 1.5rem !important; } .mx-sm-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-sm-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-sm-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-6 { margin: 2rem !important; } .mt-sm-6 { margin-top: 2rem !important; } .mr-sm-6 { margin-right: 2rem !important; } .mb-sm-6 { margin-bottom: 2rem !important; } .ml-sm-6 { margin-left: 2rem !important; } .mx-sm-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-sm-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-sm-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-7 { margin: 2.5rem !important; } .mt-sm-7 { margin-top: 2.5rem !important; } .mr-sm-7 { margin-right: 2.5rem !important; } .mb-sm-7 { margin-bottom: 2.5rem !important; } .ml-sm-7 { margin-left: 2.5rem !important; } .mx-sm-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-sm-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-sm-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-8 { margin: 3rem !important; } .mt-sm-8 { margin-top: 3rem !important; } .mr-sm-8 { margin-right: 3rem !important; } .mb-sm-8 { margin-bottom: 3rem !important; } .ml-sm-8 { margin-left: 3rem !important; } .mx-sm-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-sm-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-sm-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-9 { margin: 3.5rem !important; } .mt-sm-9 { margin-top: 3.5rem !important; } .mr-sm-9 { margin-right: 3.5rem !important; } .mb-sm-9 { margin-bottom: 3.5rem !important; } .ml-sm-9 { margin-left: 3.5rem !important; } .mx-sm-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-sm-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-sm-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-10 { margin: 4rem !important; } .mt-sm-10 { margin-top: 4rem !important; } .mr-sm-10 { margin-right: 4rem !important; } .mb-sm-10 { margin-bottom: 4rem !important; } .ml-sm-10 { margin-left: 4rem !important; } .mx-sm-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-sm-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-sm-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 50rem) { .m-md-0 { margin: 0 !important; } .mt-md-0 { margin-top: 0 !important; } .mr-md-0 { margin-right: 0 !important; } .mb-md-0 { margin-bottom: 0 !important; } .ml-md-0 { margin-left: 0 !important; } .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-md-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 50rem) { .m-md-1 { margin: 0.25rem !important; } .mt-md-1 { margin-top: 0.25rem !important; } .mr-md-1 { margin-right: 0.25rem !important; } .mb-md-1 { margin-bottom: 0.25rem !important; } .ml-md-1 { margin-left: 0.25rem !important; } .mx-md-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-md-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-md-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 50rem) { .m-md-2 { margin: 0.5rem !important; } .mt-md-2 { margin-top: 0.5rem !important; } .mr-md-2 { margin-right: 0.5rem !important; } .mb-md-2 { margin-bottom: 0.5rem !important; } .ml-md-2 { margin-left: 0.5rem !important; } .mx-md-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-md-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-md-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 50rem) { .m-md-3 { margin: 0.75rem !important; } .mt-md-3 { margin-top: 0.75rem !important; } .mr-md-3 { margin-right: 0.75rem !important; } .mb-md-3 { margin-bottom: 0.75rem !important; } .ml-md-3 { margin-left: 0.75rem !important; } .mx-md-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-md-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-md-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 50rem) { .m-md-4 { margin: 1rem !important; } .mt-md-4 { margin-top: 1rem !important; } .mr-md-4 { margin-right: 1rem !important; } .mb-md-4 { margin-bottom: 1rem !important; } .ml-md-4 { margin-left: 1rem !important; } .mx-md-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-md-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-md-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 50rem) { .m-md-5 { margin: 1.5rem !important; } .mt-md-5 { margin-top: 1.5rem !important; } .mr-md-5 { margin-right: 1.5rem !important; } .mb-md-5 { margin-bottom: 1.5rem !important; } .ml-md-5 { margin-left: 1.5rem !important; } .mx-md-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-md-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-md-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 50rem) { .m-md-6 { margin: 2rem !important; } .mt-md-6 { margin-top: 2rem !important; } .mr-md-6 { margin-right: 2rem !important; } .mb-md-6 { margin-bottom: 2rem !important; } .ml-md-6 { margin-left: 2rem !important; } .mx-md-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-md-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-md-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 50rem) { .m-md-7 { margin: 2.5rem !important; } .mt-md-7 { margin-top: 2.5rem !important; } .mr-md-7 { margin-right: 2.5rem !important; } .mb-md-7 { margin-bottom: 2.5rem !important; } .ml-md-7 { margin-left: 2.5rem !important; } .mx-md-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-md-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-md-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 50rem) { .m-md-8 { margin: 3rem !important; } .mt-md-8 { margin-top: 3rem !important; } .mr-md-8 { margin-right: 3rem !important; } .mb-md-8 { margin-bottom: 3rem !important; } .ml-md-8 { margin-left: 3rem !important; } .mx-md-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-md-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-md-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 50rem) { .m-md-9 { margin: 3.5rem !important; } .mt-md-9 { margin-top: 3.5rem !important; } .mr-md-9 { margin-right: 3.5rem !important; } .mb-md-9 { margin-bottom: 3.5rem !important; } .ml-md-9 { margin-left: 3.5rem !important; } .mx-md-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-md-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-md-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 50rem) { .m-md-10 { margin: 4rem !important; } .mt-md-10 { margin-top: 4rem !important; } .mr-md-10 { margin-right: 4rem !important; } .mb-md-10 { margin-bottom: 4rem !important; } .ml-md-10 { margin-left: 4rem !important; } .mx-md-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-md-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-md-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-0 { margin: 0 !important; } .mt-lg-0 { margin-top: 0 !important; } .mr-lg-0 { margin-right: 0 !important; } .mb-lg-0 { margin-bottom: 0 !important; } .ml-lg-0 { margin-left: 0 !important; } .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-lg-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 66.5rem) { .m-lg-1 { margin: 0.25rem !important; } .mt-lg-1 { margin-top: 0.25rem !important; } .mr-lg-1 { margin-right: 0.25rem !important; } .mb-lg-1 { margin-bottom: 0.25rem !important; } .ml-lg-1 { margin-left: 0.25rem !important; } .mx-lg-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-lg-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-lg-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-2 { margin: 0.5rem !important; } .mt-lg-2 { margin-top: 0.5rem !important; } .mr-lg-2 { margin-right: 0.5rem !important; } .mb-lg-2 { margin-bottom: 0.5rem !important; } .ml-lg-2 { margin-left: 0.5rem !important; } .mx-lg-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-lg-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-lg-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-3 { margin: 0.75rem !important; } .mt-lg-3 { margin-top: 0.75rem !important; } .mr-lg-3 { margin-right: 0.75rem !important; } .mb-lg-3 { margin-bottom: 0.75rem !important; } .ml-lg-3 { margin-left: 0.75rem !important; } .mx-lg-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-lg-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-lg-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-4 { margin: 1rem !important; } .mt-lg-4 { margin-top: 1rem !important; } .mr-lg-4 { margin-right: 1rem !important; } .mb-lg-4 { margin-bottom: 1rem !important; } .ml-lg-4 { margin-left: 1rem !important; } .mx-lg-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-lg-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-lg-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-5 { margin: 1.5rem !important; } .mt-lg-5 { margin-top: 1.5rem !important; } .mr-lg-5 { margin-right: 1.5rem !important; } .mb-lg-5 { margin-bottom: 1.5rem !important; } .ml-lg-5 { margin-left: 1.5rem !important; } .mx-lg-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-lg-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-lg-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-6 { margin: 2rem !important; } .mt-lg-6 { margin-top: 2rem !important; } .mr-lg-6 { margin-right: 2rem !important; } .mb-lg-6 { margin-bottom: 2rem !important; } .ml-lg-6 { margin-left: 2rem !important; } .mx-lg-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-lg-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-lg-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-7 { margin: 2.5rem !important; } .mt-lg-7 { margin-top: 2.5rem !important; } .mr-lg-7 { margin-right: 2.5rem !important; } .mb-lg-7 { margin-bottom: 2.5rem !important; } .ml-lg-7 { margin-left: 2.5rem !important; } .mx-lg-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-lg-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-lg-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-8 { margin: 3rem !important; } .mt-lg-8 { margin-top: 3rem !important; } .mr-lg-8 { margin-right: 3rem !important; } .mb-lg-8 { margin-bottom: 3rem !important; } .ml-lg-8 { margin-left: 3rem !important; } .mx-lg-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-lg-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-lg-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-9 { margin: 3.5rem !important; } .mt-lg-9 { margin-top: 3.5rem !important; } .mr-lg-9 { margin-right: 3.5rem !important; } .mb-lg-9 { margin-bottom: 3.5rem !important; } .ml-lg-9 { margin-left: 3.5rem !important; } .mx-lg-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-lg-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-lg-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-10 { margin: 4rem !important; } .mt-lg-10 { margin-top: 4rem !important; } .mr-lg-10 { margin-right: 4rem !important; } .mb-lg-10 { margin-bottom: 4rem !important; } .ml-lg-10 { margin-left: 4rem !important; } .mx-lg-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-lg-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-lg-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-0 { margin: 0 !important; } .mt-xl-0 { margin-top: 0 !important; } .mr-xl-0 { margin-right: 0 !important; } .mb-xl-0 { margin-bottom: 0 !important; } .ml-xl-0 { margin-left: 0 !important; } .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xl-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 87.5rem) { .m-xl-1 { margin: 0.25rem !important; } .mt-xl-1 { margin-top: 0.25rem !important; } .mr-xl-1 { margin-right: 0.25rem !important; } .mb-xl-1 { margin-bottom: 0.25rem !important; } .ml-xl-1 { margin-left: 0.25rem !important; } .mx-xl-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xl-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-2 { margin: 0.5rem !important; } .mt-xl-2 { margin-top: 0.5rem !important; } .mr-xl-2 { margin-right: 0.5rem !important; } .mb-xl-2 { margin-bottom: 0.5rem !important; } .ml-xl-2 { margin-left: 0.5rem !important; } .mx-xl-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xl-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-3 { margin: 0.75rem !important; } .mt-xl-3 { margin-top: 0.75rem !important; } .mr-xl-3 { margin-right: 0.75rem !important; } .mb-xl-3 { margin-bottom: 0.75rem !important; } .ml-xl-3 { margin-left: 0.75rem !important; } .mx-xl-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xl-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xl-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-4 { margin: 1rem !important; } .mt-xl-4 { margin-top: 1rem !important; } .mr-xl-4 { margin-right: 1rem !important; } .mb-xl-4 { margin-bottom: 1rem !important; } .ml-xl-4 { margin-left: 1rem !important; } .mx-xl-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xl-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xl-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-5 { margin: 1.5rem !important; } .mt-xl-5 { margin-top: 1.5rem !important; } .mr-xl-5 { margin-right: 1.5rem !important; } .mb-xl-5 { margin-bottom: 1.5rem !important; } .ml-xl-5 { margin-left: 1.5rem !important; } .mx-xl-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xl-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xl-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-6 { margin: 2rem !important; } .mt-xl-6 { margin-top: 2rem !important; } .mr-xl-6 { margin-right: 2rem !important; } .mb-xl-6 { margin-bottom: 2rem !important; } .ml-xl-6 { margin-left: 2rem !important; } .mx-xl-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xl-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xl-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-7 { margin: 2.5rem !important; } .mt-xl-7 { margin-top: 2.5rem !important; } .mr-xl-7 { margin-right: 2.5rem !important; } .mb-xl-7 { margin-bottom: 2.5rem !important; } .ml-xl-7 { margin-left: 2.5rem !important; } .mx-xl-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xl-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xl-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-8 { margin: 3rem !important; } .mt-xl-8 { margin-top: 3rem !important; } .mr-xl-8 { margin-right: 3rem !important; } .mb-xl-8 { margin-bottom: 3rem !important; } .ml-xl-8 { margin-left: 3rem !important; } .mx-xl-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xl-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xl-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-9 { margin: 3.5rem !important; } .mt-xl-9 { margin-top: 3.5rem !important; } .mr-xl-9 { margin-right: 3.5rem !important; } .mb-xl-9 { margin-bottom: 3.5rem !important; } .ml-xl-9 { margin-left: 3.5rem !important; } .mx-xl-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xl-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xl-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-10 { margin: 4rem !important; } .mt-xl-10 { margin-top: 4rem !important; } .mr-xl-10 { margin-right: 4rem !important; } .mb-xl-10 { margin-bottom: 4rem !important; } .ml-xl-10 { margin-left: 4rem !important; } .mx-xl-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xl-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xl-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +.p-0 { padding: 0 !important; } + +.pt-0 { padding-top: 0 !important; } + +.pr-0 { padding-right: 0 !important; } + +.pb-0 { padding-bottom: 0 !important; } + +.pl-0 { padding-left: 0 !important; } + +.px-0 { padding-right: 0 !important; padding-left: 0 !important; } + +.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + +.p-1 { padding: 0.25rem !important; } + +.pt-1 { padding-top: 0.25rem !important; } + +.pr-1 { padding-right: 0.25rem !important; } + +.pb-1 { padding-bottom: 0.25rem !important; } + +.pl-1 { padding-left: 0.25rem !important; } + +.px-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } + +.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } + +.p-2 { padding: 0.5rem !important; } + +.pt-2 { padding-top: 0.5rem !important; } + +.pr-2 { padding-right: 0.5rem !important; } + +.pb-2 { padding-bottom: 0.5rem !important; } + +.pl-2 { padding-left: 0.5rem !important; } + +.px-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } + +.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } + +.p-3 { padding: 0.75rem !important; } + +.pt-3 { padding-top: 0.75rem !important; } + +.pr-3 { padding-right: 0.75rem !important; } + +.pb-3 { padding-bottom: 0.75rem !important; } + +.pl-3 { padding-left: 0.75rem !important; } + +.px-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } + +.py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } + +.p-4 { padding: 1rem !important; } + +.pt-4 { padding-top: 1rem !important; } + +.pr-4 { padding-right: 1rem !important; } + +.pb-4 { padding-bottom: 1rem !important; } + +.pl-4 { padding-left: 1rem !important; } + +.px-4 { padding-right: 1rem !important; padding-left: 1rem !important; } + +.py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } + +.p-5 { padding: 1.5rem !important; } + +.pt-5 { padding-top: 1.5rem !important; } + +.pr-5 { padding-right: 1.5rem !important; } + +.pb-5 { padding-bottom: 1.5rem !important; } + +.pl-5 { padding-left: 1.5rem !important; } + +.px-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } + +.py-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } + +.p-6 { padding: 2rem !important; } + +.pt-6 { padding-top: 2rem !important; } + +.pr-6 { padding-right: 2rem !important; } + +.pb-6 { padding-bottom: 2rem !important; } + +.pl-6 { padding-left: 2rem !important; } + +.px-6 { padding-right: 2rem !important; padding-left: 2rem !important; } + +.py-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } + +.p-7 { padding: 2.5rem !important; } + +.pt-7 { padding-top: 2.5rem !important; } + +.pr-7 { padding-right: 2.5rem !important; } + +.pb-7 { padding-bottom: 2.5rem !important; } + +.pl-7 { padding-left: 2.5rem !important; } + +.px-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } + +.py-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } + +.p-8 { padding: 3rem !important; } + +.pt-8 { padding-top: 3rem !important; } + +.pr-8 { padding-right: 3rem !important; } + +.pb-8 { padding-bottom: 3rem !important; } + +.pl-8 { padding-left: 3rem !important; } + +.px-8 { padding-right: 3rem !important; padding-left: 3rem !important; } + +.py-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } + +.p-9 { padding: 3.5rem !important; } + +.pt-9 { padding-top: 3.5rem !important; } + +.pr-9 { padding-right: 3.5rem !important; } + +.pb-9 { padding-bottom: 3.5rem !important; } + +.pl-9 { padding-left: 3.5rem !important; } + +.px-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } + +.py-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } + +.p-10 { padding: 4rem !important; } + +.pt-10 { padding-top: 4rem !important; } + +.pr-10 { padding-right: 4rem !important; } + +.pb-10 { padding-bottom: 4rem !important; } + +.pl-10 { padding-left: 4rem !important; } + +.px-10 { padding-right: 4rem !important; padding-left: 4rem !important; } + +.py-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } + +@media (min-width: 20rem) { .p-xs-0 { padding: 0 !important; } .pt-xs-0 { padding-top: 0 !important; } .pr-xs-0 { padding-right: 0 !important; } .pb-xs-0 { padding-bottom: 0 !important; } .pl-xs-0 { padding-left: 0 !important; } .px-xs-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xs-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xs-1 { padding: 0.25rem !important; } .pt-xs-1 { padding-top: 0.25rem !important; } .pr-xs-1 { padding-right: 0.25rem !important; } .pb-xs-1 { padding-bottom: 0.25rem !important; } .pl-xs-1 { padding-left: 0.25rem !important; } .px-xs-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xs-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xs-2 { padding: 0.5rem !important; } .pt-xs-2 { padding-top: 0.5rem !important; } .pr-xs-2 { padding-right: 0.5rem !important; } .pb-xs-2 { padding-bottom: 0.5rem !important; } .pl-xs-2 { padding-left: 0.5rem !important; } .px-xs-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xs-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xs-3 { padding: 0.75rem !important; } .pt-xs-3 { padding-top: 0.75rem !important; } .pr-xs-3 { padding-right: 0.75rem !important; } .pb-xs-3 { padding-bottom: 0.75rem !important; } .pl-xs-3 { padding-left: 0.75rem !important; } .px-xs-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xs-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xs-4 { padding: 1rem !important; } .pt-xs-4 { padding-top: 1rem !important; } .pr-xs-4 { padding-right: 1rem !important; } .pb-xs-4 { padding-bottom: 1rem !important; } .pl-xs-4 { padding-left: 1rem !important; } .px-xs-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xs-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xs-5 { padding: 1.5rem !important; } .pt-xs-5 { padding-top: 1.5rem !important; } .pr-xs-5 { padding-right: 1.5rem !important; } .pb-xs-5 { padding-bottom: 1.5rem !important; } .pl-xs-5 { padding-left: 1.5rem !important; } .px-xs-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xs-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xs-6 { padding: 2rem !important; } .pt-xs-6 { padding-top: 2rem !important; } .pr-xs-6 { padding-right: 2rem !important; } .pb-xs-6 { padding-bottom: 2rem !important; } .pl-xs-6 { padding-left: 2rem !important; } .px-xs-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xs-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xs-7 { padding: 2.5rem !important; } .pt-xs-7 { padding-top: 2.5rem !important; } .pr-xs-7 { padding-right: 2.5rem !important; } .pb-xs-7 { padding-bottom: 2.5rem !important; } .pl-xs-7 { padding-left: 2.5rem !important; } .px-xs-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xs-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xs-8 { padding: 3rem !important; } .pt-xs-8 { padding-top: 3rem !important; } .pr-xs-8 { padding-right: 3rem !important; } .pb-xs-8 { padding-bottom: 3rem !important; } .pl-xs-8 { padding-left: 3rem !important; } .px-xs-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xs-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xs-9 { padding: 3.5rem !important; } .pt-xs-9 { padding-top: 3.5rem !important; } .pr-xs-9 { padding-right: 3.5rem !important; } .pb-xs-9 { padding-bottom: 3.5rem !important; } .pl-xs-9 { padding-left: 3.5rem !important; } .px-xs-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xs-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xs-10 { padding: 4rem !important; } .pt-xs-10 { padding-top: 4rem !important; } .pr-xs-10 { padding-right: 4rem !important; } .pb-xs-10 { padding-bottom: 4rem !important; } .pl-xs-10 { padding-left: 4rem !important; } .px-xs-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xs-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 31.25rem) { .p-sm-0 { padding: 0 !important; } .pt-sm-0 { padding-top: 0 !important; } .pr-sm-0 { padding-right: 0 !important; } .pb-sm-0 { padding-bottom: 0 !important; } .pl-sm-0 { padding-left: 0 !important; } .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-sm-1 { padding: 0.25rem !important; } .pt-sm-1 { padding-top: 0.25rem !important; } .pr-sm-1 { padding-right: 0.25rem !important; } .pb-sm-1 { padding-bottom: 0.25rem !important; } .pl-sm-1 { padding-left: 0.25rem !important; } .px-sm-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-sm-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-sm-2 { padding: 0.5rem !important; } .pt-sm-2 { padding-top: 0.5rem !important; } .pr-sm-2 { padding-right: 0.5rem !important; } .pb-sm-2 { padding-bottom: 0.5rem !important; } .pl-sm-2 { padding-left: 0.5rem !important; } .px-sm-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-sm-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-sm-3 { padding: 0.75rem !important; } .pt-sm-3 { padding-top: 0.75rem !important; } .pr-sm-3 { padding-right: 0.75rem !important; } .pb-sm-3 { padding-bottom: 0.75rem !important; } .pl-sm-3 { padding-left: 0.75rem !important; } .px-sm-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-sm-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-sm-4 { padding: 1rem !important; } .pt-sm-4 { padding-top: 1rem !important; } .pr-sm-4 { padding-right: 1rem !important; } .pb-sm-4 { padding-bottom: 1rem !important; } .pl-sm-4 { padding-left: 1rem !important; } .px-sm-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-sm-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-sm-5 { padding: 1.5rem !important; } .pt-sm-5 { padding-top: 1.5rem !important; } .pr-sm-5 { padding-right: 1.5rem !important; } .pb-sm-5 { padding-bottom: 1.5rem !important; } .pl-sm-5 { padding-left: 1.5rem !important; } .px-sm-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-sm-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-sm-6 { padding: 2rem !important; } .pt-sm-6 { padding-top: 2rem !important; } .pr-sm-6 { padding-right: 2rem !important; } .pb-sm-6 { padding-bottom: 2rem !important; } .pl-sm-6 { padding-left: 2rem !important; } .px-sm-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-sm-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-sm-7 { padding: 2.5rem !important; } .pt-sm-7 { padding-top: 2.5rem !important; } .pr-sm-7 { padding-right: 2.5rem !important; } .pb-sm-7 { padding-bottom: 2.5rem !important; } .pl-sm-7 { padding-left: 2.5rem !important; } .px-sm-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-sm-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-sm-8 { padding: 3rem !important; } .pt-sm-8 { padding-top: 3rem !important; } .pr-sm-8 { padding-right: 3rem !important; } .pb-sm-8 { padding-bottom: 3rem !important; } .pl-sm-8 { padding-left: 3rem !important; } .px-sm-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-sm-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-sm-9 { padding: 3.5rem !important; } .pt-sm-9 { padding-top: 3.5rem !important; } .pr-sm-9 { padding-right: 3.5rem !important; } .pb-sm-9 { padding-bottom: 3.5rem !important; } .pl-sm-9 { padding-left: 3.5rem !important; } .px-sm-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-sm-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-sm-10 { padding: 4rem !important; } .pt-sm-10 { padding-top: 4rem !important; } .pr-sm-10 { padding-right: 4rem !important; } .pb-sm-10 { padding-bottom: 4rem !important; } .pl-sm-10 { padding-left: 4rem !important; } .px-sm-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-sm-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 50rem) { .p-md-0 { padding: 0 !important; } .pt-md-0 { padding-top: 0 !important; } .pr-md-0 { padding-right: 0 !important; } .pb-md-0 { padding-bottom: 0 !important; } .pl-md-0 { padding-left: 0 !important; } .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-md-1 { padding: 0.25rem !important; } .pt-md-1 { padding-top: 0.25rem !important; } .pr-md-1 { padding-right: 0.25rem !important; } .pb-md-1 { padding-bottom: 0.25rem !important; } .pl-md-1 { padding-left: 0.25rem !important; } .px-md-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-md-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-md-2 { padding: 0.5rem !important; } .pt-md-2 { padding-top: 0.5rem !important; } .pr-md-2 { padding-right: 0.5rem !important; } .pb-md-2 { padding-bottom: 0.5rem !important; } .pl-md-2 { padding-left: 0.5rem !important; } .px-md-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-md-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-md-3 { padding: 0.75rem !important; } .pt-md-3 { padding-top: 0.75rem !important; } .pr-md-3 { padding-right: 0.75rem !important; } .pb-md-3 { padding-bottom: 0.75rem !important; } .pl-md-3 { padding-left: 0.75rem !important; } .px-md-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-md-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-md-4 { padding: 1rem !important; } .pt-md-4 { padding-top: 1rem !important; } .pr-md-4 { padding-right: 1rem !important; } .pb-md-4 { padding-bottom: 1rem !important; } .pl-md-4 { padding-left: 1rem !important; } .px-md-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-md-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-md-5 { padding: 1.5rem !important; } .pt-md-5 { padding-top: 1.5rem !important; } .pr-md-5 { padding-right: 1.5rem !important; } .pb-md-5 { padding-bottom: 1.5rem !important; } .pl-md-5 { padding-left: 1.5rem !important; } .px-md-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-md-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-md-6 { padding: 2rem !important; } .pt-md-6 { padding-top: 2rem !important; } .pr-md-6 { padding-right: 2rem !important; } .pb-md-6 { padding-bottom: 2rem !important; } .pl-md-6 { padding-left: 2rem !important; } .px-md-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-md-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-md-7 { padding: 2.5rem !important; } .pt-md-7 { padding-top: 2.5rem !important; } .pr-md-7 { padding-right: 2.5rem !important; } .pb-md-7 { padding-bottom: 2.5rem !important; } .pl-md-7 { padding-left: 2.5rem !important; } .px-md-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-md-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-md-8 { padding: 3rem !important; } .pt-md-8 { padding-top: 3rem !important; } .pr-md-8 { padding-right: 3rem !important; } .pb-md-8 { padding-bottom: 3rem !important; } .pl-md-8 { padding-left: 3rem !important; } .px-md-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-md-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-md-9 { padding: 3.5rem !important; } .pt-md-9 { padding-top: 3.5rem !important; } .pr-md-9 { padding-right: 3.5rem !important; } .pb-md-9 { padding-bottom: 3.5rem !important; } .pl-md-9 { padding-left: 3.5rem !important; } .px-md-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-md-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-md-10 { padding: 4rem !important; } .pt-md-10 { padding-top: 4rem !important; } .pr-md-10 { padding-right: 4rem !important; } .pb-md-10 { padding-bottom: 4rem !important; } .pl-md-10 { padding-left: 4rem !important; } .px-md-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-md-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 66.5rem) { .p-lg-0 { padding: 0 !important; } .pt-lg-0 { padding-top: 0 !important; } .pr-lg-0 { padding-right: 0 !important; } .pb-lg-0 { padding-bottom: 0 !important; } .pl-lg-0 { padding-left: 0 !important; } .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-lg-1 { padding: 0.25rem !important; } .pt-lg-1 { padding-top: 0.25rem !important; } .pr-lg-1 { padding-right: 0.25rem !important; } .pb-lg-1 { padding-bottom: 0.25rem !important; } .pl-lg-1 { padding-left: 0.25rem !important; } .px-lg-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-lg-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-lg-2 { padding: 0.5rem !important; } .pt-lg-2 { padding-top: 0.5rem !important; } .pr-lg-2 { padding-right: 0.5rem !important; } .pb-lg-2 { padding-bottom: 0.5rem !important; } .pl-lg-2 { padding-left: 0.5rem !important; } .px-lg-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-lg-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-lg-3 { padding: 0.75rem !important; } .pt-lg-3 { padding-top: 0.75rem !important; } .pr-lg-3 { padding-right: 0.75rem !important; } .pb-lg-3 { padding-bottom: 0.75rem !important; } .pl-lg-3 { padding-left: 0.75rem !important; } .px-lg-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-lg-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-lg-4 { padding: 1rem !important; } .pt-lg-4 { padding-top: 1rem !important; } .pr-lg-4 { padding-right: 1rem !important; } .pb-lg-4 { padding-bottom: 1rem !important; } .pl-lg-4 { padding-left: 1rem !important; } .px-lg-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-lg-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-lg-5 { padding: 1.5rem !important; } .pt-lg-5 { padding-top: 1.5rem !important; } .pr-lg-5 { padding-right: 1.5rem !important; } .pb-lg-5 { padding-bottom: 1.5rem !important; } .pl-lg-5 { padding-left: 1.5rem !important; } .px-lg-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-lg-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-lg-6 { padding: 2rem !important; } .pt-lg-6 { padding-top: 2rem !important; } .pr-lg-6 { padding-right: 2rem !important; } .pb-lg-6 { padding-bottom: 2rem !important; } .pl-lg-6 { padding-left: 2rem !important; } .px-lg-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-lg-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-lg-7 { padding: 2.5rem !important; } .pt-lg-7 { padding-top: 2.5rem !important; } .pr-lg-7 { padding-right: 2.5rem !important; } .pb-lg-7 { padding-bottom: 2.5rem !important; } .pl-lg-7 { padding-left: 2.5rem !important; } .px-lg-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-lg-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-lg-8 { padding: 3rem !important; } .pt-lg-8 { padding-top: 3rem !important; } .pr-lg-8 { padding-right: 3rem !important; } .pb-lg-8 { padding-bottom: 3rem !important; } .pl-lg-8 { padding-left: 3rem !important; } .px-lg-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-lg-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-lg-9 { padding: 3.5rem !important; } .pt-lg-9 { padding-top: 3.5rem !important; } .pr-lg-9 { padding-right: 3.5rem !important; } .pb-lg-9 { padding-bottom: 3.5rem !important; } .pl-lg-9 { padding-left: 3.5rem !important; } .px-lg-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-lg-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-lg-10 { padding: 4rem !important; } .pt-lg-10 { padding-top: 4rem !important; } .pr-lg-10 { padding-right: 4rem !important; } .pb-lg-10 { padding-bottom: 4rem !important; } .pl-lg-10 { padding-left: 4rem !important; } .px-lg-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-lg-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 87.5rem) { .p-xl-0 { padding: 0 !important; } .pt-xl-0 { padding-top: 0 !important; } .pr-xl-0 { padding-right: 0 !important; } .pb-xl-0 { padding-bottom: 0 !important; } .pl-xl-0 { padding-left: 0 !important; } .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xl-1 { padding: 0.25rem !important; } .pt-xl-1 { padding-top: 0.25rem !important; } .pr-xl-1 { padding-right: 0.25rem !important; } .pb-xl-1 { padding-bottom: 0.25rem !important; } .pl-xl-1 { padding-left: 0.25rem !important; } .px-xl-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xl-2 { padding: 0.5rem !important; } .pt-xl-2 { padding-top: 0.5rem !important; } .pr-xl-2 { padding-right: 0.5rem !important; } .pb-xl-2 { padding-bottom: 0.5rem !important; } .pl-xl-2 { padding-left: 0.5rem !important; } .px-xl-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xl-3 { padding: 0.75rem !important; } .pt-xl-3 { padding-top: 0.75rem !important; } .pr-xl-3 { padding-right: 0.75rem !important; } .pb-xl-3 { padding-bottom: 0.75rem !important; } .pl-xl-3 { padding-left: 0.75rem !important; } .px-xl-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xl-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xl-4 { padding: 1rem !important; } .pt-xl-4 { padding-top: 1rem !important; } .pr-xl-4 { padding-right: 1rem !important; } .pb-xl-4 { padding-bottom: 1rem !important; } .pl-xl-4 { padding-left: 1rem !important; } .px-xl-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xl-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xl-5 { padding: 1.5rem !important; } .pt-xl-5 { padding-top: 1.5rem !important; } .pr-xl-5 { padding-right: 1.5rem !important; } .pb-xl-5 { padding-bottom: 1.5rem !important; } .pl-xl-5 { padding-left: 1.5rem !important; } .px-xl-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xl-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xl-6 { padding: 2rem !important; } .pt-xl-6 { padding-top: 2rem !important; } .pr-xl-6 { padding-right: 2rem !important; } .pb-xl-6 { padding-bottom: 2rem !important; } .pl-xl-6 { padding-left: 2rem !important; } .px-xl-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xl-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xl-7 { padding: 2.5rem !important; } .pt-xl-7 { padding-top: 2.5rem !important; } .pr-xl-7 { padding-right: 2.5rem !important; } .pb-xl-7 { padding-bottom: 2.5rem !important; } .pl-xl-7 { padding-left: 2.5rem !important; } .px-xl-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xl-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xl-8 { padding: 3rem !important; } .pt-xl-8 { padding-top: 3rem !important; } .pr-xl-8 { padding-right: 3rem !important; } .pb-xl-8 { padding-bottom: 3rem !important; } .pl-xl-8 { padding-left: 3rem !important; } .px-xl-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xl-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xl-9 { padding: 3.5rem !important; } .pt-xl-9 { padding-top: 3.5rem !important; } .pr-xl-9 { padding-right: 3.5rem !important; } .pb-xl-9 { padding-bottom: 3.5rem !important; } .pl-xl-9 { padding-left: 3.5rem !important; } .px-xl-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xl-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xl-10 { padding: 4rem !important; } .pt-xl-10 { padding-top: 4rem !important; } .pr-xl-10 { padding-right: 4rem !important; } .pb-xl-10 { padding-bottom: 4rem !important; } .pl-xl-10 { padding-left: 4rem !important; } .px-xl-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xl-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media print { .site-footer, .site-button, #edit-this-page, #back-to-top, .site-nav, .main-header { display: none !important; } .side-bar { width: 100%; height: auto; border-right: 0 !important; } .site-header { border-bottom: 1px solid rgba(12, 43, 72, 0.1); } .site-title { font-size: 16px !important; font-weight: 700 !important; } .text-small { font-size: 8pt !important; } pre.highlight { border: 1px solid rgba(12, 43, 72, 0.1); } .main { max-width: none; margin-left: 0; } } + +/* Just-the-docs overrides and custom styles */ +/* Rogue (Jekyll's syntax highlighter) uses Pygment compatible styles. This is the "github" theme: https://github.com/uraimo/pygments-vimstyles/blob/master/github.css */ +.highlight .hll { background-color: #ffffcc; } + +.highlight { background: #F8F8FF; color: #000000; background-color: #F8F8FF; } + +.highlight .c { color: #999988; background-color: #F8F8FF; } + +/* Comment */ +.highlight .err { color: #000000; background-color: #F8F8FF; } + +/* Error */ +.highlight .g { color: #000000; background-color: #F8F8FF; } + +/* Generic */ +.highlight .k { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword */ +.highlight .l { color: #000000; background-color: #F8F8FF; } + +/* Literal */ +.highlight .n { color: #000000; background-color: #F8F8FF; } + +/* Name */ +.highlight .o { color: #000000; background-color: #F8F8FF; } + +/* Operator */ +.highlight .x { color: #000000; background-color: #F8F8FF; } + +/* Other */ +.highlight .p { color: #000000; background-color: #F8F8FF; } + +/* Punctuation */ +.highlight .cm { color: #999988; background-color: #F8F8FF; } + +/* Comment.Multiline */ +.highlight .cp { color: #A0A0A0; font-weight: bold; background-color: #F8F8FF; } + +/* Comment.Preproc */ +.highlight .c1 { color: #999988; background-color: #F8F8FF; } + +/* Comment.Single */ +.highlight .cs { color: #999988; background-color: #F8F8FF; } + +/* Comment.Special */ +.highlight .gd { color: #DDCCCC; background-color: #FFDDDD; } + +/* Generic.Deleted */ +.highlight .ge { color: #000000; text-decoration: underline; background-color: #F8F8FF; } + +/* Generic.Emph */ +.highlight .gr { color: #ff1100; background-color: #f8f8ff; } + +/* Generic.Error */ +.highlight .gh { color: #ef5939; background-color: #F8F8FF; } + +/* Generic.Heading */ +.highlight .gi { color: #003300; background-color: #DDFFDD; } + +/* Generic.Inserted */ +.highlight .go { color: #808080; background-color: #ECECEC; } + +/* Generic.Output */ +.highlight .gp { color: #000000; background-color: #F8F8FF; } + +/* Generic.Prompt */ +.highlight .gs { color: #000000; background-color: #F8F8FF; } + +/* Generic.Strong */ +.highlight .gu { color: #ef5939; background-color: #F8F8FF; } + +/* Generic.Subheading */ +.highlight .gt { color: #000000; background-color: #F8F8FF; } + +/* Generic.Traceback */ +.highlight .kc { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Constant */ +.highlight .kd { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Declaration */ +.highlight .kn { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Namespace */ +.highlight .kp { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Pseudo */ +.highlight .kr { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Type */ +.highlight .ld { color: #000000; background-color: #F8F8FF; } + +/* Literal.Date */ +.highlight .m { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number */ +.highlight .s { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String */ +.highlight .na { color: #990000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Attribute */ +.highlight .nb { color: #000000; background-color: #F8F8FF; } + +/* Name.Builtin */ +.highlight .nc { color: #000000; background-color: #F8F8FF; } + +/* Name.Class */ +.highlight .no { color: #177F80; background-color: #F8F8FF; } + +/* Name.Constant */ +.highlight .nd { color: #000000; background-color: #F8F8FF; } + +/* Name.Decorator */ +.highlight .ni { color: #159828; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Entity */ +.highlight .ne { color: #000000; background-color: #F8F8FF; } + +/* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Function */ +.highlight .nl { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Label */ +.highlight .nn { color: #000000; background-color: #F8F8FF; } + +/* Name.Namespace */ +.highlight .nx { color: #000000; background-color: #F8F8FF; } + +/* Name.Other */ +.highlight .py { color: #000000; background-color: #F8F8FF; } + +/* Name.Property */ +.highlight .nt { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Tag */ +.highlight .nv { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable */ +.highlight .ow { color: #000000; background-color: #F8F8FF; } + +/* Operator.Word */ +.highlight .w { color: #000000; background-color: #F8F8FF; } + +/* Text.Whitespace */ +.highlight .mf { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Float */ +.highlight .mh { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Hex */ +.highlight .mi { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Integer */ +.highlight .mo { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Oct */ +.highlight .sb { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Backtick */ +.highlight .sc { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Char */ +.highlight .sd { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Doc */ +.highlight .s2 { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Double */ +.highlight .se { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Escape */ +.highlight .sh { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Heredoc */ +.highlight .si { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Interpol */ +.highlight .sx { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Other */ +.highlight .sr { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Regex */ +.highlight .s1 { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Single */ +.highlight .ss { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Symbol */ +.highlight .bp { color: #000000; background-color: #F8F8FF; } + +/* Name.Builtin.Pseudo */ +.highlight .vc { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable.Class */ +.highlight .vg { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable.Global */ +.highlight .vi { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable.Instance */ +.highlight .il { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Integer.Long */ +/* Style variable overrides to match Alloverse style List of changeable variables: https://github.com/pmarsceill/just-the-docs/blob/master/_sass/support/_variables.scss */ +body { font-family: "Open Sans", "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif; color: #0c2b48; } + +h1, h2, h3, h4, .text-delta { font-family: "Sen", "Segoe UI", sans-serif; color: #0c2b48; font-weight: 700; letter-spacing: -0.5px; } + +.main-content h1 { font-size: 36px !important; font-weight: 800; letter-spacing: -1px; margin-bottom: 24px; } + +pre { white-space: pre-wrap; } + +code { padding: 2px 4px; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #0c2b48; } + +.table-wrapper table { border-collapse: collapse; } + +.table-wrapper table thead { text-align: left; } + +.table-wrapper table thead th { background: #E5E9F1; } + +.table-wrapper table td { border-bottom-color: rgba(12, 43, 72, 0.1); } + +.returns-nothing { color: #A9B6D1; font-style: italic; } + +@media print { .side-bar, .page-header { display: none; } .main-content { max-width: auto; margin: 1em; } } + +/*# sourceMappingURL=just-the-docs-default.css.map */ \ No newline at end of file diff --git a/assets/css/just-the-docs-default.css.map b/assets/css/just-the-docs-default.css.map new file mode 100644 index 0000000..c923c39 --- /dev/null +++ b/assets/css/just-the-docs-default.css.map @@ -0,0 +1,76 @@ +{ + "version": 3, + "file": "just-the-docs-default.css", + "sources": [ + "just-the-docs-default.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/support.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/_variables.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/_functions.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/mixins.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_layout.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_buttons.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_typography.scss", + "_sass/color_schemes/alloverse.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/modules.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/vendor/normalize.scss/normalize.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/base.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/layout.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/content.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/navigation.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/typography.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/labels.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/buttons.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/search.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/tables.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/code.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/utilities.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_colors.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_layout.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_typography.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_lists.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_spacing.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/print.scss", + "_sass/custom/custom.scss", + "_sass/custom/code.scss" + ], + "sourcesContent": [ + "\n\n$logo: \"https://alloverse.com/wp-content/uploads/Alloverse-logo-moniker-256x38-1.svg\";\n\n@import \"./support/support\";\n@import \"./color_schemes/alloverse\";\n@import \"./modules\";\n@import \"./custom/custom\";\n\n\n", + "@import \"./variables\";\n@import \"./functions\";\n@import \"./mixins/mixins\";\n", + "//\n// Typography\n//\n\n$body-font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n$mono-font-family: \"SFMono-Regular\", Menlo, Consolas, Monospace !default;\n$root-font-size: 16px !default; // Base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n//\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n//\n\n$font-size-1: 9px !default;\n$font-size-1-sm: 10px !default;\n$font-size-2: 11px !default; //h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 12px !default; //h5\n$font-size-4: 14px !default;\n$font-size-5: 16px !default; //h3\n$font-size-6: 18px !default; //h2\n$font-size-7: 24px !default;\n$font-size-8: 32px !default; //h1\n$font-size-9: 36px !default;\n$font-size-10: 42px !default;\n$font-size-10-sm: 48px !default;\n\n//\n// Colors\n//\n\n$white: #fff !default;\n\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n$body-background-color: $white !default;\n$sidebar-color: $grey-lt-000 !default;\n$search-background-color: $white !default;\n$table-background-color: $white !default;\n$code-background-color: $grey-lt-000 !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n\n$body-text-color: $grey-dk-100 !default;\n$body-heading-color: $grey-dk-300 !default;\n$search-result-preview-color: $grey-dk-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$btn-primary-color: $purple-100 !default;\n$base-button-color: #f7f7f7 !default;\n\n//\n// Spacing\n//\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n//\n// Borders\n//\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n//\n// Grid system\n//\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 264px !default;\n$nav-width-md: 248px !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 800px !default;\n$header-height: 60px !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n//\n// Media queries in pixels\n//\n\n$media-queries: (\n xs: 320px,\n sm: 500px,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 1400px,\n) !default;\n", + "@function rem($size, $unit: \"\") {\n $remSize: $size / $root-font-size;\n\n @if ($unit == false) {\n @return #{$remSize};\n } @else {\n @return #{$remSize}rem;\n }\n}\n", + "@import \"./layout\";\n@import \"./buttons\";\n@import \"./typography\";\n", + "// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value != null {\n // Prints a media query based on the value\n @media (min-width: rem($value)) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. \"\n + \"Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n", + "// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n", + "@mixin fs-1 {\n font-size: $font-size-1 !important;\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n font-size: $font-size-2 !important;\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n font-size: $font-size-3 !important;\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n font-size: $font-size-4 !important;\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n font-size: $font-size-5 !important;\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n font-size: $font-size-6 !important;\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n", + "/*\n Style variable overrides to match Alloverse style\n\n List of changeable variables:\n https://github.com/pmarsceill/just-the-docs/blob/master/_sass/support/_variables.scss \n*/\n\n\n// Variables\n\n$allo-light-blue: #EAF6FF;\n$allo-dark-blue: #CDEBFA;\n$allo-light-gray-30: #EFF1F6;\n$allo-dark-gray: #A9B6D1;\n$allo-dark-gray-30: #E5E9F1;\n\n$allo-text-color-dark: #0c2b48;\n$allo-text-color-dark-90: #24405A;\n\n$link-color: $blue-200;\n$nav-child-link-color: $blue-200;\n\n$body-text-color: $allo-text-color-dark;\n$body-heading-color: $allo-text-color-dark;\n\n$border-color: rgba(12, 43, 72, 0.1); // 10% of text-color-dark\n\n$sidebar-color: $allo-light-blue;\n\n// Hover background color for clickable items in the sidebar\n$feedback-color: $allo-dark-blue;", + "//\n// Import external dependencies\n//\n@import \"./vendor/normalize.scss/normalize.scss\";\n\n//\n// Modules\n//\n@import \"./base\";\n@import \"./layout\";\n@import \"./content\";\n@import \"./navigation\";\n@import \"./typography\";\n@import \"./labels\";\n@import \"./buttons\";\n@import \"./search\";\n@import \"./tables\";\n@import \"./code\";\n@import \"./utilities/utilities\";\n@import \"./print\";\n", + "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n", + "//\n// Base element style overrides\n//\n// stylelint-disable selector-no-type, selector-max-type\n\n* {\n box-sizing: border-box;\n}\n\n::selection {\n color: $white;\n background: $link-color;\n}\n\nhtml {\n @include fs-4;\n scroll-behavior: smooth;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: none;\n background-image: linear-gradient($border-color 0%, $border-color 100%);\n background-repeat: repeat-x;\n background-position: 0 100%;\n background-size: 1px 1px;\n\n &:hover {\n background-image: linear-gradient(\n rgba($link-color, 0.45) 0%,\n rgba($link-color, 0.45) 100%\n );\n background-size: 1px 1px;\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n", + "//\n// The basic two column layout\n//\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-wrap: nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n flex-direction: column;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n}\n\n.main {\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n margin-left: calc(\n (100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}\n );\n }\n}\n\n.main-content-wrap {\n @include container;\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n background-color: $body-background-color;\n border-bottom: $border $border-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n @include container;\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n// stylelint-disable selector-max-type\n\nbody {\n position: relative;\n padding-bottom: $sp-10;\n overflow-y: scroll;\n\n @include mq(md) {\n position: static;\n padding-bottom: 0;\n }\n}\n\n// stylelint-enable selector-max-type\n\n.site-footer {\n @include container;\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n color: $grey-dk-000;\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n", + "@charset \"UTF-8\";\n\n//\n// Styles for rendered markdown in the .main-content container\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list {\n padding-left: 0;\n }\n\n .task-list-item {\n display: flex;\n align-items: center;\n\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n &:first-child {\n margin-top: $sp-2;\n }\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge {\n margin-top: 1em;\n }\n\n + p {\n margin-top: 0;\n }\n }\n}\n", + "//\n// Main nav, breadcrumb, etc...\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n @include fs-4;\n position: relative;\n margin: 0;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding-top: #{$nav-list-item-height-sm / 4};\n padding-right: #{$nav-list-item-height-sm / 4};\n padding-bottom: #{$nav-list-item-height-sm / 4};\n padding-left: #{$nav-list-item-height-sm / 4};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding-top: #{$nav-list-item-height / 4};\n padding-right: #{$nav-list-item-height / 4};\n padding-bottom: #{$nav-list-item-height / 4};\n padding-left: #{$nav-list-item-height / 4};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: $gutter-spacing-sm;\n font-weight: 600;\n text-align: end;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n", + "//\n// Typography\n//\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type\n\nh1,\n.text-alpha {\n @include fs-8;\n font-weight: 300;\n}\n\nh2,\n.text-beta {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n @include fs-2;\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n color: $grey-dk-200;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n color: $grey-dk-200;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n", + "//\n// Labels (not the form kind)\n//\n\n.label,\n.label-blue {\n display: inline-block;\n padding-top: 0.16em;\n padding-right: 0.56em;\n padding-bottom: 0.16em;\n padding-left: 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n @include fs-2;\n border-radius: 12px;\n}\n\n.label-green {\n background-color: $green-200;\n}\n\n.label-purple {\n background-color: $purple-100;\n}\n\n.label-red {\n background-color: $red-200;\n}\n\n.label-yellow {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n", + "//\n// Buttons and things that look like buttons\n//\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding-top: 0.3em;\n padding-right: 1em;\n padding-bottom: 0.3em;\n padding-left: 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-000);\n}\n\n.btn-green {\n @include btn-color($white, $green-100);\n}\n", + "//\n// Search input and autocomplete\n//\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: #{$gutter-spacing-sm + $sp-5};\n font-size: 16px;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n padding-left: #{$gutter-spacing + $sp-5};\n font-size: 14px;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n &:focus {\n outline: 0;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding-top: $sp-1;\n padding-right: $sp-3;\n padding-bottom: $sp-1;\n padding-left: $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 / 2};\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition: opacity ease $transition-duration, width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition: opacity ease $transition-duration, width 0s, height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n", + "//\n// Tables\n//\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n @include fs-3;\n min-width: 120px;\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n", + "//\n// Code and syntax highlighting\n//\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type\n\ncode {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n//
...
:\n// figure.highlight > pre > code.language-LANG\n//\n//
1
+
...
+
:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\ndiv.highlighter-rouge {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n overflow-x: auto;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n div.highlight,\n pre.highlight,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n//
...
,\n//
1
+
...
+
:\nfigure.highlight {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n pre,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n//
1
+
...
+
:\n.highlight .table-wrapper {\n padding: 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n @include fs-2;\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n }\n\n td.gl {\n padding-right: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n.highlight .c {\n color: #586e75;\n} // comment //\n.highlight .err {\n color: #93a1a1;\n} // error //\n.highlight .g {\n color: #93a1a1;\n} // generic //\n.highlight .k {\n color: #859900;\n} // keyword //\n.highlight .l {\n color: #93a1a1;\n} // literal //\n.highlight .n {\n color: #93a1a1;\n} // name //\n.highlight .o {\n color: #859900;\n} // operator //\n.highlight .x {\n color: #cb4b16;\n} // other //\n.highlight .p {\n color: #93a1a1;\n} // punctuation //\n.highlight .cm {\n color: #586e75;\n} // comment.multiline //\n.highlight .cp {\n color: #859900;\n} // comment.preproc //\n.highlight .c1 {\n color: #586e75;\n} // comment.single //\n.highlight .cs {\n color: #859900;\n} // comment.special //\n.highlight .gd {\n color: #2aa198;\n} // generic.deleted //\n.highlight .ge {\n font-style: italic;\n color: #93a1a1;\n} // generic.emph //\n.highlight .gr {\n color: #dc322f;\n} // generic.error //\n.highlight .gh {\n color: #cb4b16;\n} // generic.heading //\n.highlight .gi {\n color: #859900;\n} // generic.inserted //\n.highlight .go {\n color: #93a1a1;\n} // generic.output //\n.highlight .gp {\n color: #93a1a1;\n} // generic.prompt //\n.highlight .gs {\n font-weight: bold;\n color: #93a1a1;\n} // generic.strong //\n.highlight .gu {\n color: #cb4b16;\n} // generic.subheading //\n.highlight .gt {\n color: #93a1a1;\n} // generic.traceback //\n.highlight .kc {\n color: #cb4b16;\n} // keyword.constant //\n.highlight .kd {\n color: #268bd2;\n} // keyword.declaration //\n.highlight .kn {\n color: #859900;\n} // keyword.namespace //\n.highlight .kp {\n color: #859900;\n} // keyword.pseudo //\n.highlight .kr {\n color: #268bd2;\n} // keyword.reserved //\n.highlight .kt {\n color: #dc322f;\n} // keyword.type //\n.highlight .ld {\n color: #93a1a1;\n} // literal.date //\n.highlight .m {\n color: #2aa198;\n} // literal.number //\n.highlight .s {\n color: #2aa198;\n} // literal.string //\n.highlight .na {\n color: #555;\n} // name.attribute //\n.highlight .nb {\n color: #b58900;\n} // name.builtin //\n.highlight .nc {\n color: #268bd2;\n} // name.class //\n.highlight .no {\n color: #cb4b16;\n} // name.constant //\n.highlight .nd {\n color: #268bd2;\n} // name.decorator //\n.highlight .ni {\n color: #cb4b16;\n} // name.entity //\n.highlight .ne {\n color: #cb4b16;\n} // name.exception //\n.highlight .nf {\n color: #268bd2;\n} // name.function //\n.highlight .nl {\n color: #555;\n} // name.label //\n.highlight .nn {\n color: #93a1a1;\n} // name.namespace //\n.highlight .nx {\n color: #555;\n} // name.other //\n.highlight .py {\n color: #93a1a1;\n} // name.property //\n.highlight .nt {\n color: #268bd2;\n} // name.tag //\n.highlight .nv {\n color: #268bd2;\n} // name.variable //\n.highlight .ow {\n color: #859900;\n} // operator.word //\n.highlight .w {\n color: #93a1a1;\n} // text.whitespace //\n.highlight .mf {\n color: #2aa198;\n} // literal.number.float //\n.highlight .mh {\n color: #2aa198;\n} // literal.number.hex //\n.highlight .mi {\n color: #2aa198;\n} // literal.number.integer //\n.highlight .mo {\n color: #2aa198;\n} // literal.number.oct //\n.highlight .sb {\n color: #586e75;\n} // literal.string.backtick //\n.highlight .sc {\n color: #2aa198;\n} // literal.string.char //\n.highlight .sd {\n color: #93a1a1;\n} // literal.string.doc //\n.highlight .s2 {\n color: #2aa198;\n} // literal.string.double //\n.highlight .se {\n color: #cb4b16;\n} // literal.string.escape //\n.highlight .sh {\n color: #93a1a1;\n} // literal.string.heredoc //\n.highlight .si {\n color: #2aa198;\n} // literal.string.interpol //\n.highlight .sx {\n color: #2aa198;\n} // literal.string.other //\n.highlight .sr {\n color: #dc322f;\n} // literal.string.regex //\n.highlight .s1 {\n color: #2aa198;\n} // literal.string.single //\n.highlight .ss {\n color: #2aa198;\n} // literal.string.symbol //\n.highlight .bp {\n color: #268bd2;\n} // name.builtin.pseudo //\n.highlight .vc {\n color: #268bd2;\n} // name.variable.class //\n.highlight .vg {\n color: #268bd2;\n} // name.variable.global //\n.highlight .vi {\n color: #268bd2;\n} // name.variable.instance //\n.highlight .il {\n color: #2aa198;\n} // literal.number.integer.long //\n\n//\n// Code examples (rendered)\n//\n\n.code-example {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n", + "@import \"./colors\";\n@import \"./layout\";\n@import \"./typography\";\n@import \"./lists\";\n@import \"./spacing\";\n", + "//\n// Utility classes for colors\n//\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n", + "// stylelint-disable primer/selector-no-utility, primer/no-override\n//\n// Utility classes for layout\n//\n\n// Display\n\n.d-block {\n display: block !important;\n}\n.d-flex {\n display: flex !important;\n}\n.d-inline {\n display: inline !important;\n}\n.d-inline-block {\n display: inline-block !important;\n}\n.d-none {\n display: none !important;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n.v-align-middle {\n vertical-align: middle !important;\n}\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n.v-align-top {\n vertical-align: top !important;\n}\n", + "//\n// Utility classes for typography\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n// stylelint-enable primer/selector-no-utility\n", + "//\n// Utility classes for lists\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n", + "//\n// Utility classes for margins and padding\n//\n\n// scss-lint:disable SpaceAfterPropertyName\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility, primer/no-override\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n", + "// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type, primer/no-override,\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: $root-font-size !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n", + "/* Just-the-docs overrides and custom styles */\n\n@import url(\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400&family=Sen:wght@400;700;800\");\n\n\n\n@import \"./code\";\n@import \"../color_schemes/alloverse.scss\";\n\nbody {\n font-family: \"Open Sans\", \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", Arial, sans-serif;\n color: $allo-text-color-dark;\n}\n\nh1,\nh2,\nh3,\nh4,\n.text-delta {\n font-family: \"Sen\", \"Segoe UI\", sans-serif;\n color: $allo-text-color-dark;\n font-weight: 700;\n letter-spacing: -0.5px;\n}\n\n.main-content {\n h1 {\n font-size: 36px!important;;\n font-weight: 800;\n letter-spacing: -1px;\n margin-bottom: 24px;\n }\n // h2 {\n // font-size: 30px!important;\n // color: $allo-text-color-dark-90;\n // letter-spacing: -0.8px;\n \n // margin-top: 48px;\n // margin-bottom: 6px;\n // }\n // h3 {\n // font-size: 24px!important;\n \n // margin-top: 32px;\n // margin-bottom: 6px;\n // }\n // h4 {\n // font-size: 18px!important;\n // text-transform: none;\n\n // margin-top: 30px;\n // margin-bottom: 6px;\n // }\n}\n\npre {\n white-space: pre-wrap;\n}\n\ncode {\n padding: 2px 4px;\n}\n\n// Different link color for children of lists in the sidebar\n.nav-list .nav-list-item>.nav-list .nav-list-item .nav-list-link {\n color: #0c2b48;\n}\n\n// Tables for arguments & returns\n.table-wrapper {\n table {\n border-collapse: collapse;\n\n thead {\n text-align: left;\n th {\n background: $allo-dark-gray-30;\n }\n }\n \n td {\n border-bottom-color: $border-color;\n }\n\n }\n}\n\n.returns-nothing {\n color: $allo-dark-gray;\n font-style: italic;\n}\n\n// Print-only styles.\n@media print {\n .side-bar,\n .page-header {\n display: none;\n }\n .main-content {\n max-width: auto;\n margin: 1em;\n }\n}\n", + "/*\n Rogue (Jekyll's syntax highlighter) uses Pygment compatible styles.\n\n This is the \"github\" theme: https://github.com/uraimo/pygments-vimstyles/blob/master/github.css\n*/\n\n\n.highlight .hll { background-color: #ffffcc }\n.highlight { background: #F8F8FF; color: #000000; background-color: #F8F8FF }\n.highlight .c { color: #999988; background-color: #F8F8FF } /* Comment */\n.highlight .err { color: #000000; background-color: #F8F8FF } /* Error */\n.highlight .g { color: #000000; background-color: #F8F8FF } /* Generic */\n.highlight .k { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword */\n.highlight .l { color: #000000; background-color: #F8F8FF } /* Literal */\n.highlight .n { color: #000000; background-color: #F8F8FF } /* Name */\n.highlight .o { color: #000000; background-color: #F8F8FF } /* Operator */\n.highlight .x { color: #000000; background-color: #F8F8FF } /* Other */\n.highlight .p { color: #000000; background-color: #F8F8FF } /* Punctuation */\n.highlight .cm { color: #999988; background-color: #F8F8FF } /* Comment.Multiline */\n.highlight .cp { color: #A0A0A0; font-weight: bold; background-color: #F8F8FF } /* Comment.Preproc */\n.highlight .c1 { color: #999988; background-color: #F8F8FF } /* Comment.Single */\n.highlight .cs { color: #999988; background-color: #F8F8FF } /* Comment.Special */\n.highlight .gd { color: #DDCCCC; background-color: #FFDDDD } /* Generic.Deleted */\n.highlight .ge { color: #000000; text-decoration: underline; background-color: #F8F8FF } /* Generic.Emph */\n.highlight .gr { color: #ff1100; background-color: #f8f8ff } /* Generic.Error */\n.highlight .gh { color: #ef5939; background-color: #F8F8FF } /* Generic.Heading */\n.highlight .gi { color: #003300; background-color: #DDFFDD } /* Generic.Inserted */\n.highlight .go { color: #808080; background-color: #ECECEC } /* Generic.Output */\n.highlight .gp { color: #000000; background-color: #F8F8FF } /* Generic.Prompt */\n.highlight .gs { color: #000000; background-color: #F8F8FF } /* Generic.Strong */\n.highlight .gu { color: #ef5939; background-color: #F8F8FF } /* Generic.Subheading */\n.highlight .gt { color: #000000; background-color: #F8F8FF } /* Generic.Traceback */\n.highlight .kc { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Constant */\n.highlight .kd { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Declaration */\n.highlight .kn { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Namespace */\n.highlight .kp { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Pseudo */\n.highlight .kr { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Reserved */\n.highlight .kt { color: #445588; font-weight: bold; background-color: #F8F8FF } /* Keyword.Type */\n.highlight .ld { color: #000000; background-color: #F8F8FF } /* Literal.Date */\n.highlight .m { color: #1C9898; background-color: #F8F8FF } /* Literal.Number */\n.highlight .s { color: #D81745; background-color: #F8F8FF } /* Literal.String */\n.highlight .na { color: #990000; font-weight: bold; background-color: #F8F8FF } /* Name.Attribute */\n.highlight .nb { color: #000000; background-color: #F8F8FF } /* Name.Builtin */\n.highlight .nc { color: #000000; background-color: #F8F8FF } /* Name.Class */\n.highlight .no { color: #177F80; background-color: #F8F8FF } /* Name.Constant */\n.highlight .nd { color: #000000; background-color: #F8F8FF } /* Name.Decorator */\n.highlight .ni { color: #159828; font-weight: bold; background-color: #F8F8FF } /* Name.Entity */\n.highlight .ne { color: #000000; background-color: #F8F8FF } /* Name.Exception */\n.highlight .nf { color: #990000; font-weight: bold; background-color: #F8F8FF } /* Name.Function */\n.highlight .nl { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Name.Label */\n.highlight .nn { color: #000000; background-color: #F8F8FF } /* Name.Namespace */\n.highlight .nx { color: #000000; background-color: #F8F8FF } /* Name.Other */\n.highlight .py { color: #000000; background-color: #F8F8FF } /* Name.Property */\n.highlight .nt { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Name.Tag */\n.highlight .nv { color: #0086B3; background-color: #F8F8FF } /* Name.Variable */\n.highlight .ow { color: #000000; background-color: #F8F8FF } /* Operator.Word */\n.highlight .w { color: #000000; background-color: #F8F8FF } /* Text.Whitespace */\n.highlight .mf { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Float */\n.highlight .mh { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Hex */\n.highlight .mi { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Integer */\n.highlight .mo { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Oct */\n.highlight .sb { color: #D81745; background-color: #F8F8FF } /* Literal.String.Backtick */\n.highlight .sc { color: #D81745; background-color: #F8F8FF } /* Literal.String.Char */\n.highlight .sd { color: #D81745; background-color: #F8F8FF } /* Literal.String.Doc */\n.highlight .s2 { color: #D81745; background-color: #F8F8FF } /* Literal.String.Double */\n.highlight .se { color: #D81745; background-color: #F8F8FF } /* Literal.String.Escape */\n.highlight .sh { color: #D81745; background-color: #F8F8FF } /* Literal.String.Heredoc */\n.highlight .si { color: #D81745; background-color: #F8F8FF } /* Literal.String.Interpol */\n.highlight .sx { color: #D81745; background-color: #F8F8FF } /* Literal.String.Other */\n.highlight .sr { color: #D81745; background-color: #F8F8FF } /* Literal.String.Regex */\n.highlight .s1 { color: #D81745; background-color: #F8F8FF } /* Literal.String.Single */\n.highlight .ss { color: #D81745; background-color: #F8F8FF } /* Literal.String.Symbol */\n.highlight .bp { color: #000000; background-color: #F8F8FF } /* Name.Builtin.Pseudo */\n.highlight .vc { color: #0086B3; background-color: #F8F8FF } /* Name.Variable.Class */\n.highlight .vg { color: #0086B3; background-color: #F8F8FF } /* Name.Variable.Global */\n.highlight .vi { color: #0086B3; background-color: #F8F8FF } /* Name.Variable.Instance */\n.highlight .il { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Integer.Long */" + ], + "names": [], + "mappings": ";AQAA,4KAKE;AELF,4EAA4E;AAE5E,yFACgF;AAEhF,wHAGG;AkBNH,OAAO,CAAC,iHAAI;AlBQZ,AAAA,IAAI,CAAC,EACH,WAAW,EAAE,IAAI,EAAE,OAAO,CAC1B,wBAAwB,EAAE,IAAI,EAAE,OAAO,EACxC;;AAED,yFACgF;AAEhF,yCAEG;AAEH,AAAA,IAAI,CAAC,EACH,MAAM,EAAE,CAAC,GACV;;AAED,oDAEG;AAEH,AAAA,IAAI,CAAC,EACH,OAAO,EAAE,KAAK,GACf;;AAED,gIAGG;AAEH,AAAA,EAAE,CAAC,EACD,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,QAAQ,GACjB;;AAED,iGACgF;AAEhF,qFAGG;AAEH,AAAA,EAAE,CAAC,EACD,UAAU,EAAE,WAAW,EAAE,OAAO,CAChC,MAAM,EAAE,CAAC,EAAE,OAAO,CAClB,QAAQ,EAAE,OAAO,EAAE,OAAO,EAC3B;;AAED,gIAGG;AAEH,AAAA,GAAG,CAAC,EACF,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAC1C,SAAS,EAAE,GAAG,EAAE,OAAO,EACxB;;AAED,qGACgF;AAEhF,2DAEG;AAEH,AAAA,CAAC,CAAC,EACA,gBAAgB,EAAE,WAAW,GAC9B;;AAED,2HAGG;AAEH,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA,EAAO,EACV,aAAa,EAAE,IAAI,EAAE,OAAO,CAC5B,eAAe,EAAE,SAAS,EAAE,OAAO,CACnC,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAC3C;;AAED,+DAEG;AAEH,AAAA,CAAC,EACD,MAAM,CAAC,EACL,WAAW,EAAE,MAAM,GACpB;;AAED,gIAGG;AAEH,AAAA,IAAI,EACJ,GAAG,EACH,IAAI,CAAC,EACH,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAC1C,SAAS,EAAE,GAAG,EAAE,OAAO,EACxB;;AAED,iDAEG;AAEH,AAAA,KAAK,CAAC,EACJ,SAAS,EAAE,GAAG,GACf;;AAED,uFAGG;AAEH,AAAA,GAAG,EACH,GAAG,CAAC,EACF,SAAS,EAAE,GAAG,EACd,WAAW,EAAE,CAAC,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,QAAQ,GACzB;;AAED,AAAA,GAAG,CAAC,EACF,MAAM,EAAE,OAAO,GAChB;;AAED,AAAA,GAAG,CAAC,EACF,GAAG,EAAE,MAAM,GACZ;;AAED,iGACgF;AAEhF,yDAEG;AAEH,AAAA,GAAG,CAAC,EACF,YAAY,EAAE,IAAI,GACnB;;AAED,sFACgF;AAEhF,6FAGG;AAEH,AAAA,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,CAAC,EACP,WAAW,EAAE,OAAO,EAAE,OAAO,CAC7B,SAAS,EAAE,IAAI,EAAE,OAAO,CACxB,WAAW,EAAE,IAAI,EAAE,OAAO,CAC1B,MAAM,EAAE,CAAC,EAAE,OAAO,EACnB;;AAED,6DAGG;AAEH,AAAA,MAAM,EACN,KAAK,CAAC,EAAE,OAAO,CACb,QAAQ,EAAE,OAAO,GAClB;;AAED,iIAGG;AAEH,AAAA,MAAM,EACN,MAAM,CAAC,EAAE,OAAO,CACd,cAAc,EAAE,IAAI,GACrB;;AAED,wEAEG;AAEH,AAAA,MAAM,GACN,AAAA,IAAC,CAAK,QAAQ,AAAb,IACD,AAAA,IAAC,CAAK,OAAO,AAAZ,IACD,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe,EACd,kBAAkB,EAAE,MAAM,GAC3B;;AAED,sDAEG;AAEH,AAAA,MAAM,EAAE,gBAAgB,GACxB,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,gBAAgB,GACjC,AAAA,IAAC,CAAK,OAAO,AAAZ,GAAe,gBAAgB,GAChC,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,gBAAgB,CAAC,EAChC,YAAY,EAAE,IAAI,EAClB,OAAO,EAAE,CAAC,GACX;;AAED,2DAEG;AAEH,AAAA,MAAM,CAAC,cAAc,GACrB,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe,cAAc,GAC9B,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAc,cAAc,GAC7B,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe,cAAc,CAAC,EAC7B,OAAO,EAAE,qBAAqB,GAC/B;;AAED,sCAEG;AAEH,AAAA,QAAQ,CAAC,EACP,OAAO,EAAE,qBAAqB,GAC/B;;AAED,mOAKG;AAEH,AAAA,MAAM,CAAC,EACL,UAAU,EAAE,UAAU,EAAE,OAAO,CAC/B,KAAK,EAAE,OAAO,EAAE,OAAO,CACvB,OAAO,EAAE,KAAK,EAAE,OAAO,CACvB,SAAS,EAAE,IAAI,EAAE,OAAO,CACxB,OAAO,EAAE,CAAC,EAAE,OAAO,CACnB,WAAW,EAAE,MAAM,EAAE,OAAO,EAC7B;;AAED,wEAEG;AAEH,AAAA,QAAQ,CAAC,EACP,cAAc,EAAE,QAAQ,GACzB;;AAED,uDAEG;AAEH,AAAA,QAAQ,CAAC,EACP,QAAQ,EAAE,IAAI,GACf;;AAED,8EAGG;CAEH,AAAA,AAAA,IAAC,CAAK,UAAU,AAAf,IACD,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAc,EACb,UAAU,EAAE,UAAU,EAAE,OAAO,CAC/B,OAAO,EAAE,CAAC,EAAE,OAAO,EACpB;;AAED,6EAEG;CAEH,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,yBAAyB,GAC1C,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,yBAAyB,CAAC,EACzC,MAAM,EAAE,IAAI,GACb;;AAED,kGAGG;CAEH,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe,EACd,kBAAkB,EAAE,SAAS,EAAE,OAAO,CACtC,cAAc,EAAE,IAAI,EAAE,OAAO,EAC9B;;AAED,8DAEG;CAEH,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,yBAAyB,CAAC,EACzC,kBAAkB,EAAE,IAAI,GACzB;;AAED,6HAGG;EAED,AAAF,0BAA4B,CAAC,EAC3B,kBAAkB,EAAE,MAAM,EAAE,OAAO,CACnC,IAAI,EAAE,OAAO,EAAE,OAAO,EACvB;;AAED,4FACgF;AAEhF,2DAEG;AAEH,AAAA,OAAO,CAAC,EACN,OAAO,EAAE,KAAK,GACf;;AAED,8CAEG;AAEH,AAAA,OAAO,CAAC,EACN,OAAO,EAAE,SAAS,GACnB;;AAED,qFACgF;AAEhF,yCAEG;AAEH,AAAA,QAAQ,CAAC,EACP,OAAO,EAAE,IAAI,GACd;;AAED,wCAEG;CAEH,AAAA,AAAA,MAAC,AAAA,EAAQ,EACP,OAAO,EAAE,IAAI,GACd;;ACvVD,AAAA,CAAC,CAAC,EACA,UAAU,EAAE,UAAU,GACvB;;EAEC,AAAF,SAAW,CAAC,EACV,KAAK,ETwBC,IAAI,ESvBV,UAAU,ET2CD,OAAO,GS1CjB;;AAED,AAAA,IAAI,CAAC,EJWH,SAAS,ELJG,IAAI,CKIQ,UAAU,EITlC,eAAe,EAAE,MAAM,GACxB;;ANHG,MAAM,sBMAV,GAAA,AAAA,IAAI,CAAC,EJcD,SAAS,ELNC,IAAI,CKMU,UAAU,GIXrC,EAAA;;AAED,AAAA,IAAI,CAAC,EACH,WAAW,EThBM,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EACzE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,ESgB3C,SAAS,EAAE,OAAO,EAClB,WAAW,ETdM,GAAG,ESepB,KAAK,EHPgB,OAAO,EGQ5B,gBAAgB,ETUV,IAAI,GSTX;;AAED,AAAA,EAAE,EACF,EAAE,EACF,EAAE,EACF,GAAG,EACH,OAAO,EACP,UAAU,EACV,KAAK,EACL,GAAG,EACH,EAAE,EACF,IAAI,EACJ,QAAQ,EACR,QAAQ,CAAC,cAAc,CAAC,EACtB,UAAU,EAAE,CAAC,GACd;;AAED,AAAA,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,CAAC,EACD,UAAU,EAAE,CAAC,EACb,aAAa,EAAE,GAAG,EAClB,WAAW,EAAE,GAAG,EAChB,WAAW,ETzCc,IAAI,ES0C7B,KAAK,EHpCgB,OAAO,GGqC7B;;AAED,AAAA,CAAC,CAAC,EACA,UAAU,EAAE,GAAG,EACf,aAAa,EAAE,GAAG,GACnB;;AAED,AAAA,CAAC,CAAC,EACA,KAAK,ETPI,OAAO,ESQhB,eAAe,EAAE,IAAI,GACtB;;AAED,AAAA,CAAC,CAAA,GAAK,EAAA,AAAA,KAAC,AAAA,GAAQ,EACb,eAAe,EAAE,IAAI,EACrB,gBAAgB,EAAE,qEAAqD,EACvE,iBAAiB,EAAE,QAAQ,EAC3B,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,OAAO,GASzB;;AAdD,AAOE,CAPD,CAAA,GAAK,EAAA,AAAA,KAAC,AAAA,GAOH,KAAK,CAAC,EACN,gBAAgB,EAAE,yEAGjB,EACD,eAAe,EAAE,OAAO,GACzB;;AAGH,AAAA,IAAI,CAAC,EACH,WAAW,ET5EM,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,ES6E7D,SAAS,EAAE,MAAM,EACjB,WAAW,ET5EM,GAAG,GS6ErB;;AAED,AAAA,MAAM,EACN,GAAG,CAAC,EACF,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,EAAE,CAAC,EACD,MAAM,EAAE,QAAQ,GACjB;;AAED,AAAA,GAAG,CAAC,EACF,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,IAAI,GACb;;AAED,AAAA,EAAE,CAAC,EACD,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,CAAC,EACV,MAAM,ETJA,IAAiB,CSIT,CAAC,EACf,gBAAgB,EHhFH,qBAAqB,EGiFlC,MAAM,EAAE,CAAC,GACV;;ACvGD,AAAA,SAAS,CAAC,EACR,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,IAAI,EACf,gBAAgB,EJEA,OAAO,GIcxB;;APVG,MAAM,mBOVV,GAAA,AAAA,SAAS,CAAC,EAON,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,KAAK,EACf,KAAK,EVwHM,KAAK,EUvHhB,MAAM,EAAE,IAAI,EACZ,cAAc,EAAE,MAAM,EACtB,YAAY,EV0GP,GAAG,CAAC,KAAK,CMjGH,qBAAqB,EIRhC,WAAW,EAAE,QAAQ,GAOxB,EAAA;;APVG,MAAM,qBOVV,GAAA,AAAA,SAAS,CAAC,EAiBN,KAAK,EAAE,iCAA2I,EAClJ,SAAS,EV8GD,KAAK,GU5GhB,EAAA;;APVG,MAAM,mBOYV,GAAA,AAAA,KAAK,CAAC,EAEF,QAAQ,EAAE,QAAQ,EAClB,SAAS,EV4GG,KAAK,EU3GjB,WAAW,EVuGA,KAAK,GU/FnB,EAAA;;APxBG,MAAM,qBOYV,GAAA,AAAA,KAAK,CAAC,EAQF,WAAW,EAAE,kCAEyB,GAEzC,EAAA;;AAED,AAAA,kBAAkB,CAAC,EPdjB,aAAa,EHiEA,IAAI,EGhEjB,YAAY,EHgEC,IAAI,EUjDjB,WAAW,EViDE,IAAI,EUhDjB,cAAc,EVgDD,IAAI,GU1ClB;;APnCG,MAAM,mBO0BV,GAAA,AAAA,kBAAkB,CAAC,EPVf,aAAa,EHsET,IAAiB,EGrErB,YAAY,EHqER,IAAiB,GUnDxB,EAAA;;APnCG,MAAM,mBO0BV,GAAA,AAAA,kBAAkB,CAAC,EAMf,WAAW,EVsDP,IAAiB,EUrDrB,cAAc,EVqDV,IAAiB,GUnDxB,EAAA;;AAED,AAAA,YAAY,CAAC,EACX,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,IAAI,EACb,gBAAgB,EJ5CA,OAAO,GI6DxB;;APzDG,MAAM,mBOqCV,GAAA,AAAA,YAAY,CAAC,EAMT,OAAO,EAAE,IAAI,EACb,eAAe,EAAE,aAAa,EAC9B,MAAM,EV+EM,IAAI,EU9EhB,gBAAgB,EV1BZ,IAAI,EU2BR,aAAa,EV6DR,GAAG,CAAC,KAAK,CMjGH,qBAAqB,GI8CnC,EAAA;;AApBD,AAaE,YAbU,AAaT,SAAS,CAAC,EACT,OAAO,EAAE,KAAK,GAKf;;APxDC,MAAM,mBOkDR,GAbF,AAaE,YAbU,AAaT,SAAS,CAAC,EAIP,OAAO,EAAE,IAAI,GAEhB,EAAA;;AAGH,AAAA,SAAS,EACT,YAAY,EACZ,YAAY,CAAC,EACX,KAAK,EAAE,IAAI,GAKZ;;APnEG,MAAM,qBO2DV,GAAA,AAAA,SAAS,EACT,YAAY,EACZ,YAAY,CAAC,EAIT,KAAK,EVqDG,KAAK,GUnDhB,EAAA;;AAED,AAAA,SAAS,CAAC,EACR,OAAO,EAAE,IAAI,GAad;;AAdD,AAGE,SAHO,AAGN,SAAS,CAAC,EACT,OAAO,EAAE,KAAK,GACf;;AP1EC,MAAM,mBOqEV,GAAA,AAAA,SAAS,CAAC,EAQN,OAAO,EAAE,KAAK,EACd,WAAW,EVUP,IAAiB,EUTrB,cAAc,EVFH,IAAI,EUGf,UAAU,EAAE,IAAI,EAChB,IAAI,EAAE,QAAQ,GAEjB,EAAA;;AAED,AAAA,YAAY,CAAC,EACX,OAAO,EAAE,IAAI,EACb,UAAU,EVqCI,IAAI,EUpClB,WAAW,EAAE,MAAM,GAOpB;;AP/FG,MAAM,mBOqFV,GAAA,AAAA,YAAY,CAAC,EAMT,MAAM,EViCM,IAAI,EUhChB,UAAU,EVgCE,IAAI,EU/BhB,aAAa,EVeR,GAAG,CAAC,KAAK,CMjGH,qBAAqB,GIoFnC,EAAA;;AAED,AAAA,WAAW,CAAC,EPrFV,aAAa,EHiEA,IAAI,EGhEjB,YAAY,EHgEC,IAAI,EUsBjB,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EVpBL,OAAoB,EUqB1B,cAAc,EVrBR,OAAoB,EUsB1B,KAAK,EJvGgB,OAAO,EDyB5B,SAAS,ELlBG,IAAI,CKkBQ,UAAU,GKqFnC;;APhHG,MAAM,mBOiGV,GAAA,AAAA,WAAW,CAAC,EPjFR,aAAa,EHsET,IAAiB,EGrErB,YAAY,EHqER,IAAiB,GU0BxB,EAAA;;APhHG,MAAM,sBOiGV,GAAA,AAAA,WAAW,CAAC,ELnER,SAAS,ELpBC,IAAI,CKoBU,UAAU,EAClC,WAAW,ELnCY,IAAI,GUoH9B,EAAA;;APhHG,MAAM,mBOiGV,GAAA,AAAA,WAAW,CAAC,EAYR,WAAW,EV3BP,MAAmB,EU4BvB,cAAc,EV5BV,MAAmB,GU8B1B,EAAA;;AAGC,AAAA,UAAU,CAAC,EACT,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,gBAAgB,EAAE,mFAAU,EAC5B,iBAAiB,EAAE,SAAS,EAC5B,mBAAmB,EAAE,WAAW,EAChC,eAAe,EAAE,OAAO,GACzB;;AAGH,AAAA,YAAY,CAAC,EACX,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,OAAO,EVnDM,IAAI,EUoDjB,WAAW,EAAE,MAAM,GACpB;;APlIG,MAAM,mBOqIR,GAAA,AAAA,YAAY,CAAC,YAAY,CAAC,EACxB,OAAO,EAAE,IAAI,GACd,EAAA;;AAGH,AAAA,WAAW,CAAC,KAAK,CAAC,EAChB,gBAAgB,EAAE,8FAKjB,GACF;;AAED,AAAA,YAAY,CAAC,KAAK,CAAC,EACjB,gBAAgB,EAAE,kEAIjB,GACF;;AAID,AAAA,IAAI,CAAC,EACH,QAAQ,EAAE,QAAQ,EAClB,cAAc,EVrEP,IAAiB,EUsExB,UAAU,EAAE,MAAM,GAMnB;;APtKG,MAAM,mBO6JV,GAAA,AAAA,IAAI,CAAC,EAMD,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,CAAC,GAEpB,EAAA;;AAID,AAAA,YAAY,CAAC,EP9JX,aAAa,EHiEA,IAAI,EGhEjB,YAAY,EHgEC,IAAI,EU+FjB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EACP,WAAW,EVlGE,IAAI,EUmGjB,cAAc,EVnGD,IAAI,EUoGjB,KAAK,EV3JO,OAAO,EK3BnB,SAAS,ELUG,IAAI,CKVQ,UAAU,GK6LnC;;APxLG,MAAM,mBO0KV,GAAA,AAAA,YAAY,CAAC,EP1JT,aAAa,EHsET,IAAiB,EGrErB,YAAY,EHqER,IAAiB,GUkGxB,EAAA;;APxLG,MAAM,sBO0KV,GAAA,AAAA,YAAY,CAAC,EL5KT,SAAS,ELQC,IAAI,CKRU,UAAU,GK0LrC,EAAA;;APxLG,MAAM,mBO0KV,GAAA,AAAA,YAAY,CAAC,EAWT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,GAAG,GAEpB,EAAA;;AAED,AAAA,KAAK,CAAC,EACJ,KAAK,EVtGC,MAAmB,EUuGzB,MAAM,EVvGA,MAAmB,EUwGzB,KAAK,EVrJI,OAAO,GUsJjB;;ACrMD,AAAA,aAAa,CAAC,EACZ,WAAW,EXCS,GAAG,GW6NxB;;AA/ND,AAGE,aAHW,CAGX,EAAE,EAHJ,aAAa,CAIX,EAAE,EAJJ,aAAa,CAKX,EAAE,EALJ,aAAa,CAMX,GAAG,EANL,aAAa,CAOX,OAAO,EAPT,aAAa,CAQX,UAAU,EARZ,aAAa,CASX,cAAc,CAAC,EACb,UAAU,EAAE,KAAK,GAClB;;AAXH,AAaE,aAbW,CAaX,CAAC,CAAC,EACA,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAE,MAAM,GACpB;;AAjBH,AAmBE,aAnBW,CAmBX,EAAE,EAnBJ,aAAa,CAoBX,EAAE,CAAC,EACD,YAAY,EAAE,KAAK,GACpB;;AAtBH,AAyBI,aAzBS,CAwBX,EAAE,CACA,UAAU,CAAC,EACT,UAAU,EX8DR,OAAoB,GW7DvB;;AA3BL,AA8BE,aA9BW,CA8BX,EAAE,CAAC,EACD,eAAe,EAAE,IAAI,EACrB,aAAa,EAAE,YAAY,GA8B5B;;AA9DH,AAkCI,aAlCS,CA8BX,EAAE,GAIE,EAAE,CAAC,EACH,QAAQ,EAAE,QAAQ,GA0BnB;;AA7DL,AAqCM,aArCO,CA8BX,EAAE,GAIE,EAAE,EAGC,MAAM,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,KAAK,EACV,IAAI,EAAE,MAAM,EACZ,KAAK,EXZC,OAAO,EWab,OAAO,EAAE,qBAAqB,EAC9B,iBAAiB,EAAE,YAAY,ENjCrC,SAAS,ELGG,IAAI,CKHQ,UAAU,GMuC7B;;AR1CH,MAAM,sBQ8BJ,GArCN,AAqCM,aArCO,CA8BX,EAAE,GAIE,EAAE,EAGC,MAAM,CAAC,ENxBZ,SAAS,ELCC,IAAI,CKDU,UAAU,GMoC/B,EAAA;;AR1CH,MAAM,sBQ8BJ,GArCN,AAqCM,aArCO,CA8BX,EAAE,GAIE,EAAE,EAGC,MAAM,CAAC,EAUN,GAAG,EAAE,MAAM,GAEd,EAAA;;AAjDP,AAmDM,aAnDO,CA8BX,EAAE,GAIE,EAAE,CAiBF,EAAE,CAAC,EACD,aAAa,EAAE,WAAW,GAQ3B;;AA5DP,AAuDU,aAvDG,CA8BX,EAAE,GAIE,EAAE,CAiBF,EAAE,CAGA,EAAE,EACG,MAAM,CAAC,EACR,OAAO,EAAE,iCAAiC,EAC1C,iBAAiB,EAAE,WAAW,GAC/B;;AA1DX,AAgEE,aAhEW,CAgEX,EAAE,CAAC,EACD,UAAU,EAAE,IAAI,GAUjB;;AA3EH,AAoEM,aApEO,CAgEX,EAAE,GAGE,EAAE,EACC,MAAM,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EX1CC,OAAO,EW2Cb,OAAO,EAAE,IAAI,GACd;;AAzEP,AA6EE,aA7EW,CA6EX,UAAU,CAAC,EACT,YAAY,EAAE,CAAC,GAChB;;AA/EH,AAiFE,aAjFW,CAiFX,eAAe,CAAC,EACd,OAAO,EAAE,IAAI,EACb,WAAW,EAAE,MAAM,GAKpB;;AAxFH,AAqFI,aArFS,CAiFX,eAAe,EAIV,MAAM,CAAC,EACR,OAAO,EAAE,EAAE,GACZ;;AAvFL,AA0FE,aA1FW,CA0FX,wBAAwB,CAAC,EACvB,YAAY,EAAE,KAAK,GACpB;;AA5FH,AA8FE,aA9FW,CA8FX,EAAE,GAAG,CAAC,CAAC,EACL,UAAU,EAAE,CAAC,GACd;;AAhGH,AAkGE,aAlGW,CAkGX,EAAE,CAAC,aAAa,CAAC,EACf,UAAU,EAAE,KAAK,GAClB;;AApGH,AAsGE,aAtGW,CAsGX,EAAE,CAAC,EACD,OAAO,EAAE,IAAI,EACb,aAAa,EAAE,eAAe,GAC/B;;AAzGH,AA2GE,aA3GW,CA2GX,EAAE,EA3GJ,aAAa,CA4GX,EAAE,CAAC,EACD,MAAM,EAAE,QAAQ,GACjB;;AA9GH,AAgHE,aAhHW,CAgHX,EAAE,CAAC,EACD,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,KAAK,GAIlB;;AAvHH,AAoHI,aApHS,CAgHX,EAAE,EAIG,KAAK,CAAC,EACP,OAAO,EAAE,GAAG,GACb;;AAtHL,AAyHE,aAzHW,CAyHX,EAAE,CAAC,EACD,WAAW,EAAE,CAAC,EACd,aAAa,EAAE,CAAC,EAChB,WAAW,EAAE,GAAG,GAsBjB;;AAlJH,AA8IM,aA9IO,CAyHX,EAAE,CAIA,UAAU,CAiBN,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAKA,GAAG,CAgBC,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAMA,EAAE,CAeE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAOA,EAAE,CAcE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAQA,EAAE,CAaE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CASA,EAAE,CAYE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAUA,EAAE,CAWE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAWA,EAAE,CAUE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAYA,EAAE,CASE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAaA,EAAE,CAQE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAcA,EAAE,CAOE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAeA,EAAE,CAME,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAgBA,CAAC,CAKG,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAiBA,GAAG,CAIC,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAkBA,KAAK,CAGD,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAmBA,EAAE,CAEE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAoBA,cAAc,CACV,WAAW,CAAC,EACZ,UAAU,EAAE,CAAC,GACd;;AAhJP,AAwJM,aAxJO,CAoJX,EAAE,CAGA,EAAE,CAAC,WAAW,CACZ,EAAE,CAAC,WAAW,EAxJpB,aAAa,CAoJX,EAAE,CAGA,EAAE,CAAC,WAAW,CAEZ,EAAE,CAAC,SAAU,CAAA,CAAC,GAzJpB,aAAa,CAqJX,EAAE,CAEA,EAAE,CAAC,WAAW,CACZ,EAAE,CAAC,WAAW,EAxJpB,aAAa,CAqJX,EAAE,CAEA,EAAE,CAAC,WAAW,CAEZ,EAAE,CAAC,SAAU,CAAA,CAAC,GAzJpB,aAAa,CAsJX,EAAE,CACA,EAAE,CAAC,WAAW,CACZ,EAAE,CAAC,WAAW,EAxJpB,aAAa,CAsJX,EAAE,CACA,EAAE,CAAC,WAAW,CAEZ,EAAE,CAAC,SAAU,CAAA,CAAC,EAAE,EACd,UAAU,EAAE,CAAC,GACd;;AA3JP,AA+JE,aA/JW,CA+JX,eAAe,CAAC,EACd,QAAQ,EAAE,QAAQ,EAClB,KAAK,EX7EM,KAAI,EW8Ef,KAAK,EXtED,MAAmB,EWuEvB,MAAM,EAAE,IAAI,EACZ,aAAa,EX5ET,OAAoB,EW6ExB,YAAY,EX7ER,OAAoB,EW8ExB,QAAQ,EAAE,OAAO,GAclB;;AR7KC,MAAM,mBQwJR,GA/JF,AA+JE,aA/JW,CA+JX,eAAe,CAAC,EAUZ,KAAK,EAAE,IAAI,EACX,IAAI,EX9EF,OAAmB,GWwFxB,EAAA;;AApLH,AA6KI,aA7KS,CA+JX,eAAe,CAcb,GAAG,CAAC,EACF,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,KAAK,EXlIA,OAAO,EWmIZ,UAAU,EAAE,MAAM,GACnB;;AAnLL,AA6LI,aA7LS,CAsLX,eAAe,CAAC,KAAK,CAOnB,GAAG,EA7LP,aAAa,CAuLX,EAAE,CAAC,KAAK,GAAG,eAAe,CAMxB,GAAG,EA7LP,aAAa,CAwLX,EAAE,CAAC,KAAK,GAAG,eAAe,CAKxB,GAAG,EA7LP,aAAa,CAyLX,EAAE,CAAC,KAAK,GAAG,eAAe,CAIxB,GAAG,EA7LP,aAAa,CA0LX,EAAE,CAAC,KAAK,GAAG,eAAe,CAGxB,GAAG,EA7LP,aAAa,CA2LX,EAAE,CAAC,KAAK,GAAG,eAAe,CAExB,GAAG,EA7LP,aAAa,CA4LX,EAAE,CAAC,KAAK,GAAG,eAAe,CACxB,GAAG,CAAC,EACF,UAAU,EAAE,OAAO,GACpB;;AA/LL,AAkME,aAlMW,CAkMX,OAAO,CAAC,EACN,MAAM,EAAE,OAAO,GAChB;;AApMH,AAsME,aAtMW,CAsMX,EAAE,EAtMJ,aAAa,CAuMX,EAAE,EAvMJ,aAAa,CAwMX,EAAE,EAxMJ,aAAa,CAyMX,EAAE,EAzMJ,aAAa,CA0MX,EAAE,EA1MJ,aAAa,CA2MX,EAAE,CAAC,EACD,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,KAAK,EACjB,aAAa,EAAE,MAAM,GAgBtB;;AA9NH,AAgNI,aAhNS,CAsMX,EAAE,CAUE,WAAW,EAhNjB,aAAa,CAuMX,EAAE,CASE,WAAW,EAhNjB,aAAa,CAwMX,EAAE,CAQE,WAAW,EAhNjB,aAAa,CAyMX,EAAE,CAOE,WAAW,EAhNjB,aAAa,CA0MX,EAAE,CAME,WAAW,EAhNjB,aAAa,CA2MX,EAAE,CAKE,WAAW,CAAC,EACZ,UAAU,EXxHR,MAAmB,GWyHtB;;AAlNL,AAoNI,aApNS,CAsMX,EAAE,GAcE,KAAK,EApNX,aAAa,CAsMX,EAAE,GAeE,cAAc,EArNpB,aAAa,CAsMX,EAAE,GAgBE,aAAa,EAtNnB,aAAa,CAsMX,EAAE,GAiBE,kBAAkB,EAvNxB,aAAa,CAuMX,EAAE,GAaE,KAAK,EApNX,aAAa,CAuMX,EAAE,GAcE,cAAc,EArNpB,aAAa,CAuMX,EAAE,GAeE,aAAa,EAtNnB,aAAa,CAuMX,EAAE,GAgBE,kBAAkB,EAvNxB,aAAa,CAwMX,EAAE,GAYE,KAAK,EApNX,aAAa,CAwMX,EAAE,GAaE,cAAc,EArNpB,aAAa,CAwMX,EAAE,GAcE,aAAa,EAtNnB,aAAa,CAwMX,EAAE,GAeE,kBAAkB,EAvNxB,aAAa,CAyMX,EAAE,GAWE,KAAK,EApNX,aAAa,CAyMX,EAAE,GAYE,cAAc,EArNpB,aAAa,CAyMX,EAAE,GAaE,aAAa,EAtNnB,aAAa,CAyMX,EAAE,GAcE,kBAAkB,EAvNxB,aAAa,CA0MX,EAAE,GAUE,KAAK,EApNX,aAAa,CA0MX,EAAE,GAWE,cAAc,EArNpB,aAAa,CA0MX,EAAE,GAYE,aAAa,EAtNnB,aAAa,CA0MX,EAAE,GAaE,kBAAkB,EAvNxB,aAAa,CA2MX,EAAE,GASE,KAAK,EApNX,aAAa,CA2MX,EAAE,GAUE,cAAc,EArNpB,aAAa,CA2MX,EAAE,GAWE,aAAa,EAtNnB,aAAa,CA2MX,EAAE,GAYE,kBAAkB,CAAC,EACnB,UAAU,EAAE,GAAG,GAChB;;AAzNL,AA2NI,aA3NS,CAsMX,EAAE,GAqBE,CAAC,EA3NP,aAAa,CAuMX,EAAE,GAoBE,CAAC,EA3NP,aAAa,CAwMX,EAAE,GAmBE,CAAC,EA3NP,aAAa,CAyMX,EAAE,GAkBE,CAAC,EA3NP,aAAa,CA0MX,EAAE,GAiBE,CAAC,EA3NP,aAAa,CA2MX,EAAE,GAgBE,CAAC,CAAC,EACF,UAAU,EAAE,CAAC,GACd;;AC/NL,AAAA,SAAS,CAAC,EACR,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,CAAC,EACb,aAAa,EAAE,CAAC,EAChB,UAAU,EAAE,IAAI,GA0HjB;;AA9HD,AAME,SANO,CAMP,cAAc,CAAC,EPcf,SAAS,ELJG,IAAI,CKIQ,UAAU,EOZhC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,CAAC,GAoHV;;ATpHC,MAAM,sBSHR,GANF,AAME,SANO,CAMP,cAAc,CAAC,EPiBb,SAAS,ELNC,IAAI,CKMU,UAAU,GOsGnC,EAAA;;ATpHC,MAAM,mBSHR,GANF,AAME,SANO,CAMP,cAAc,CAAC,EPMf,SAAS,ELGG,IAAI,CKHQ,UAAU,GOiHjC,EAAA;;ATpHC,MAAM,6CSHR,GANF,AAME,SANO,CAMP,cAAc,CAAC,EPSb,SAAS,ELCC,IAAI,CKDU,UAAU,GO8GnC,EAAA;;AA7HH,AAeI,SAfK,CAMP,cAAc,CASZ,cAAc,CAAC,EACb,OAAO,EAAE,KAAK,EACd,UAAU,EZgFR,IAAiB,EY/EnB,WAAW,EZwET,OAAoB,EYvEtB,cAAc,EZuEZ,OAAoB,EYtEtB,WAAW,EAAC,MAAC,EAEX,aAAa,EZ2Eb,IAAiB,EY1EjB,YAAY,EZ+DL,IAAI,GY/Bd;;AT9CD,MAAM,mBSMN,GAfJ,AAeI,SAfK,CAMP,cAAc,CASZ,cAAc,CAAC,EAeX,UAAU,EZiEV,IAAiB,EYhEjB,WAAW,EAAC,MAAC,EAEX,aAAa,EZ8Df,IAAiB,EY7Df,YAAY,EZ6Dd,IAAiB,GYxCpB,EAAA;;AAvDL,AAyCM,SAzCG,CAMP,cAAc,CASZ,cAAc,AA0BX,OAAO,CAAC,EACP,WAAW,EAAE,GAAG,EAChB,eAAe,EAAE,IAAI,GACtB;;AA5CP,AA8CM,SA9CG,CAMP,cAAc,CASZ,cAAc,CA+BV,KAAK,EA9Cb,SAAS,CAMP,cAAc,CASZ,cAAc,AAgCX,OAAO,CAAC,EACP,gBAAgB,EAAE,8FAKjB,GACF;;AAtDP,AAyDI,SAzDK,CAMP,cAAc,CAmDZ,kBAAkB,CAAC,EACjB,QAAQ,EAAE,QAAQ,EAEhB,KAAK,EAAE,CAAC,EAEV,KAAK,EZmCH,IAAiB,EYlCnB,MAAM,EZkCJ,IAAiB,EYjCnB,WAAW,EAAC,OAAC,EACb,aAAa,EAAC,OAAC,EACf,cAAc,EAAC,OAAC,EAChB,YAAY,EAAC,OAAC,EACd,KAAK,EZnBA,OAAO,GY2Cb;;ATnFD,MAAM,mBSgDN,GAzDJ,AAyDI,SAzDK,CAMP,cAAc,CAmDZ,kBAAkB,CAAC,EAcf,KAAK,EZwBL,IAAiB,EYvBjB,MAAM,EZuBN,IAAiB,EYtBjB,WAAW,EAAC,MAAC,EACb,aAAa,EAAC,MAAC,EACf,cAAc,EAAC,MAAC,EAChB,YAAY,EAAC,MAAC,GAgBjB,EAAA;;AA5FL,AA+EM,SA/EG,CAMP,cAAc,CAmDZ,kBAAkB,CAsBd,KAAK,CAAC,EACN,gBAAgB,EAAE,kEAIjB,GACF;;AArFP,AAwFQ,SAxFC,CAMP,cAAc,CAmDZ,kBAAkB,CA+Bd,GAAG,CAAC,EACF,SAAS,EAAE,aAAa,GACzB;;AA1FT,AA8FI,SA9FK,CAMP,cAAc,GAwFV,SAAS,CAAC,EACV,OAAO,EAAE,IAAI,EACb,YAAY,EZJV,OAAoB,EYKtB,UAAU,EAAE,IAAI,GAajB;;AA9GL,AAmGM,SAnGG,CAMP,cAAc,GAwFV,SAAS,CAKT,cAAc,CAAC,EACb,QAAQ,EAAE,QAAQ,GASnB;;AA7GP,AAsGQ,SAtGC,CAMP,cAAc,GAwFV,SAAS,CAKT,cAAc,CAGZ,cAAc,CAAC,EACb,KAAK,EZtDJ,OAAO,GYuDT;;AAxGT,AA0GQ,SA1GC,CAMP,cAAc,GAwFV,SAAS,CAKT,cAAc,CAOZ,kBAAkB,CAAC,EACjB,KAAK,EZ1DJ,OAAO,GY2DT;;AA5GT,AAiHM,SAjHG,CAMP,cAAc,AA0GX,OAAO,GACJ,kBAAkB,CAAC,GAAG,CAAC,EAErB,SAAS,EAAE,cAAc,GAI5B;;AAvHP,AAyHM,SAzHG,CAMP,cAAc,AA0GX,OAAO,GASJ,SAAS,CAAC,EACV,OAAO,EAAE,KAAK,GACf;;AAKP,AAAA,aAAa,CAAC,EACZ,WAAW,EZtCL,MAAmB,EYuCzB,aAAa,EZ5CA,IAAI,EY6CjB,cAAc,EZxCR,MAAmB,EYyCzB,YAAY,EZ9CC,IAAI,EY+CjB,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,GAAG,EACf,cAAc,EAAE,SAAS,EACzB,aAAa,EZnBN,GAAG,CAAC,KAAK,CMjGH,qBAAqB,EDhBlC,SAAS,ELUG,IAAI,CKVQ,UAAU,GOiJnC;;AT5IG,MAAM,sBSuHV,GAAA,AAAA,aAAa,CAAC,EPzHV,SAAS,ELQC,IAAI,CKRU,UAAU,GO8IrC,EAAA;;AT5IG,MAAM,mBSuHV,GAAA,AAAA,aAAa,CAAC,EAYV,aAAa,EZ7CT,IAAiB,EY8CrB,YAAY,EZ9CR,IAAiB,EY+CrB,UAAU,EZxDC,IAAI,EYyDf,UAAU,EAAE,KAAK,GAMpB,CArBD,AAiBI,aAjBS,CAiBP,WAAW,CAAC,EACZ,UAAU,EAAE,CAAC,GACd,EAEJ;;AAID,AAAA,QAAQ,CAAC,EACP,MAAM,EAAE,IAAI,EACZ,UAAU,EAAE,IAAI,EPvJhB,SAAS,ELUG,IAAI,CKVQ,UAAU,GO4KnC;;ATvKG,MAAM,sBSgJV,GAAA,AAAA,QAAQ,CAAC,EPlJL,SAAS,ELQC,IAAI,CKRU,UAAU,GOyKrC,EAAA;;AAvBD,AAKE,QALM,CAKN,aAAa,CAAC,EACZ,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,IAAI,GACjB;;AAXH,AAaE,QAbM,CAaN,kBAAkB,CAAC,EACjB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,GACV;;ATlKC,MAAM,mBSgJV,GAAA,AAAA,QAAQ,CAAC,EAqBL,aAAa,EZxFF,IAAI,GY0FlB,EAAA;;ATvKG,MAAM,mBS2KV,GAAA,AAAA,eAAe,CAAC,EAEZ,UAAU,EZhGC,KAAI,GYkGlB,EAAA;;AAED,AAAA,oBAAoB,CAAC,EACnB,YAAY,EAAE,CAAC,EACf,aAAa,EZhGP,OAAoB,EYiG1B,UAAU,EAAE,IAAI,GACjB;;AAED,AAAA,yBAAyB,CAAC,EACxB,OAAO,EAAE,UAAU,EP7LnB,SAAS,ELUG,IAAI,CKVQ,UAAU,GOiNnC;;AT5MG,MAAM,sBSuLV,GAAA,AAAA,yBAAyB,CAAC,EPzLtB,SAAS,ELQC,IAAI,CKRU,UAAU,GO8MrC,EAAA;;AArBD,AAIE,yBAJuB,EAIpB,MAAM,CAAC,EACR,OAAO,EAAE,IAAI,GACd;;AANH,AAQE,yBARuB,EAQpB,KAAK,CAAC,EACP,OAAO,EAAE,YAAY,EACrB,YAAY,EZ/GR,MAAmB,EYgHvB,WAAW,EZhHP,MAAmB,EYiHvB,KAAK,EZ7KK,OAAO,EY8KjB,OAAO,EAAE,GAAG,GACb;;AAdH,AAiBI,yBAjBqB,CAgBrB,UAAU,EACP,KAAK,CAAC,EACP,OAAO,EAAE,EAAE,GACZ;;ACnNL,AAAA,EAAE,EACF,WAAW,CAAC,ERqDV,SAAS,ELlCG,IAAI,CKkCQ,UAAU,EAClC,WAAW,ELlDc,IAAI,EaF7B,WAAW,EAAE,GAAG,GACjB;;AVKG,MAAM,sBUTV,GAAA,AAAA,EAAE,EACF,WAAW,CAAC,ERyDR,SAAS,ELrCC,IAAI,CKqCU,UAAU,GQtDrC,EAAA;;AAED,AAAA,EAAE,EACF,UAAU,CAAC,ER6BT,SAAS,ELlBG,IAAI,CKkBQ,UAAU,GQ3BnC;;AVAG,MAAM,sBUHV,GAAA,AAAA,EAAE,EACF,UAAU,CAAC,ERgCP,SAAS,ELpBC,IAAI,CKoBU,UAAU,EAClC,WAAW,ELnCY,IAAI,GaI9B,EAAA;;AAED,AAAA,EAAE,EACF,WAAW,CAAC,ERgBV,SAAS,ELXG,IAAI,CKWQ,UAAU,GQdnC;;AVLG,MAAM,sBUEV,GAAA,AAAA,EAAE,EACF,WAAW,CAAC,ERmBR,SAAS,ELbC,IAAI,CKaU,UAAU,GQjBrC,EAAA;;AAED,AAAA,EAAE,EACF,WAAW,CAAC,ERbV,SAAS,ELUG,IAAI,CKVQ,UAAU,EQelC,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,SAAS,EACzB,cAAc,EAAE,KAAK,GACtB;;AVbG,MAAM,sBUOV,GAAA,AAAA,EAAE,EACF,WAAW,CAAC,ERVR,SAAS,ELQC,IAAI,CKRU,UAAU,GQerC,EAAA;;AAED,AAAA,EAAE,CAAC,IAAI,CAAC,EACN,cAAc,EAAE,IAAI,GACrB;;AAED,AAAA,EAAE,EACF,aAAa,CAAC,ERjBZ,SAAS,ELGG,IAAI,CKHQ,UAAU,EQmBlC,KAAK,EbEO,OAAO,GaDpB;;AVvBG,MAAM,sBUmBV,GAAA,AAAA,EAAE,EACF,aAAa,CAAC,ERdV,SAAS,ELCC,IAAI,CKDU,UAAU,GQiBrC,EAAA;;AAED,AAAA,EAAE,EACF,UAAU,CAAC,ER/BT,SAAS,ELUG,IAAI,CKVQ,UAAU,EQiClC,KAAK,EbJO,OAAO,GaKpB;;AV7BG,MAAM,sBUyBV,GAAA,AAAA,EAAE,EACF,UAAU,CAAC,ER5BP,SAAS,ELQC,IAAI,CKRU,UAAU,GQ+BrC,EAAA;;AAED,AAAA,WAAW,CAAC,ERpCV,SAAS,ELUG,IAAI,CKVQ,UAAU,GQsCnC;;AVjCG,MAAM,sBU+BV,GAAA,AAAA,WAAW,CAAC,ERjCR,SAAS,ELQC,IAAI,CKRU,UAAU,GQmCrC,EAAA;;AAED,AAAA,UAAU,CAAC,EACT,WAAW,Eb5CM,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,Ca4C9B,UAAU,GAC1C;;AAED,AAAA,UAAU,CAAC,EACT,UAAU,EAAE,eAAe,GAC5B;;AAED,AAAA,YAAY,CAAC,EACX,UAAU,EAAE,iBAAiB,GAC9B;;AAED,AAAA,WAAW,CAAC,EACV,UAAU,EAAE,gBAAgB,GAC7B;;AC3DD,AAAA,MAAM,EACN,WAAW,CAAC,EACV,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,YAAY,EdqFN,MAAmB,EcpFzB,WAAW,EdoFL,MAAmB,EcnFzB,KAAK,EdqBC,IAAI,EcpBV,cAAc,EAAE,SAAS,EACzB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EdqCP,OAAO,EK5ChB,SAAS,ELUG,IAAI,CKVQ,UAAU,ESSlC,aAAa,EAAE,IAAI,GACpB;;AXLG,MAAM,sBWVV,GAAA,AAAA,MAAM,EACN,WAAW,CAAC,ETOR,SAAS,ELQC,IAAI,CKRU,UAAU,GSOrC,EAAA;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EdqCN,OAAO,GcpClB;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EdsBL,OAAO,GcrBnB;;AAED,AAAA,UAAU,CAAC,EACT,gBAAgB,EduCR,OAAO,GctChB;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EdIO,OAAO,EcHnB,gBAAgB,Ed6BL,OAAO,Gc5BnB;;AC/BD,AAAA,IAAI,CAAC,EACH,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,KAAK,EAClB,aAAa,EAAE,GAAG,EAClB,cAAc,EAAE,KAAK,EACrB,YAAY,EAAE,GAAG,EACjB,MAAM,EAAE,CAAC,EACT,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,GAAG,EAChB,WAAW,EAAE,GAAG,EAChB,KAAK,EfqCI,OAAO,EepChB,eAAe,EAAE,IAAI,EACrB,cAAc,EAAE,QAAQ,EACxB,MAAM,EAAE,OAAO,EACf,gBAAgB,EfgEE,OAAO,Ee/DzB,YAAY,EAAE,CAAC,EACf,aAAa,EfoGC,GAAG,EenGjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EACzE,UAAU,EAAE,IAAI,GAiDjB;;AArED,AAsBE,IAtBE,CAsBA,KAAK,CAAC,EACN,eAAe,EAAE,IAAI,EACrB,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAM,qBAAI,GAChC;;AA1BH,AA4BE,IA5BE,CA4BA,KAAK,CAAC,KAAK,EA5Bf,IAAI,AA6BD,SAAS,CAAC,KAAK,CAAC,EACf,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAM,qBAAI,GAChC;;AA/BH,AAiCE,IAjCE,CAiCA,KAAK,EAjCT,IAAI,AAkCD,uBAAuB,CAAC,EACvB,KAAK,EfcE,OAAO,Gebf;;AApCH,AAsCE,IAtCE,CAsCA,KAAK,EAtCT,IAAI,CAuCA,MAAM,EAvCV,IAAI,AAwCD,uBAAuB,EAxC1B,IAAI,AAyCD,wBAAwB,CAAC,EACxB,eAAe,EAAE,IAAI,EACrB,gBAAgB,EfqCA,OAAO,GepCxB;;AA5CH,AA8CE,IA9CE,CA8CA,MAAM,EA9CV,IAAI,AA+CD,SAAS,EA/CZ,IAAI,AAgDD,wBAAwB,CAAC,EACxB,gBAAgB,Ef+BA,OAAO,Ee9BvB,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AApDH,AAsDE,IAtDE,AAsDD,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EAAS,OAAO,GACjC;;AAxDH,AA4DI,IA5DA,CA0DA,QAAQ,EA1DZ,IAAI,CA0DA,QAAQ,CAGN,KAAK,EA7DX,IAAI,AA2DD,SAAS,EA3DZ,IAAI,AA2DD,SAAS,CAEN,KAAK,CAAC,EACN,KAAK,EAAE,wBAAwB,EAC/B,MAAM,EAAE,OAAO,EACf,gBAAgB,EAAE,wBAAwB,EAC1C,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,IAAI,GACjB;;AAIL,AAAA,YAAY,CAAC,EACX,KAAK,EfvBI,OAAO,EewBhB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CflCf,OAAO,GewDpB;;AAzBD,AAKE,YALU,CAKR,KAAK,EALT,YAAY,CAMR,MAAM,EANV,YAAY,AAOT,uBAAuB,EAP1B,YAAY,AAQT,wBAAwB,CAAC,EACxB,KAAK,Ef/BE,OAAO,EegCd,eAAe,EAAE,IAAI,EACrB,gBAAgB,EAAE,WAAW,EAC7B,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,Cf3CjB,OAAO,Ge4ClB;;AAbH,AAeE,YAfU,CAeR,KAAK,CAAC,EACN,eAAe,EAAE,IAAI,EACrB,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CfzDjB,OAAO,EeyDyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAM,qBAAI,GAC9D;;AAnBH,AAqBE,YArBU,CAqBR,KAAK,CAAC,KAAK,EArBf,YAAY,AAsBT,SAAS,CAAC,KAAK,CAAC,EACf,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,Cf9DjB,OAAO,Ge+DlB;;AAGH,AAAA,YAAY,CAAC,EXpGX,KAAK,EJ+BC,IAAI,EI9BV,gBAAgB,EJ4CL,OAAO,EI3ClB,gBAAgB,EAAE,iCAAkD,EACpE,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GWmG1E;;AAFD,AX/FE,YW+FU,CX/FR,KAAK,EW+FT,YAAY,AX9FT,uBAAuB,CAAC,EACvB,KAAK,EJwBD,IAAI,EIvBR,gBAAgB,EJqCP,OAAO,EIpChB,gBAAgB,EAAE,iCAAoD,GACvE;;AW0FH,AXxFE,YWwFU,CXxFR,MAAM,EWwFV,YAAY,AXvFT,SAAS,EWuFZ,YAAY,AXtFT,wBAAwB,CAAC,EACxB,gBAAgB,EJ8BP,OAAO,EI7BhB,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AWkFH,AXhFE,YWgFU,AXhFT,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EJwBP,OAAO,GIvBjB;;AWkFH,AAAA,WAAW,CAAC,EXxGV,KAAK,EJ+BC,IAAI,EI9BV,gBAAgB,EJ4CL,OAAO,EI3ClB,gBAAgB,EAAE,iCAAkD,EACpE,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GWuG1E;;AAFD,AXnGE,WWmGS,CXnGP,KAAK,EWmGT,WAAW,AXlGR,uBAAuB,CAAC,EACvB,KAAK,EJwBD,IAAI,EIvBR,gBAAgB,EJqCP,OAAO,EIpChB,gBAAgB,EAAE,iCAAoD,GACvE;;AW8FH,AX5FE,WW4FS,CX5FP,MAAM,EW4FV,WAAW,AX3FR,SAAS,EW2FZ,WAAW,AX1FR,wBAAwB,CAAC,EACxB,gBAAgB,EJ8BP,OAAO,EI7BhB,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AWsFH,AXpFE,WWoFS,AXpFR,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EJwBP,OAAO,GIvBjB;;AWsFH,AAAA,SAAS,CAAC,EX5GR,KAAK,EJ+BC,IAAI,EI9BV,gBAAgB,EJgDP,OAAO,EI/ChB,gBAAgB,EAAE,iCAAkD,EACpE,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GW2G1E;;AAFD,AXvGE,SWuGO,CXvGL,KAAK,EWuGT,SAAS,AXtGN,uBAAuB,CAAC,EACvB,KAAK,EJwBD,IAAI,EIvBR,gBAAgB,EJyCT,OAAO,EIxCd,gBAAgB,EAAE,iCAAoD,GACvE;;AWkGH,AXhGE,SWgGO,CXhGL,MAAM,EWgGV,SAAS,AX/FN,SAAS,EW+FZ,SAAS,AX9FN,wBAAwB,CAAC,EACxB,gBAAgB,EJkCT,OAAO,EIjCd,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AW0FH,AXxFE,SWwFO,AXxFN,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EJ4BT,OAAO,GI3Bf;;AW0FH,AAAA,UAAU,CAAC,EXhHT,KAAK,EJ+BC,IAAI,EI9BV,gBAAgB,EJsDN,OAAO,EIrDjB,gBAAgB,EAAE,iCAAkD,EACpE,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GW+G1E;;AAFD,AX3GE,UW2GQ,CX3GN,KAAK,EW2GT,UAAU,AX1GP,uBAAuB,CAAC,EACvB,KAAK,EJwBD,IAAI,EIvBR,gBAAgB,EJ+CR,OAAO,EI9Cf,gBAAgB,EAAE,iCAAoD,GACvE;;AWsGH,AXpGE,UWoGQ,CXpGN,MAAM,EWoGV,UAAU,AXnGP,SAAS,EWmGZ,UAAU,AXlGP,wBAAwB,CAAC,EACxB,gBAAgB,EJwCR,OAAO,EIvCf,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AW8FH,AX5FE,UW4FQ,AX5FP,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EJkCR,OAAO,GIjChB;;AYrBH,AAAA,OAAO,CAAC,EACN,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,EACZ,MAAM,EhBgGC,IAAiB,EgB/FxB,OAAO,EhBuFD,MAAmB,EgBtFzB,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAmD,GAS/E;;AbLG,MAAM,mBaVV,GAAA,AAAA,OAAO,CAAC,EASJ,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,IAAI,GAEnB,EAAA;;AAED,AAAA,kBAAkB,CAAC,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,EACV,MAAM,EhB8EA,IAAiB,EgB7EvB,QAAQ,EAAE,MAAM,EAChB,aAAa,EhBiGC,GAAG,EgBhGjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EACzE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,KAAmD,GAW9E;;AbzBG,MAAM,mBaOV,GAAA,AAAA,kBAAkB,CAAC,EAUf,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,IAAI,EACX,SAAS,EhB0GU,KAA2B,EgBzG9C,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,CAAC,EAChB,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,KAAK,CAAC,IAAI,ChBuGJ,KAAK,GgBrG1B,EAAA;;AAED,AAAA,aAAa,CAAC,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,WAAW,EhBmDL,MAAmB,EgBlDzB,aAAa,EhB6CA,IAAI,EgB5CjB,cAAc,EhBiDR,MAAmB,EgBhDzB,YAAY,EAAC,MAAC,EACd,SAAS,EAAE,IAAI,EACf,gBAAgB,EhBhBV,IAAI,EgBiBV,UAAU,EAAE,CAAC,EACb,YAAY,EAAE,CAAC,EACf,aAAa,EAAE,CAAC,EAChB,WAAW,EAAE,CAAC,EACd,aAAa,EAAE,CAAC,GAkBjB;;Ab3DG,MAAM,mBa2BV,GAAA,AAAA,aAAa,CAAC,EAiBV,WAAW,EhBiCA,IAAI,EgBhCf,cAAc,EhBgCH,IAAI,EgB/Bf,YAAY,EAAC,MAAC,EACd,SAAS,EAAE,IAAI,EACf,gBAAgB,EhB5BZ,IAAI,EgB6BR,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,KAAmD,GAUtF,EAAA;;AAhCD,AAyBE,aAzBW,CAyBT,KAAK,CAAC,EACN,OAAO,EAAE,CAAC,GAKX;;AA/BH,AA4BI,aA5BS,CAyBT,KAAK,GAGH,aAAa,CAAC,YAAY,CAAC,EAC3B,KAAK,EhBhBA,OAAO,GgBiBb;;AAIL,AAAA,aAAa,CAAC,EACZ,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,YAAY,EhBYC,IAAI,GgBClB;;Ab9EG,MAAM,mBa6DV,GAAA,AAAA,aAAa,CAAC,EAOV,YAAY,EhBkBR,IAAiB,EgBjBrB,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,KAAmD,GAStF,EAAA;;AAjBD,AAWE,aAXW,CAWX,YAAY,CAAC,EACX,KAAK,EAAC,MAAC,EACP,MAAM,EAAC,MAAC,EACR,UAAU,EAAE,MAAM,EAClB,KAAK,EhBtDK,OAAO,GgBuDlB;;AAGH,AAAA,eAAe,CAAC,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,IAAI,EACX,UAAU,EAAE,iBAAkC,EAC9C,UAAU,EAAE,IAAI,EAChB,gBAAgB,EhBnEV,IAAI,EgBoEV,0BAA0B,EhBqBZ,GAAG,EgBpBjB,yBAAyB,EhBoBX,GAAG,EgBnBjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GAO1E;;AbjGG,MAAM,mBagFV,GAAA,AAAA,eAAe,CAAC,EAaZ,GAAG,EAAE,IAAI,EACT,KAAK,EhB+Bc,KAA2B,EgB9B9C,UAAU,EAAE,kBAAkB,CAAC,UAAU,GAE5C,EAAA;;AAED,AAAA,oBAAoB,CAAC,EACnB,YAAY,EAAE,CAAC,EACf,aAAa,EhBpBP,OAAoB,EgBqB1B,UAAU,EAAE,IAAI,EX3FhB,SAAS,ELJG,IAAI,CKIQ,UAAU,GWiGnC;;Ab5GG,MAAM,sBamGV,GAAA,AAAA,oBAAoB,CAAC,EXrFjB,SAAS,ELNC,IAAI,CKMU,UAAU,GW8FrC,EAAA;;Ab5GG,MAAM,mBamGV,GAAA,AAAA,oBAAoB,CAAC,EXhGnB,SAAS,ELGG,IAAI,CKHQ,UAAU,GWyGnC,EAAA;;Ab5GG,MAAM,6CamGV,GAAA,AAAA,oBAAoB,CAAC,EX7FjB,SAAS,ELCC,IAAI,CKDU,UAAU,GWsGrC,EAAA;;AAED,AAAA,yBAAyB,CAAC,EACxB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,cAAc,CAAC,EACb,OAAO,EAAE,KAAK,EACd,WAAW,EhBpCL,OAAoB,EgBqC1B,aAAa,EhBnCP,OAAoB,EgBoC1B,cAAc,EhBtCR,OAAoB,EgBuC1B,YAAY,EhBrCN,OAAoB,GgB2C3B;;AAXD,AAOE,cAPY,CAOV,KAAK,EAPT,cAAc,AAQX,OAAO,CAAC,EACP,gBAAgB,EV/HH,OAAO,GUgIrB;;AAGH,AAAA,oBAAoB,CAAC,EACnB,OAAO,EAAE,KAAK,EACd,WAAW,EhBhDL,MAAmB,EgBiDzB,cAAc,EhBjDR,MAAmB,GgByD1B;;Ab3IG,MAAM,sBagIV,GAAA,AAAA,oBAAoB,CAAC,EAMjB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,GAAG,EACV,aAAa,EhBtDT,MAAmB,EgBuDvB,cAAc,EAAE,GAAG,GAEtB,EAAA;;AAED,AAAA,kBAAkB,CAAC,EACjB,OAAO,EAAE,IAAI,EACb,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,GAsBtB;;AAzBD,AAKE,kBALgB,AAKf,yBAAyB,CAAC,EACzB,OAAO,EAAE,GAAG,EXhJd,SAAS,ELGG,IAAI,CKHQ,UAAU,GWsJjC;;AbzJC,MAAM,sBakJR,GALF,AAKE,kBALgB,AAKf,yBAAyB,CAAC,EX5IzB,SAAS,ELCC,IAAI,CKDU,UAAU,GWmJnC,EAAA;;AbzJC,MAAM,mBakJR,GALF,AAKE,kBALgB,AAKf,yBAAyB,CAAC,EXvJ3B,SAAS,ELUG,IAAI,CKVQ,UAAU,GW8JjC,EAAA;;AbzJC,MAAM,6CakJR,GALF,AAKE,kBALgB,AAKf,yBAAyB,CAAC,EXpJzB,SAAS,ELQC,IAAI,CKRU,UAAU,GW2JnC,EAAA;;AAZH,AAcE,kBAdgB,CAchB,mBAAmB,CAAC,EAClB,KAAK,EhB/EM,IAAI,EgBgFf,MAAM,EhBhFK,IAAI,EgBiFf,YAAY,EhB5ER,MAAmB,EgB6EvB,KAAK,EhBvHE,OAAO,EgBwHd,WAAW,EAAE,CAAC,GACf;;AApBH,AAsBE,kBAtBgB,CAsBhB,wBAAwB,CAAC,EACvB,QAAQ,EAAE,IAAI,GACf;;AAGH,AAAA,sBAAsB,CAAC,EACrB,WAAW,EAAC,MAAC,EACb,SAAS,EAAE,UAAU,GACtB;;AAED,AAAA,sBAAsB,CAAC,EACrB,OAAO,EAAE,KAAK,EACd,WAAW,EAAC,MAAC,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EhB3JO,OAAO,EgB4JnB,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAE,MAAM,EXhMnB,SAAS,ELgBG,GAAG,CKhBS,UAAU,GWkMnC;;AbrLG,MAAM,sBa6KV,GAAA,AAAA,sBAAsB,CAAC,EXvLnB,SAAS,ELcI,IAAI,CKdU,UAAU,GW+LxC,EAAA;;AAED,AAAA,uBAAuB,CAAC,EACtB,OAAO,EAAE,KAAK,EACd,WAAW,EhBvGL,MAAmB,EgBwGzB,cAAc,EhBxGR,MAAmB,EgByGzB,YAAY,EhB9GC,IAAI,EgB+GjB,WAAW,EhB1GL,MAAmB,EgB2GzB,KAAK,EhBvKO,OAAO,EgBwKnB,SAAS,EAAE,UAAU,EACrB,WAAW,EhBnFJ,GAAG,CAAC,KAAK,EgBoFhB,iBAAiB,EVrLJ,qBAAqB,EDhBlC,SAAS,ELUG,IAAI,CKVQ,UAAU,GW+MnC;;Ab1MG,MAAM,sBauLV,GAAA,AAAA,uBAAuB,CAAC,EXzLpB,SAAS,ELQC,IAAI,CKRU,UAAU,GW4MrC,EAAA;;Ab1MG,MAAM,sBauLV,GAAA,AAAA,uBAAuB,CAAC,EAapB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,GAAG,EACV,YAAY,EhBpHR,MAAmB,EgBqHvB,WAAW,EAAE,CAAC,EACd,cAAc,EAAE,GAAG,GAEtB,EAAA;;AAED,AAAA,sBAAsB,GAAG,sBAAsB,CAAC,EAC9C,UAAU,EhB5HJ,OAAoB,GgB6H3B;;AAED,AAAA,wBAAwB,CAAC,EACvB,WAAW,EAAE,IAAI,GAClB;;AAED,AAAA,iBAAiB,CAAC,EAChB,WAAW,EhBnIL,MAAmB,EgBoIzB,aAAa,EhBnIP,OAAoB,EgBoI1B,cAAc,EhBrIR,MAAmB,EgBsIzB,YAAY,EhBrIN,OAAoB,EKhF1B,SAAS,ELGG,IAAI,CKHQ,UAAU,GWuNnC;;Ab1NG,MAAM,sBaoNV,GAAA,AAAA,iBAAiB,CAAC,EX9Md,SAAS,ELCC,IAAI,CKDU,UAAU,GWoNrC,EAAA;;AAED,AAAA,cAAc,CAAC,EACb,QAAQ,EAAE,KAAK,EACf,KAAK,EhBjJQ,IAAI,EgBkJjB,MAAM,EhBlJO,IAAI,EgBmJjB,OAAO,EAAE,IAAI,EACb,KAAK,EhBxIC,MAAmB,EgByIzB,MAAM,EhBzIA,MAAmB,EgB0IzB,gBAAgB,EhB/MV,IAAI,EgBgNV,MAAM,EAAE,GAAG,CAAC,KAAK,ChB5LR,sBAAO,EgB6LhB,aAAa,EAAC,OAAC,EACf,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EACzE,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACxB;;AAED,AAAA,eAAe,CAAC,EACd,QAAQ,EAAE,KAAK,EACf,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,kBAAkB,EACpC,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,OAAO,CAAC,IAAI,ChBtHJ,KAAK,EgBsHsB,KAAK,CAAC,EAAE,ChBtHnC,KAAK,EgBuHvB,MAAM,CAAC,EAAE,ChBvHS,KAAK,GgBwH1B;;AAED,AACE,cADY,CACZ,OAAO,CAAC,EACN,QAAQ,EAAE,KAAK,EACf,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,CAAC,GACX;;AARH,AAUE,cAVY,CAUZ,kBAAkB,CAAC,EACjB,MAAM,EhBzKD,IAAiB,EgB0KtB,aAAa,EAAE,CAAC,GAMjB;;Ab1QC,MAAM,mBakQR,GAVF,AAUE,cAVY,CAUZ,kBAAkB,CAAC,EAKf,KAAK,EhB1IY,KAA2B,EgB2I5C,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GAE5E,EAAA;;AAlBH,AAoBE,cApBY,CAoBZ,aAAa,CAAC,EACZ,gBAAgB,EhBzPZ,IAAI,GgB8PT;;AblRC,MAAM,mBa4QR,GApBF,AAoBE,cApBY,CAoBZ,aAAa,CAAC,EAIV,YAAY,EAAE,MAAM,GAEvB,EAAA;;AblRC,MAAM,mBaoRR,GA5BF,AA4BE,cA5BY,CA4BZ,aAAa,CAAC,EAEV,YAAY,EAAE,MAAM,GAEvB,EAAA;;AAhCH,AAkCE,cAlCY,CAkCZ,eAAe,CAAC,EACd,OAAO,EAAE,KAAK,GACf;;AApCH,AAsCE,cAtCY,CAsCZ,eAAe,CAAC,EACd,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,OAAO,CAAC,IAAI,ChBpKN,KAAK,EgBoKwB,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,GACnE;;AbnSC,MAAM,mBasSN,GA9CJ,AA8CI,cA9CU,CA8CV,KAAK,CAAC,EACJ,QAAQ,EAAE,KAAK,EACf,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,CAAC,GACR,EAAA;;AAlDL,AAqDE,cArDY,CAqDZ,YAAY,CAAC,EACX,WAAW,EhBpNN,IAAiB,GgByNvB;;AbnTC,MAAM,mBa6SR,GArDF,AAqDE,cArDY,CAqDZ,YAAY,CAAC,EAIT,WAAW,EAAE,CAAC,GAEjB,EAAA;;AC5TH,AAAA,cAAc,CAAC,EACb,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,IAAI,EACX,SAAS,EAAE,IAAI,EACf,aAAa,EjB0FP,MAAmB,EiBzFzB,UAAU,EAAE,IAAI,EAChB,aAAa,EjBgHC,GAAG,EiB/GjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GAC1E;;AAED,AAAA,KAAK,CAAC,EACJ,OAAO,EAAE,KAAK,EACd,SAAS,EAAE,IAAI,EACf,eAAe,EAAE,QAAQ,GAC1B;;AAED,AAAA,EAAE,EACF,EAAE,CAAC,EZLD,SAAS,ELGG,IAAI,CKHQ,UAAU,EYOlC,SAAS,EAAE,KAAK,EAChB,WAAW,EjBuEL,MAAmB,EiBtEzB,aAAa,EjBuEP,OAAoB,EiBtE1B,cAAc,EjBqER,MAAmB,EiBpEzB,YAAY,EjBqEN,OAAoB,EiBpE1B,gBAAgB,EjBKV,IAAI,EiBJV,aAAa,EjB4FN,GAAG,CAAC,KAAK,CMjGH,qBAAqB,EWMlC,WAAW,EjB2FJ,GAAG,CAAC,KAAK,CMjGH,qBAAqB,GWWnC;;AdtBG,MAAM,sBcOV,GAAA,AAAA,EAAE,EACF,EAAE,CAAC,EZFC,SAAS,ELCC,IAAI,CKDU,UAAU,GYgBrC,EAAA;;AAfD,AAYE,EAZA,CAYE,aAAa,EAXjB,EAAE,CAWE,aAAa,CAAC,EACd,WAAW,EAAE,CAAC,GACf;;AAGH,AAGM,KAHD,CACH,EAAE,CACE,YAAY,CACZ,EAAE,EAHR,KAAK,CACH,EAAE,CACE,YAAY,CAEZ,EAAE,CAAC,EACD,aAAa,EAAE,CAAC,GACjB;;AANP,AAQM,KARD,CACH,EAAE,CACE,YAAY,CAMZ,EAAE,CAAC,EACD,cAAc,EjBkDd,OAAoB,GiBjDrB;;AAKP,AACE,KADG,CACH,EAAE,CAAC,EACD,aAAa,EjBmER,GAAG,CAAC,KAAK,CMjGH,qBAAqB,GW+BjC;;ACnDH,AAAA,IAAI,CAAC,EACH,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,GAAG,EAChB,gBAAgB,ElBkCJ,OAAO,EkBjCnB,MAAM,ElBiHC,GAAG,CAAC,KAAK,CMjGH,qBAAqB,EYflC,aAAa,ElBiHC,GAAG,GkBhHlB;;AAGD,AAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EACb,YAAY,EZUC,qBAAqB,GYTnC;;AA8BD,AAAA,GAAG,AAAA,kBAAkB,CAAC,EACpB,OAAO,ElBkDD,OAAoB,EkBjD1B,UAAU,EAAE,CAAC,EACb,aAAa,ElBgDP,OAAoB,EkB/C1B,UAAU,EAAE,IAAI,EAChB,gBAAgB,ElBTJ,OAAO,EkBUnB,aAAa,ElBuEC,GAAG,EkBtEjB,UAAU,EAAE,IAAI,EAChB,0BAA0B,EAAE,KAAK,GASlC;;AAjBD,AAUE,GAVC,AAAA,kBAAkB,CAUnB,GAAG,AAAA,UAAU,EAVf,GAAG,AAAA,kBAAkB,CAWnB,GAAG,AAAA,UAAU,EAXf,GAAG,AAAA,kBAAkB,CAYnB,IAAI,CAAC,EACH,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,GACV;;AAKH,AAAA,MAAM,AAAA,UAAU,CAAC,EACf,OAAO,ElB6BD,OAAoB,EkB5B1B,UAAU,EAAE,CAAC,EACb,aAAa,ElB2BP,OAAoB,EkB1B1B,gBAAgB,ElB7BJ,OAAO,EkB8BnB,aAAa,ElBmDC,GAAG,EkBlDjB,UAAU,EAAE,IAAI,EAChB,0BAA0B,EAAE,KAAK,GAQlC;;AAfD,AASE,MATI,AAAA,UAAU,CASd,GAAG,EATL,MAAM,AAAA,UAAU,CAUd,IAAI,CAAC,EACH,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,GACV;;AAKH,AAAA,UAAU,CAAC,cAAc,CAAC,EACxB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,IAAI,GAmBjB;;AAvBD,AAME,UANQ,CAAC,cAAc,CAMvB,EAAE,EANJ,UAAU,CAAC,cAAc,CAOvB,GAAG,CAAC,EbpFJ,SAAS,ELUG,IAAI,CKVQ,UAAU,EasFhC,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,CAAC,EACV,gBAAgB,ElBvDN,OAAO,EkBwDjB,MAAM,EAAE,CAAC,GACV;;AfrFC,MAAM,sBe8ER,GANF,AAME,UANQ,CAAC,cAAc,CAMvB,EAAE,EANJ,UAAU,CAAC,cAAc,CAOvB,GAAG,CAAC,EbjFF,SAAS,ELQC,IAAI,CKRU,UAAU,GauFnC,EAAA;;AAbH,AAeE,UAfQ,CAAC,cAAc,CAevB,EAAE,AAAA,GAAG,CAAC,EACJ,aAAa,ElBLT,OAAoB,GkBMzB;;AAjBH,AAmBE,UAnBQ,CAAC,cAAc,CAmBvB,GAAG,CAAC,EACF,MAAM,EAAE,CAAC,EACT,WAAW,EAAE,CAAC,GACf;;AAGH,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,IAAI,CAAC,EACd,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,WAAW,EAAE,IAAI,EACjB,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,IAAI,GACZ;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,IAAI,GACZ;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,IAAI,GACZ;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AAMD,AAAA,aAAa,CAAC,EACZ,OAAO,ElBlOD,OAAoB,EkBmO1B,aAAa,ElBnOP,OAAoB,EkBoO1B,QAAQ,EAAE,IAAI,EACd,MAAM,EAAE,GAAG,CAAC,KAAK,CZ7SJ,qBAAqB,EY8SlC,aAAa,ElB5MC,GAAG,GkBwNlB;;AAjBD,AAOE,aAPW,GAOT,kBAAkB,EAPtB,aAAa,GAQT,MAAM,AAAA,UAAU,CAAC,EACjB,QAAQ,EAAE,QAAQ,EAClB,UAAU,ElBjPC,KAAI,EkBkPf,YAAY,EAAE,GAAG,CAAC,KAAK,CZpTZ,qBAAqB,EYqThC,aAAa,EAAE,GAAG,CAAC,KAAK,CZrTb,qBAAqB,EYsThC,WAAW,EAAE,GAAG,CAAC,KAAK,CZtTX,qBAAqB,EYuThC,sBAAsB,EAAE,CAAC,EACzB,uBAAuB,EAAE,CAAC,GAC3B;;AE5UH,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpB6BO,OAAO,CoB7BC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpB0BO,OAAO,CoB1BC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBuBO,OAAO,CoBvBC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBoBO,OAAO,CoBpBC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBiBO,OAAO,CoBjBC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBeO,OAAO,CoBfC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBYO,OAAO,CoBZC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBSO,OAAO,CoBTC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBMO,OAAO,CoBNC,UAAU,GAC/B;;AAED,AAAA,cAAc,CAAC,EACb,KAAK,EpBSI,OAAO,CoBTC,UAAU,GAC5B;;AAED,AAAA,cAAc,CAAC,EACb,KAAK,EpBMI,OAAO,CoBNC,UAAU,GAC5B;;AAED,AAAA,cAAc,CAAC,EACb,KAAK,EpBGI,OAAO,CoBHC,UAAU,GAC5B;;AAED,AAAA,cAAc,CAAC,EACb,KAAK,EpBAI,OAAO,CoBAC,UAAU,GAC5B;;AAED,AAAA,eAAe,CAAC,EACd,KAAK,EpBFK,OAAO,CoBEC,UAAU,GAC7B;;AAED,AAAA,eAAe,CAAC,EACd,KAAK,EpBLK,OAAO,CoBKC,UAAU,GAC7B;;AAED,AAAA,eAAe,CAAC,EACd,KAAK,EpBRK,OAAO,CoBQC,UAAU,GAC7B;;AAED,AAAA,eAAe,CAAC,EACd,KAAK,EpBXK,OAAO,CoBWC,UAAU,GAC7B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpB5BM,OAAO,CoB4BC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpB/BM,OAAO,CoB+BC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBlCM,OAAO,CoBkCC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBrCM,OAAO,CoBqCC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpB7BM,OAAO,CoB6BC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBhCM,OAAO,CoBgCC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBnCM,OAAO,CoBmCC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBtCM,OAAO,CoBsCC,UAAU,GAC9B;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EpBxCG,OAAO,CoBwCC,UAAU,GAC3B;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EpB3CG,OAAO,CoB2CC,UAAU,GAC3B;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EpB9CG,OAAO,CoB8CC,UAAU,GAC3B;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EpBjDG,OAAO,CoBiDC,UAAU,GAC3B;;AAID,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBzFJ,OAAO,CoByFY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpB5FJ,OAAO,CoB4FY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpB/FJ,OAAO,CoB+FY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBlGJ,OAAO,CoBkGY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBrGJ,OAAO,CoBqGY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBvGJ,OAAO,CoBuGY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpB1GJ,OAAO,CoB0GY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpB7GJ,OAAO,CoB6GY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBhHJ,OAAO,CoBgHY,UAAU,GAC1C;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EpB7GP,OAAO,CoB6GY,UAAU,GACvC;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EpBhHP,OAAO,CoBgHY,UAAU,GACvC;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EpBnHP,OAAO,CoBmHY,UAAU,GACvC;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EpBtHP,OAAO,CoBsHY,UAAU,GACvC;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EpBxHN,OAAO,CoBwHY,UAAU,GACxC;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EpB3HN,OAAO,CoB2HY,UAAU,GACxC;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EpB9HN,OAAO,CoB8HY,UAAU,GACxC;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EpBjIN,OAAO,CoBiIY,UAAU,GACxC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBlJL,OAAO,CoBkJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBrJL,OAAO,CoBqJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBxJL,OAAO,CoBwJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpB3JL,OAAO,CoB2JY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBnJL,OAAO,CoBmJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBtJL,OAAO,CoBsJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBzJL,OAAO,CoByJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpB5JL,OAAO,CoB4JY,UAAU,GACzC;;AAED,AAAA,WAAW,CAAC,EACV,gBAAgB,EpB9JR,OAAO,CoB8JY,UAAU,GACtC;;AAED,AAAA,WAAW,CAAC,EACV,gBAAgB,EpBjKR,OAAO,CoBiKY,UAAU,GACtC;;AAED,AAAA,WAAW,CAAC,EACV,gBAAgB,EpBpKR,OAAO,CoBoKY,UAAU,GACtC;;AAED,AAAA,WAAW,CAAC,EACV,gBAAgB,EpBvKR,OAAO,CoBuKY,UAAU,GACtC;;ACvOD,AAAA,QAAQ,CAAC,EACP,OAAO,EAAE,gBAAgB,GAC1B;;AACD,AAAA,OAAO,CAAC,EACN,OAAO,EAAE,eAAe,GACzB;;AACD,AAAA,SAAS,CAAC,EACR,OAAO,EAAE,iBAAiB,GAC3B;;AACD,AAAA,eAAe,CAAC,EACd,OAAO,EAAE,uBAAuB,GACjC;;AACD,AAAA,OAAO,CAAC,EACN,OAAO,EAAE,eAAe,GACzB;;AlBPG,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AAmBP,AAAA,WAAW,CAAC,EACV,KAAK,EAAE,eAAe,GACvB;;AAED,AAAA,YAAY,CAAC,EACX,KAAK,EAAE,gBAAgB,GACxB;;AAED,AAAA,mBAAmB,CAAC,EAClB,eAAe,EAAE,qBAAqB,GACvC;;AAED,AAAA,iBAAiB,CAAC,EAChB,eAAe,EAAE,mBAAmB,GACrC;;AAED,AAAA,qBAAqB,CAAC,EACpB,eAAe,EAAE,wBAAwB,GAC1C;;AAED,AAAA,oBAAoB,CAAC,EACnB,eAAe,EAAE,uBAAuB,GACzC;;AAID,AAAA,iBAAiB,CAAC,EAChB,cAAc,EAAE,mBAAmB,GACpC;;AACD,AAAA,eAAe,CAAC,EACd,cAAc,EAAE,iBAAiB,GAClC;;AACD,AAAA,eAAe,CAAC,EACd,cAAc,EAAE,iBAAiB,GAClC;;AACD,AAAA,oBAAoB,CAAC,EACnB,cAAc,EAAE,sBAAsB,GACvC;;AACD,AAAA,iBAAiB,CAAC,EAChB,cAAc,EAAE,mBAAmB,GACpC;;AACD,AAAA,YAAY,CAAC,EACX,cAAc,EAAE,cAAc,GAC/B;;ACxFD,AAAA,KAAK,CAAC,EjBLJ,SAAS,ELgBG,GAAG,CKhBS,UAAU,GiBOnC;;AnBMG,MAAM,sBmBRV,GAAA,AAAA,KAAK,CAAC,EjBFF,SAAS,ELcI,IAAI,CKdU,UAAU,GiBIxC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBDJ,SAAS,ELUG,IAAI,CKVQ,UAAU,GiBGnC;;AnBEG,MAAM,sBmBJV,GAAA,AAAA,KAAK,CAAC,EjBEF,SAAS,ELQC,IAAI,CKRU,UAAU,GiBArC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBGJ,SAAS,ELGG,IAAI,CKHQ,UAAU,GiBDnC;;AnBFG,MAAM,sBmBAV,GAAA,AAAA,KAAK,CAAC,EjBMF,SAAS,ELCC,IAAI,CKDU,UAAU,GiBJrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBOJ,SAAS,ELJG,IAAI,CKIQ,UAAU,GiBLnC;;AnBNG,MAAM,sBmBIV,GAAA,AAAA,KAAK,CAAC,EjBUF,SAAS,ELNC,IAAI,CKMU,UAAU,GiBRrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBWJ,SAAS,ELXG,IAAI,CKWQ,UAAU,GiBTnC;;AnBVG,MAAM,sBmBQV,GAAA,AAAA,KAAK,CAAC,EjBcF,SAAS,ELbC,IAAI,CKaU,UAAU,GiBZrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBeJ,SAAS,ELlBG,IAAI,CKkBQ,UAAU,GiBbnC;;AnBdG,MAAM,sBmBYV,GAAA,AAAA,KAAK,CAAC,EjBkBF,SAAS,ELpBC,IAAI,CKoBU,UAAU,EAClC,WAAW,ELnCY,IAAI,GsBkB9B,EAAA;;AAED,AAAA,KAAK,CAAC,EjBoBJ,SAAS,EL1BG,IAAI,CK0BQ,UAAU,EAClC,WAAW,ELzCc,IAAI,GsBsB9B;;AnBlBG,MAAM,sBmBgBV,GAAA,AAAA,KAAK,CAAC,EjBwBF,SAAS,EL7BC,IAAI,CK6BU,UAAU,GiBtBrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjByBJ,SAAS,ELlCG,IAAI,CKkCQ,UAAU,EAClC,WAAW,ELlDc,IAAI,GsB0B9B;;AnBtBG,MAAM,sBmBoBV,GAAA,AAAA,KAAK,CAAC,EjB6BF,SAAS,ELrCC,IAAI,CKqCU,UAAU,GiB3BrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjB8BJ,SAAS,EL1CG,IAAI,CK0CQ,UAAU,EAClC,WAAW,EL3Dc,IAAI,GsB8B9B;;AnB1BG,MAAM,sBmBwBV,GAAA,AAAA,KAAK,CAAC,EjBkCF,SAAS,EL7CE,IAAI,CK6CU,UAAU,GiBhCtC,EAAA;;AAED,AAAA,MAAM,CAAC,EjBmCL,SAAS,ELlDI,IAAI,CKkDQ,UAAU,EACnC,WAAW,ELpEc,IAAI,GsBkC9B;;AnB9BG,MAAM,sBmB4BV,GAAA,AAAA,MAAM,CAAC,EjBuCH,SAAS,ELrDK,IAAI,CKqDU,UAAU,GiBrCzC,EAAA;;AAED,AAAA,OAAO,CAAC,EACN,WAAW,EAAE,cAAc,GAC5B;;AAED,AAAA,OAAO,CAAC,EACN,WAAW,EAAE,cAAc,GAC5B;;AAED,AAAA,OAAO,CAAC,EACN,WAAW,EAAE,cAAc,GAC5B;;AAED,AAAA,OAAO,CAAC,EACN,WAAW,EAAE,cAAc,GAC5B;;AAED,AAAA,KAAK,CAAC,EACJ,WAAW,EAAE,YAAY,GAC1B;;AAED,AAAA,WAAW,CAAC,EACV,WAAW,EtB3DM,GAAG,GsB4DrB;;AAED,AAAA,SAAS,CAAC,EACR,WAAW,EtB7Dc,IAAI,GsB8D9B;;AAED,AAAA,KAAK,CAAC,EACJ,cAAc,EAAE,iBAAiB,GAClC;;AAED,AAAA,MAAM,CAAC,EACL,cAAc,EAAE,gBAAgB,GACjC;;AAED,AAAA,KAAK,CAAC,EACJ,cAAc,EAAE,YAAY,GAC7B;;AAED,AAAA,eAAe,CAAC,EACd,cAAc,EAAE,oBAAoB,GACrC;;AClFD,AAAA,gBAAgB,CAAC,EACf,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,eAAe,GAO5B;;AAVD,AAMI,gBANY,CAKd,EAAE,EACG,MAAM,CAAC,EACR,OAAO,EAAE,eAAe,GACzB;;ACLL,AAAA,QAAQ,CAAC,EACP,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AAZD,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,KAnBG,CAmBK,EACN,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,MAtBI,CAsBI,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,MAzBI,CAyBI,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,MA5BI,CA4BI,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,MA/BI,CA+BI,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,MAnCI,CAmCI,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,MAxCI,CAwCI,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,OA7CK,CA6CG,EACN,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,WAjDS,CAiDI,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;ArBtCC,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;AAhEP,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,KAvGG,CAuGK,EACN,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,MA1GI,CA0GI,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,MA7GI,CA6GI,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,MAhHI,CAgHI,EACN,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,MAnHI,CAmHI,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,MAvHI,CAuHI,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,MA5HI,CA4HI,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;ArBjHC,MAAM,mBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ArB7HH,MAAM,sBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ArB7HH,MAAM,mBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ArB7HH,MAAM,qBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ArB7HH,MAAM,qBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ACzIP,MAAM,MACJ,GAAA,AAAA,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,SAAS,EACT,YAAY,CAAC,EACX,OAAO,EAAE,eAAe,GACzB,CAED,AAAA,SAAS,CAAC,EACR,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,YAAY,EAAE,YAAY,GAC3B,CAED,AAAA,YAAY,CAAC,EACX,aAAa,EAAE,GAAG,CAAC,KAAK,CnBMb,qBAAqB,GmBLjC,CAED,AAAA,WAAW,CAAC,EACV,SAAS,EzBhBI,IAAI,CyBgBU,UAAU,EACrC,WAAW,EAAE,cAAc,GAC5B,CAED,AAAA,WAAW,CAAC,EACV,SAAS,EAAE,cAAc,GAC1B,CAED,AAAA,GAAG,AAAA,UAAU,CAAC,EACZ,MAAM,EAAE,GAAG,CAAC,KAAK,CnBPN,qBAAqB,GmBQjC,CAED,AAAA,KAAK,CAAC,EACJ,SAAS,EAAE,IAAI,EACf,WAAW,EAAE,CAAC,GACf,EA5BA;;ACVH,+CAA+C;ACA/C,yKAIE;AAGF,AAAA,UAAU,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAC9C,AAAA,UAAU,CAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAC/E,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,aAAa;AACzE,AAAA,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,WAAW;AACzE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,aAAa;AACzE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,aAAa;AAC5F,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,aAAa;AACzE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,UAAU;AACtE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,cAAc;AAC1E,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,WAAW;AACvE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,iBAAiB;AAC7E,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,uBAAuB;AACpF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AACrG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AAClF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AAClF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,kBAAkB;AAC3G,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AAClF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,sBAAsB;AACnF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,wBAAwB;AACrF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,uBAAuB;AACpF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,sBAAsB;AACtG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,yBAAyB;AACzG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,uBAAuB;AACvG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACpG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,sBAAsB;AACtG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,kBAAkB;AAClG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,kBAAkB;AAC/E,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AAChF,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACpG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,kBAAkB;AAC/E,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,gBAAgB;AAC7E,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,iBAAiB;AACjG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AACnG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,gBAAgB;AAChG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,gBAAgB;AAC7E,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,cAAc;AAC9F,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,0BAA0B;AACvF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,wBAAwB;AACrF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,4BAA4B;AACzF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,wBAAwB;AACrF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,6BAA6B;AAC1F,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,yBAAyB;AACtF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,wBAAwB;AACrF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,2BAA2B;AACxF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,2BAA2B;AACxF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,4BAA4B;AACzF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,6BAA6B;AAC1F,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,0BAA0B;AACvF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,0BAA0B;AACvF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,2BAA2B;AACxF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,2BAA2B;AACxF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,yBAAyB;AACtF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,yBAAyB;AACtF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,0BAA0B;AACvF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,4BAA4B;AACzF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,iCAAiC;ArB5E9F,4KAKE;AoBIF,AAAA,IAAI,CAAC,EACH,WAAW,EAAE,sEAAsE,EACnF,KAAK,EpBKgB,OAAO,GoBJ7B;;AAED,AAAA,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,WAAW,CAAC,EACV,WAAW,EAAE,6BAA6B,EAC1C,KAAK,EpBJgB,OAAO,EoBK5B,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,MAAM,GACvB;;AAED,AACE,aADW,CACX,EAAE,CAAC,EACD,SAAS,EAAE,IAAI,CAAA,UAAU,EACzB,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,IAAI,EACpB,aAAa,EAAE,IAAI,GACpB;;AAwBH,AAAA,GAAG,CAAC,EACF,WAAW,EAAE,QAAQ,GACtB;;AAED,AAAA,IAAI,CAAC,EACH,OAAO,EAAE,OAAO,GACjB;;AAGD,AAAA,SAAS,CAAC,cAAc,GAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,EAC/D,KAAK,EAAE,OAAO,GACf;;AAGD,AACE,cADY,CACZ,KAAK,CAAC,EACJ,eAAe,EAAE,QAAQ,GAa1B;;AAfH,AAII,cAJU,CACZ,KAAK,CAGH,KAAK,CAAC,EACJ,UAAU,EAAE,IAAI,GAIjB;;AATL,AAMM,cANQ,CACZ,KAAK,CAGH,KAAK,CAEH,EAAE,CAAC,EACD,UAAU,EpB9DE,OAAO,GoB+DpB;;AARP,AAWI,cAXU,CACZ,KAAK,CAUH,EAAE,CAAC,EACD,mBAAmB,EpBxDV,qBAAqB,GoByD/B;;AAKL,AAAA,gBAAgB,CAAC,EACf,KAAK,EpB3EU,OAAO,EoB4EtB,UAAU,EAAE,MAAM,GACnB;;AAGD,MAAM,MACJ,GAAA,AAAA,SAAS,EACT,YAAY,CAAC,EACX,OAAO,EAAE,IAAI,GACd,CACD,AAAA,aAAa,CAAC,EACZ,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,GAAG,GACZ,EAJA" +} \ No newline at end of file diff --git a/assets/css/just-the-docs-light.css b/assets/css/just-the-docs-light.css new file mode 100644 index 0000000..9678b60 --- /dev/null +++ b/assets/css/just-the-docs-light.css @@ -0,0 +1,1779 @@ +@charset "UTF-8"; +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document ========================================================================== */ +/** 1. Correct the line height in all browsers. 2. Prevent adjustments of font size after orientation changes in iOS. */ +@import url("https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400&family=Sen:wght@400;700;800"); +html { line-height: 1.15; /* 1 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/* Sections ========================================================================== */ +/** Remove the margin in all browsers. */ +body { margin: 0; } + +/** Render the `main` element consistently in IE. */ +main { display: block; } + +/** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/* Grouping content ========================================================================== */ +/** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ +hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +pre { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/* Text-level semantics ========================================================================== */ +/** Remove the gray background on active links in IE 10. */ +a { background-color: transparent; } + +/** 1. Remove the bottom border in Chrome 57- 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ +abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } + +/** Add the correct font weight in Chrome, Edge, and Safari. */ +b, strong { font-weight: bolder; } + +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +code, kbd, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/** Add the correct font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sub { bottom: -0.25em; } + +sup { top: -0.5em; } + +/* Embedded content ========================================================================== */ +/** Remove the border on images inside links in IE 10. */ +img { border-style: none; } + +/* Forms ========================================================================== */ +/** 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. */ +button, input, optgroup, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ line-height: 1.15; /* 1 */ margin: 0; /* 2 */ } + +/** Show the overflow in IE. 1. Show the overflow in Edge. */ +button, input { /* 1 */ overflow: visible; } + +/** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ +button, select { /* 1 */ text-transform: none; } + +/** Correct the inability to style clickable types in iOS and Safari. */ +button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } + +/** Remove the inner border and padding in Firefox. */ +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +/** Restore the focus styles unset by the previous rule. */ +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +/** Correct the padding in Firefox. */ +fieldset { padding: 0.35em 0.75em 0.625em; } + +/** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ +legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } + +/** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ +progress { vertical-align: baseline; } + +/** Remove the default vertical scrollbar in IE 10+. */ +textarea { overflow: auto; } + +/** 1. Add the correct box sizing in IE 10. 2. Remove the padding in IE 10. */ +[type="checkbox"], [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Correct the cursor style of increment and decrement buttons in Chrome. */ +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ +[type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } + +/** Remove the inner padding in Chrome and Safari on macOS. */ +[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ +::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } + +/* Interactive ========================================================================== */ +/* Add the correct display in Edge, IE 10+, and Firefox. */ +details { display: block; } + +/* Add the correct display in all browsers. */ +summary { display: list-item; } + +/* Misc ========================================================================== */ +/** Add the correct display in IE 10+. */ +template { display: none; } + +/** Add the correct display in IE 10. */ +[hidden] { display: none; } + +* { box-sizing: border-box; } + +::selection { color: #fff; background: #7253ed; } + +html { font-size: 14px !important; scroll-behavior: smooth; } + +@media (min-width: 31.25rem) { html { font-size: 16px !important; } } + +body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: inherit; line-height: 1.4; color: #5c5962; background-color: #fff; } + +ol, ul, dl, pre, address, blockquote, table, div, hr, form, fieldset, noscript .table-wrapper { margin-top: 0; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 1em; font-weight: 500; line-height: 1.25; color: #27262b; } + +p { margin-top: 1em; margin-bottom: 1em; } + +a { color: #7253ed; text-decoration: none; } + +a:not([class]) { text-decoration: none; background-image: linear-gradient(#eeebee 0%, #eeebee 100%); background-repeat: repeat-x; background-position: 0 100%; background-size: 1px 1px; } + +a:not([class]):hover { background-image: linear-gradient(rgba(114, 83, 237, 0.45) 0%, rgba(114, 83, 237, 0.45) 100%); background-size: 1px 1px; } + +code { font-family: "SFMono-Regular", Menlo, Consolas, Monospace; font-size: 0.75em; line-height: 1.4; } + +figure, pre { margin: 0; } + +li { margin: 0.25em 0; } + +img { max-width: 100%; height: auto; } + +hr { height: 1px; padding: 0; margin: 2rem 0; background-color: #eeebee; border: 0; } + +.side-bar { z-index: 0; display: flex; flex-wrap: wrap; background-color: #f5f6fa; } + +@media (min-width: 50rem) { .side-bar { flex-wrap: nowrap; position: fixed; width: 248px; height: 100%; flex-direction: column; border-right: 1px solid #eeebee; align-items: flex-end; } } + +@media (min-width: 66.5rem) { .side-bar { width: calc((100% - 1064px) / 2 + 264px); min-width: 264px; } } + +@media (min-width: 50rem) { .main { position: relative; max-width: 800px; margin-left: 248px; } } + +@media (min-width: 66.5rem) { .main { margin-left: calc( (100% - 1064px) / 2 + 264px); } } + +.main-content-wrap { padding-right: 1rem; padding-left: 1rem; padding-top: 1rem; padding-bottom: 1rem; } + +@media (min-width: 50rem) { .main-content-wrap { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 50rem) { .main-content-wrap { padding-top: 2rem; padding-bottom: 2rem; } } + +.main-header { z-index: 0; display: none; background-color: #f5f6fa; } + +@media (min-width: 50rem) { .main-header { display: flex; justify-content: space-between; height: 60px; background-color: #fff; border-bottom: 1px solid #eeebee; } } + +.main-header.nav-open { display: block; } + +@media (min-width: 50rem) { .main-header.nav-open { display: flex; } } + +.site-nav, .site-header, .site-footer { width: 100%; } + +@media (min-width: 66.5rem) { .site-nav, .site-header, .site-footer { width: 264px; } } + +.site-nav { display: none; } + +.site-nav.nav-open { display: block; } + +@media (min-width: 50rem) { .site-nav { display: block; padding-top: 3rem; padding-bottom: 1rem; overflow-y: auto; flex: 1 1 auto; } } + +.site-header { display: flex; min-height: 60px; align-items: center; } + +@media (min-width: 50rem) { .site-header { height: 60px; max-height: 60px; border-bottom: 1px solid #eeebee; } } + +.site-title { padding-right: 1rem; padding-left: 1rem; flex-grow: 1; display: flex; height: 100%; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; color: #27262b; font-size: 18px !important; } + +@media (min-width: 50rem) { .site-title { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-title { font-size: 24px !important; line-height: 1.25; } } + +@media (min-width: 50rem) { .site-title { padding-top: 0.5rem; padding-bottom: 0.5rem; } } + +.site-logo { width: 100%; height: 100%; background-image: url("https://alloverse.com/wp-content/uploads/Alloverse-logo-moniker-256x38-1.svg"); background-repeat: no-repeat; background-position: left center; background-size: contain; } + +.site-button { display: flex; height: 100%; padding: 1rem; align-items: center; } + +@media (min-width: 50rem) { .site-header .site-button { display: none; } } + +.site-title:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + +.site-button:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + +body { position: relative; padding-bottom: 4rem; overflow-y: scroll; } + +@media (min-width: 50rem) { body { position: static; padding-bottom: 0; } } + +.site-footer { padding-right: 1rem; padding-left: 1rem; position: absolute; bottom: 0; left: 0; padding-top: 1rem; padding-bottom: 1rem; color: #959396; font-size: 11px !important; } + +@media (min-width: 50rem) { .site-footer { padding-right: 2rem; padding-left: 2rem; } } + +@media (min-width: 31.25rem) { .site-footer { font-size: 12px !important; } } + +@media (min-width: 50rem) { .site-footer { position: static; justify-self: end; } } + +.icon { width: 1.5rem; height: 1.5rem; color: #7253ed; } + +.main-content { line-height: 1.6; } + +.main-content ol, .main-content ul, .main-content dl, .main-content pre, .main-content address, .main-content blockquote, .main-content .table-wrapper { margin-top: 0.5em; } + +.main-content a { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + +.main-content ul, .main-content ol { padding-left: 1.5em; } + +.main-content li .highlight { margin-top: 0.25rem; } + +.main-content ol { list-style-type: none; counter-reset: step-counter; } + +.main-content ol > li { position: relative; } + +.main-content ol > li::before { position: absolute; top: 0.2em; left: -1.6em; color: #959396; content: counter(step-counter); counter-increment: step-counter; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .main-content ol > li::before { font-size: 14px !important; } } + +@media (min-width: 31.25rem) { .main-content ol > li::before { top: 0.11em; } } + +.main-content ol > li ol { counter-reset: sub-counter; } + +.main-content ol > li ol li::before { content: counter(sub-counter, lower-alpha); counter-increment: sub-counter; } + +.main-content ul { list-style: none; } + +.main-content ul > li::before { position: absolute; margin-left: -1.4em; color: #959396; content: "•"; } + +.main-content .task-list { padding-left: 0; } + +.main-content .task-list-item { display: flex; align-items: center; } + +.main-content .task-list-item::before { content: ""; } + +.main-content .task-list-item-checkbox { margin-right: 0.6em; } + +.main-content hr + * { margin-top: 0; } + +.main-content h1:first-of-type { margin-top: 0.5em; } + +.main-content dl { display: grid; grid-template: auto / 10em 1fr; } + +.main-content dt, .main-content dd { margin: 0.25em 0; } + +.main-content dt { grid-column: 1; font-weight: 500; text-align: right; } + +.main-content dt::after { content: ":"; } + +.main-content dd { grid-column: 2; margin-bottom: 0; margin-left: 1em; } + +.main-content dd blockquote:first-child, .main-content dd div:first-child, .main-content dd dl:first-child, .main-content dd dt:first-child, .main-content dd h1:first-child, .main-content dd h2:first-child, .main-content dd h3:first-child, .main-content dd h4:first-child, .main-content dd h5:first-child, .main-content dd h6:first-child, .main-content dd li:first-child, .main-content dd ol:first-child, .main-content dd p:first-child, .main-content dd pre:first-child, .main-content dd table:first-child, .main-content dd ul:first-child, .main-content dd .table-wrapper:first-child { margin-top: 0; } + +.main-content dd dl:first-child dt:first-child, .main-content dd dl:first-child dd:nth-child(2), .main-content ol dl:first-child dt:first-child, .main-content ol dl:first-child dd:nth-child(2), .main-content ul dl:first-child dt:first-child, .main-content ul dl:first-child dd:nth-child(2) { margin-top: 0; } + +.main-content .anchor-heading { position: absolute; right: -1rem; width: 1.5rem; height: 100%; padding-right: 0.25rem; padding-left: 0.25rem; overflow: visible; } + +@media (min-width: 50rem) { .main-content .anchor-heading { right: auto; left: -1.5rem; } } + +.main-content .anchor-heading svg { display: inline-block; width: 100%; height: 100%; color: #7253ed; visibility: hidden; } + +.main-content .anchor-heading:hover svg, .main-content h1:hover > .anchor-heading svg, .main-content h2:hover > .anchor-heading svg, .main-content h3:hover > .anchor-heading svg, .main-content h4:hover > .anchor-heading svg, .main-content h5:hover > .anchor-heading svg, .main-content h6:hover > .anchor-heading svg { visibility: visible; } + +.main-content summary { cursor: pointer; } + +.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 { position: relative; margin-top: 1.5em; margin-bottom: 0.25em; } + +.main-content h1:first-child, .main-content h2:first-child, .main-content h3:first-child, .main-content h4:first-child, .main-content h5:first-child, .main-content h6:first-child { margin-top: 0.5rem; } + +.main-content h1 + table, .main-content h1 + .table-wrapper, .main-content h1 + .code-example, .main-content h1 + .highlighter-rouge, .main-content h2 + table, .main-content h2 + .table-wrapper, .main-content h2 + .code-example, .main-content h2 + .highlighter-rouge, .main-content h3 + table, .main-content h3 + .table-wrapper, .main-content h3 + .code-example, .main-content h3 + .highlighter-rouge, .main-content h4 + table, .main-content h4 + .table-wrapper, .main-content h4 + .code-example, .main-content h4 + .highlighter-rouge, .main-content h5 + table, .main-content h5 + .table-wrapper, .main-content h5 + .code-example, .main-content h5 + .highlighter-rouge, .main-content h6 + table, .main-content h6 + .table-wrapper, .main-content h6 + .code-example, .main-content h6 + .highlighter-rouge { margin-top: 1em; } + +.main-content h1 + p, .main-content h2 + p, .main-content h3 + p, .main-content h4 + p, .main-content h5 + p, .main-content h6 + p { margin-top: 0; } + +.nav-list { padding: 0; margin-top: 0; margin-bottom: 0; list-style: none; } + +.nav-list .nav-list-item { font-size: 14px !important; position: relative; margin: 0; } + +@media (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 16px !important; } } + +@media (min-width: 50rem) { .nav-list .nav-list-item { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 14px !important; } } + +.nav-list .nav-list-item .nav-list-link { display: block; min-height: 3rem; padding-top: 0.25rem; padding-bottom: 0.25rem; line-height: 2.5rem; padding-right: 3rem; padding-left: 1rem; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-link { min-height: 2rem; line-height: 1.5rem; padding-right: 2rem; padding-left: 2rem; } } + +.nav-list .nav-list-item .nav-list-link.active { font-weight: 600; text-decoration: none; } + +.nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } + +.nav-list .nav-list-item .nav-list-expander { position: absolute; right: 0; width: 3rem; height: 3rem; padding-top: 0.75rem; padding-right: 0.75rem; padding-bottom: 0.75rem; padding-left: 0.75rem; color: #7253ed; } + +@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-expander { width: 2rem; height: 2rem; padding-top: 0.5rem; padding-right: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.5rem; } } + +.nav-list .nav-list-item .nav-list-expander:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } + +.nav-list .nav-list-item .nav-list-expander svg { transform: rotate(90deg); } + +.nav-list .nav-list-item > .nav-list { display: none; padding-left: 0.75rem; list-style: none; } + +.nav-list .nav-list-item > .nav-list .nav-list-item { position: relative; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #5c5962; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { color: #5c5962; } + +.nav-list .nav-list-item.active > .nav-list-expander svg { transform: rotate(-90deg); } + +.nav-list .nav-list-item.active > .nav-list { display: block; } + +.nav-category { padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 1rem; font-weight: 600; text-align: end; text-transform: uppercase; border-bottom: 1px solid #eeebee; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .nav-category { font-size: 12px !important; } } + +@media (min-width: 50rem) { .nav-category { padding-right: 2rem; padding-left: 2rem; margin-top: 1rem; text-align: start; } .nav-category:first-child { margin-top: 0; } } + +.aux-nav { height: 100%; overflow-x: auto; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .aux-nav { font-size: 12px !important; } } + +.aux-nav .aux-nav-list { display: flex; height: 100%; padding: 0; margin: 0; list-style: none; } + +.aux-nav .aux-nav-list-item { display: inline-block; height: 100%; padding: 0; margin: 0; } + +@media (min-width: 50rem) { .aux-nav { padding-right: 1rem; } } + +@media (min-width: 50rem) { .breadcrumb-nav { margin-top: -1rem; } } + +.breadcrumb-nav-list { padding-left: 0; margin-bottom: 0.75rem; list-style: none; } + +.breadcrumb-nav-list-item { display: table-cell; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .breadcrumb-nav-list-item { font-size: 12px !important; } } + +.breadcrumb-nav-list-item::before { display: none; } + +.breadcrumb-nav-list-item::after { display: inline-block; margin-right: 0.5rem; margin-left: 0.5rem; color: #959396; content: "/"; } + +.breadcrumb-nav-list-item:last-child::after { content: ""; } + +h1, .text-alpha { font-size: 32px !important; line-height: 1.25; font-weight: 300; } + +@media (min-width: 31.25rem) { h1, .text-alpha { font-size: 36px !important; } } + +h2, .text-beta { font-size: 18px !important; } + +@media (min-width: 31.25rem) { h2, .text-beta { font-size: 24px !important; line-height: 1.25; } } + +h3, .text-gamma { font-size: 16px !important; } + +@media (min-width: 31.25rem) { h3, .text-gamma { font-size: 18px !important; } } + +h4, .text-delta { font-size: 11px !important; font-weight: 400; text-transform: uppercase; letter-spacing: 0.1em; } + +@media (min-width: 31.25rem) { h4, .text-delta { font-size: 12px !important; } } + +h4 code { text-transform: none; } + +h5, .text-epsilon { font-size: 12px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h5, .text-epsilon { font-size: 14px !important; } } + +h6, .text-zeta { font-size: 11px !important; color: #44434d; } + +@media (min-width: 31.25rem) { h6, .text-zeta { font-size: 12px !important; } } + +.text-small { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .text-small { font-size: 12px !important; } } + +.text-mono { font-family: "SFMono-Regular", Menlo, Consolas, Monospace !important; } + +.text-left { text-align: left !important; } + +.text-center { text-align: center !important; } + +.text-right { text-align: right !important; } + +.label, .label-blue { display: inline-block; padding-top: 0.16em; padding-right: 0.56em; padding-bottom: 0.16em; padding-left: 0.56em; margin-right: 0.5rem; margin-left: 0.5rem; color: #fff; text-transform: uppercase; vertical-align: middle; background-color: #2869e6; font-size: 11px !important; border-radius: 12px; } + +@media (min-width: 31.25rem) { .label, .label-blue { font-size: 12px !important; } } + +.label-green { background-color: #009c7b; } + +.label-purple { background-color: #5e41d0; } + +.label-red { background-color: #e94c4c; } + +.label-yellow { color: #44434d; background-color: #f7d12e; } + +.btn { display: inline-block; box-sizing: border-box; padding-top: 0.3em; padding-right: 1em; padding-bottom: 0.3em; padding-left: 1em; margin: 0; font-family: inherit; font-size: inherit; font-weight: 500; line-height: 1.5; color: #7253ed; text-decoration: none; vertical-align: baseline; cursor: pointer; background-color: #f7f7f7; border-width: 0; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); appearance: none; } + +.btn:focus { text-decoration: none; outline: none; box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:focus:hover, .btn.selected:focus { box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn:hover, .btn.zeroclipboard-is-hover { color: #6a4aec; } + +.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: #f4f4f4; } + +.btn:active, .btn.selected, .btn.zeroclipboard-is-active { background-color: #efefef; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn.selected:hover { background-color: #cfcfcf; } + +.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; box-shadow: none; } + +.btn-outline { color: #7253ed; background: transparent; box-shadow: inset 0 0 0 2px #e6e1e8; } + +.btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { color: #6341eb; text-decoration: none; background-color: transparent; box-shadow: inset 0 0 0 3px #e6e1e8; } + +.btn-outline:focus { text-decoration: none; outline: none; box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } + +.btn-outline:focus:hover, .btn-outline.selected:focus { box-shadow: inset 0 0 0 2px #5c5962; } + +.btn-primary { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-primary:hover, .btn-primary.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-primary.selected:hover { background-color: #472cb2; } + +.btn-purple { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-purple:hover, .btn-purple.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } + +.btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-purple.selected:hover { background-color: #472cb2; } + +.btn-blue { color: #fff; background-color: #227efa; background-image: linear-gradient(#4593fb, #227efa); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-blue:hover, .btn-blue.zeroclipboard-is-hover { color: #fff; background-color: #1878fa; background-image: linear-gradient(#368afa, #1878fa); } + +.btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { background-color: #1375f9; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-blue.selected:hover { background-color: #0669ed; } + +.btn-green { color: #fff; background-color: #10ac7d; background-image: linear-gradient(#13cc95, #10ac7d); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } + +.btn-green:hover, .btn-green.zeroclipboard-is-hover { color: #fff; background-color: #0fa276; background-image: linear-gradient(#12be8b, #0fa276); } + +.btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { background-color: #0f9e73; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } + +.btn-green.selected:hover { background-color: #0d8662; } + +.search { position: relative; z-index: 2; flex-grow: 1; height: 4rem; padding: 0.5rem; transition: padding linear 200ms; } + +@media (min-width: 50rem) { .search { position: relative !important; width: auto !important; height: 100% !important; padding: 0; transition: none; } } + +.search-input-wrap { position: relative; z-index: 1; height: 3rem; overflow: hidden; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); transition: height linear 200ms; } + +@media (min-width: 50rem) { .search-input-wrap { position: absolute; width: 100%; max-width: 536px; height: 100% !important; border-radius: 0; box-shadow: none; transition: width ease 400ms; } } + +.search-input { position: absolute; width: 100%; height: 100%; padding-top: 0.5rem; padding-right: 1rem; padding-bottom: 0.5rem; padding-left: 2.5rem; font-size: 16px; background-color: #fff; border-top: 0; border-right: 0; border-bottom: 0; border-left: 0; border-radius: 0; } + +@media (min-width: 50rem) { .search-input { padding-top: 1rem; padding-bottom: 1rem; padding-left: 3.5rem; font-size: 14px; background-color: #fff; transition: padding-left linear 200ms; } } + +.search-input:focus { outline: 0; } + +.search-input:focus + .search-label .search-icon { color: #7253ed; } + +.search-label { position: absolute; display: flex; height: 100%; padding-left: 1rem; } + +@media (min-width: 50rem) { .search-label { padding-left: 2rem; transition: padding-left linear 200ms; } } + +.search-label .search-icon { width: 1.2rem; height: 1.2rem; align-self: center; color: #959396; } + +.search-results { position: absolute; left: 0; display: none; width: 100%; max-height: calc(100% - 4rem); overflow-y: auto; background-color: #fff; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +@media (min-width: 50rem) { .search-results { top: 100%; width: 536px; max-height: calc(100vh - 200%) !important; } } + +.search-results-list { padding-left: 0; margin-bottom: 0.25rem; list-style: none; font-size: 14px !important; } + +@media (min-width: 31.25rem) { .search-results-list { font-size: 16px !important; } } + +@media (min-width: 50rem) { .search-results-list { font-size: 12px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-results-list { font-size: 14px !important; } } + +.search-results-list-item { padding: 0; margin: 0; } + +.search-result { display: block; padding-top: 0.25rem; padding-right: 0.75rem; padding-bottom: 0.25rem; padding-left: 0.75rem; } + +.search-result:hover, .search-result.active { background-color: #ebedf5; } + +.search-result-title { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; } + +@media (min-width: 31.25rem) { .search-result-title { display: inline-block; width: 40%; padding-right: 0.5rem; vertical-align: top; } } + +.search-result-doc { display: flex; align-items: center; word-wrap: break-word; } + +.search-result-doc.search-result-doc-parent { opacity: 0.5; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 14px !important; } } + +@media (min-width: 50rem) { .search-result-doc.search-result-doc-parent { font-size: 11px !important; } } + +@media (min-width: 50rem) and (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 12px !important; } } + +.search-result-doc .search-result-icon { width: 1rem; height: 1rem; margin-right: 0.5rem; color: #7253ed; flex-shrink: 0; } + +.search-result-doc .search-result-doc-title { overflow: auto; } + +.search-result-section { margin-left: 1.5rem; word-wrap: break-word; } + +.search-result-rel-url { display: block; margin-left: 1.5rem; overflow: hidden; color: #959396; text-overflow: ellipsis; white-space: nowrap; font-size: 9px !important; } + +@media (min-width: 31.25rem) { .search-result-rel-url { font-size: 10px !important; } } + +.search-result-previews { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; margin-left: 0.5rem; color: #959396; word-wrap: break-word; border-left: 1px solid; border-left-color: #eeebee; font-size: 11px !important; } + +@media (min-width: 31.25rem) { .search-result-previews { font-size: 12px !important; } } + +@media (min-width: 31.25rem) { .search-result-previews { display: inline-block; width: 60%; padding-left: 0.5rem; margin-left: 0; vertical-align: top; } } + +.search-result-preview + .search-result-preview { margin-top: 0.25rem; } + +.search-result-highlight { font-weight: bold; } + +.search-no-result { padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 12px !important; } + +@media (min-width: 31.25rem) { .search-no-result { font-size: 14px !important; } } + +.search-button { position: fixed; right: 1rem; bottom: 1rem; display: flex; width: 3.5rem; height: 3.5rem; background-color: #fff; border: 1px solid rgba(114, 83, 237, 0.3); border-radius: 1.75rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); align-items: center; justify-content: center; } + +.search-overlay { position: fixed; top: 0; left: 0; z-index: 1; width: 0; height: 0; background-color: rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } + +.search-active .search { position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 0; } + +.search-active .search-input-wrap { height: 4rem; border-radius: 0; } + +@media (min-width: 50rem) { .search-active .search-input-wrap { width: 536px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } + +.search-active .search-input { background-color: #fff; } + +@media (min-width: 50rem) { .search-active .search-input { padding-left: 2.3rem; } } + +@media (min-width: 50rem) { .search-active .search-label { padding-left: 0.6rem; } } + +.search-active .search-results { display: block; } + +.search-active .search-overlay { width: 100%; height: 100%; opacity: 1; transition: opacity ease 400ms, width 0s, height 0s; } + +@media (min-width: 50rem) { .search-active .main { position: fixed; right: 0; left: 0; } } + +.search-active .main-header { padding-top: 4rem; } + +@media (min-width: 50rem) { .search-active .main-header { padding-top: 0; } } + +.table-wrapper { display: block; width: 100%; max-width: 100%; margin-bottom: 1.5rem; overflow-x: auto; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } + +table { display: table; min-width: 100%; border-collapse: separate; } + +th, td { font-size: 12px !important; min-width: 120px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; background-color: #fff; border-bottom: 1px solid rgba(238, 235, 238, 0.5); border-left: 1px solid #eeebee; } + +@media (min-width: 31.25rem) { th, td { font-size: 14px !important; } } + +th:first-of-type, td:first-of-type { border-left: 0; } + +tbody tr:last-of-type th, tbody tr:last-of-type td { border-bottom: 0; } + +tbody tr:last-of-type td { padding-bottom: 0.75rem; } + +thead th { border-bottom: 1px solid #eeebee; } + +code { padding: 0.2em 0.15em; font-weight: 400; background-color: #f5f6fa; border: 1px solid #eeebee; border-radius: 4px; } + +a:visited code { border-color: #eeebee; } + +div.highlighter-rouge { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; overflow-x: auto; background-color: #f5f6fa; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +div.highlighter-rouge div.highlight, div.highlighter-rouge pre.highlight, div.highlighter-rouge code { padding: 0; margin: 0; border: 0; } + +figure.highlight { padding: 0.75rem; margin-top: 0; margin-bottom: 0.75rem; background-color: #f5f6fa; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; } + +figure.highlight pre, figure.highlight code { padding: 0; margin: 0; border: 0; } + +.highlight .table-wrapper { padding: 0; margin: 0; border: 0; box-shadow: none; } + +.highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 11px !important; min-width: 0; padding: 0; background-color: #f5f6fa; border: 0; } + +@media (min-width: 31.25rem) { .highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 12px !important; } } + +.highlight .table-wrapper td.gl { padding-right: 0.75rem; } + +.highlight .table-wrapper pre { margin: 0; line-height: 2; } + +.highlight .c { color: #586e75; } + +.highlight .err { color: #93a1a1; } + +.highlight .g { color: #93a1a1; } + +.highlight .k { color: #859900; } + +.highlight .l { color: #93a1a1; } + +.highlight .n { color: #93a1a1; } + +.highlight .o { color: #859900; } + +.highlight .x { color: #cb4b16; } + +.highlight .p { color: #93a1a1; } + +.highlight .cm { color: #586e75; } + +.highlight .cp { color: #859900; } + +.highlight .c1 { color: #586e75; } + +.highlight .cs { color: #859900; } + +.highlight .gd { color: #2aa198; } + +.highlight .ge { font-style: italic; color: #93a1a1; } + +.highlight .gr { color: #dc322f; } + +.highlight .gh { color: #cb4b16; } + +.highlight .gi { color: #859900; } + +.highlight .go { color: #93a1a1; } + +.highlight .gp { color: #93a1a1; } + +.highlight .gs { font-weight: bold; color: #93a1a1; } + +.highlight .gu { color: #cb4b16; } + +.highlight .gt { color: #93a1a1; } + +.highlight .kc { color: #cb4b16; } + +.highlight .kd { color: #268bd2; } + +.highlight .kn { color: #859900; } + +.highlight .kp { color: #859900; } + +.highlight .kr { color: #268bd2; } + +.highlight .kt { color: #dc322f; } + +.highlight .ld { color: #93a1a1; } + +.highlight .m { color: #2aa198; } + +.highlight .s { color: #2aa198; } + +.highlight .na { color: #555; } + +.highlight .nb { color: #b58900; } + +.highlight .nc { color: #268bd2; } + +.highlight .no { color: #cb4b16; } + +.highlight .nd { color: #268bd2; } + +.highlight .ni { color: #cb4b16; } + +.highlight .ne { color: #cb4b16; } + +.highlight .nf { color: #268bd2; } + +.highlight .nl { color: #555; } + +.highlight .nn { color: #93a1a1; } + +.highlight .nx { color: #555; } + +.highlight .py { color: #93a1a1; } + +.highlight .nt { color: #268bd2; } + +.highlight .nv { color: #268bd2; } + +.highlight .ow { color: #859900; } + +.highlight .w { color: #93a1a1; } + +.highlight .mf { color: #2aa198; } + +.highlight .mh { color: #2aa198; } + +.highlight .mi { color: #2aa198; } + +.highlight .mo { color: #2aa198; } + +.highlight .sb { color: #586e75; } + +.highlight .sc { color: #2aa198; } + +.highlight .sd { color: #93a1a1; } + +.highlight .s2 { color: #2aa198; } + +.highlight .se { color: #cb4b16; } + +.highlight .sh { color: #93a1a1; } + +.highlight .si { color: #2aa198; } + +.highlight .sx { color: #2aa198; } + +.highlight .sr { color: #dc322f; } + +.highlight .s1 { color: #2aa198; } + +.highlight .ss { color: #2aa198; } + +.highlight .bp { color: #268bd2; } + +.highlight .vc { color: #268bd2; } + +.highlight .vg { color: #268bd2; } + +.highlight .vi { color: #268bd2; } + +.highlight .il { color: #2aa198; } + +.code-example { padding: 0.75rem; margin-bottom: 0.75rem; overflow: auto; border: 1px solid #eeebee; border-radius: 4px; } + +.code-example + .highlighter-rouge, .code-example + figure.highlight { position: relative; margin-top: -1rem; border-right: 1px solid #eeebee; border-bottom: 1px solid #eeebee; border-left: 1px solid #eeebee; border-top-left-radius: 0; border-top-right-radius: 0; } + +.text-grey-dk-000 { color: #959396 !important; } + +.text-grey-dk-100 { color: #5c5962 !important; } + +.text-grey-dk-200 { color: #44434d !important; } + +.text-grey-dk-250 { color: #302d36 !important; } + +.text-grey-dk-300 { color: #27262b !important; } + +.text-grey-lt-000 { color: #f5f6fa !important; } + +.text-grey-lt-100 { color: #eeebee !important; } + +.text-grey-lt-200 { color: #ecebed !important; } + +.text-grey-lt-300 { color: #e6e1e8 !important; } + +.text-blue-000 { color: #2c84fa !important; } + +.text-blue-100 { color: #2869e6 !important; } + +.text-blue-200 { color: #264caf !important; } + +.text-blue-300 { color: #183385 !important; } + +.text-green-000 { color: #41d693 !important; } + +.text-green-100 { color: #11b584 !important; } + +.text-green-200 { color: #009c7b !important; } + +.text-green-300 { color: #026e57 !important; } + +.text-purple-000 { color: #7253ed !important; } + +.text-purple-100 { color: #5e41d0 !important; } + +.text-purple-200 { color: #4e26af !important; } + +.text-purple-300 { color: #381885 !important; } + +.text-yellow-000 { color: #ffeb82 !important; } + +.text-yellow-100 { color: #fadf50 !important; } + +.text-yellow-200 { color: #f7d12e !important; } + +.text-yellow-300 { color: #e7af06 !important; } + +.text-red-000 { color: #f77e7e !important; } + +.text-red-100 { color: #f96e65 !important; } + +.text-red-200 { color: #e94c4c !important; } + +.text-red-300 { color: #dd2e2e !important; } + +.bg-grey-dk-000 { background-color: #959396 !important; } + +.bg-grey-dk-100 { background-color: #5c5962 !important; } + +.bg-grey-dk-200 { background-color: #44434d !important; } + +.bg-grey-dk-250 { background-color: #302d36 !important; } + +.bg-grey-dk-300 { background-color: #27262b !important; } + +.bg-grey-lt-000 { background-color: #f5f6fa !important; } + +.bg-grey-lt-100 { background-color: #eeebee !important; } + +.bg-grey-lt-200 { background-color: #ecebed !important; } + +.bg-grey-lt-300 { background-color: #e6e1e8 !important; } + +.bg-blue-000 { background-color: #2c84fa !important; } + +.bg-blue-100 { background-color: #2869e6 !important; } + +.bg-blue-200 { background-color: #264caf !important; } + +.bg-blue-300 { background-color: #183385 !important; } + +.bg-green-000 { background-color: #41d693 !important; } + +.bg-green-100 { background-color: #11b584 !important; } + +.bg-green-200 { background-color: #009c7b !important; } + +.bg-green-300 { background-color: #026e57 !important; } + +.bg-purple-000 { background-color: #7253ed !important; } + +.bg-purple-100 { background-color: #5e41d0 !important; } + +.bg-purple-200 { background-color: #4e26af !important; } + +.bg-purple-300 { background-color: #381885 !important; } + +.bg-yellow-000 { background-color: #ffeb82 !important; } + +.bg-yellow-100 { background-color: #fadf50 !important; } + +.bg-yellow-200 { background-color: #f7d12e !important; } + +.bg-yellow-300 { background-color: #e7af06 !important; } + +.bg-red-000 { background-color: #f77e7e !important; } + +.bg-red-100 { background-color: #f96e65 !important; } + +.bg-red-200 { background-color: #e94c4c !important; } + +.bg-red-300 { background-color: #dd2e2e !important; } + +.d-block { display: block !important; } + +.d-flex { display: flex !important; } + +.d-inline { display: inline !important; } + +.d-inline-block { display: inline-block !important; } + +.d-none { display: none !important; } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } + +.float-left { float: left !important; } + +.float-right { float: right !important; } + +.flex-justify-start { justify-content: flex-start !important; } + +.flex-justify-end { justify-content: flex-end !important; } + +.flex-justify-between { justify-content: space-between !important; } + +.flex-justify-around { justify-content: space-around !important; } + +.v-align-baseline { vertical-align: baseline !important; } + +.v-align-bottom { vertical-align: bottom !important; } + +.v-align-middle { vertical-align: middle !important; } + +.v-align-text-bottom { vertical-align: text-bottom !important; } + +.v-align-text-top { vertical-align: text-top !important; } + +.v-align-top { vertical-align: top !important; } + +.fs-1 { font-size: 9px !important; } + +@media (min-width: 31.25rem) { .fs-1 { font-size: 10px !important; } } + +.fs-2 { font-size: 11px !important; } + +@media (min-width: 31.25rem) { .fs-2 { font-size: 12px !important; } } + +.fs-3 { font-size: 12px !important; } + +@media (min-width: 31.25rem) { .fs-3 { font-size: 14px !important; } } + +.fs-4 { font-size: 14px !important; } + +@media (min-width: 31.25rem) { .fs-4 { font-size: 16px !important; } } + +.fs-5 { font-size: 16px !important; } + +@media (min-width: 31.25rem) { .fs-5 { font-size: 18px !important; } } + +.fs-6 { font-size: 18px !important; } + +@media (min-width: 31.25rem) { .fs-6 { font-size: 24px !important; line-height: 1.25; } } + +.fs-7 { font-size: 24px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-7 { font-size: 32px !important; } } + +.fs-8 { font-size: 32px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-8 { font-size: 36px !important; } } + +.fs-9 { font-size: 36px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-9 { font-size: 42px !important; } } + +.fs-10 { font-size: 42px !important; line-height: 1.25; } + +@media (min-width: 31.25rem) { .fs-10 { font-size: 48px !important; } } + +.fw-300 { font-weight: 300 !important; } + +.fw-400 { font-weight: 400 !important; } + +.fw-500 { font-weight: 500 !important; } + +.fw-700 { font-weight: 700 !important; } + +.lh-0 { line-height: 0 !important; } + +.lh-default { line-height: 1.4; } + +.lh-tight { line-height: 1.25; } + +.ls-5 { letter-spacing: 0.05em !important; } + +.ls-10 { letter-spacing: 0.1em !important; } + +.ls-0 { letter-spacing: 0 !important; } + +.text-uppercase { text-transform: uppercase !important; } + +.list-style-none { padding: 0 !important; margin: 0 !important; list-style: none !important; } + +.list-style-none li::before { display: none !important; } + +.mx-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-0 { margin: 0 !important; } + +.mt-0 { margin-top: 0 !important; } + +.mr-0 { margin-right: 0 !important; } + +.mb-0 { margin-bottom: 0 !important; } + +.ml-0 { margin-left: 0 !important; } + +.mx-0 { margin-right: 0 !important; margin-left: 0 !important; } + +.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + +.mxn-0 { margin-right: -0 !important; margin-left: -0 !important; } + +.mx-0-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-1 { margin: 0.25rem !important; } + +.mt-1 { margin-top: 0.25rem !important; } + +.mr-1 { margin-right: 0.25rem !important; } + +.mb-1 { margin-bottom: 0.25rem !important; } + +.ml-1 { margin-left: 0.25rem !important; } + +.mx-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } + +.my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } + +.mxn-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } + +.mx-1-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-2 { margin: 0.5rem !important; } + +.mt-2 { margin-top: 0.5rem !important; } + +.mr-2 { margin-right: 0.5rem !important; } + +.mb-2 { margin-bottom: 0.5rem !important; } + +.ml-2 { margin-left: 0.5rem !important; } + +.mx-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } + +.my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } + +.mxn-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } + +.mx-2-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-3 { margin: 0.75rem !important; } + +.mt-3 { margin-top: 0.75rem !important; } + +.mr-3 { margin-right: 0.75rem !important; } + +.mb-3 { margin-bottom: 0.75rem !important; } + +.ml-3 { margin-left: 0.75rem !important; } + +.mx-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } + +.my-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } + +.mxn-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } + +.mx-3-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-4 { margin: 1rem !important; } + +.mt-4 { margin-top: 1rem !important; } + +.mr-4 { margin-right: 1rem !important; } + +.mb-4 { margin-bottom: 1rem !important; } + +.ml-4 { margin-left: 1rem !important; } + +.mx-4 { margin-right: 1rem !important; margin-left: 1rem !important; } + +.my-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } + +.mxn-4 { margin-right: -1rem !important; margin-left: -1rem !important; } + +.mx-4-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-5 { margin: 1.5rem !important; } + +.mt-5 { margin-top: 1.5rem !important; } + +.mr-5 { margin-right: 1.5rem !important; } + +.mb-5 { margin-bottom: 1.5rem !important; } + +.ml-5 { margin-left: 1.5rem !important; } + +.mx-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } + +.my-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } + +.mxn-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } + +.mx-5-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-6 { margin: 2rem !important; } + +.mt-6 { margin-top: 2rem !important; } + +.mr-6 { margin-right: 2rem !important; } + +.mb-6 { margin-bottom: 2rem !important; } + +.ml-6 { margin-left: 2rem !important; } + +.mx-6 { margin-right: 2rem !important; margin-left: 2rem !important; } + +.my-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } + +.mxn-6 { margin-right: -2rem !important; margin-left: -2rem !important; } + +.mx-6-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-7 { margin: 2.5rem !important; } + +.mt-7 { margin-top: 2.5rem !important; } + +.mr-7 { margin-right: 2.5rem !important; } + +.mb-7 { margin-bottom: 2.5rem !important; } + +.ml-7 { margin-left: 2.5rem !important; } + +.mx-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } + +.my-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } + +.mxn-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } + +.mx-7-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-8 { margin: 3rem !important; } + +.mt-8 { margin-top: 3rem !important; } + +.mr-8 { margin-right: 3rem !important; } + +.mb-8 { margin-bottom: 3rem !important; } + +.ml-8 { margin-left: 3rem !important; } + +.mx-8 { margin-right: 3rem !important; margin-left: 3rem !important; } + +.my-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } + +.mxn-8 { margin-right: -3rem !important; margin-left: -3rem !important; } + +.mx-8-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-9 { margin: 3.5rem !important; } + +.mt-9 { margin-top: 3.5rem !important; } + +.mr-9 { margin-right: 3.5rem !important; } + +.mb-9 { margin-bottom: 3.5rem !important; } + +.ml-9 { margin-left: 3.5rem !important; } + +.mx-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } + +.my-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } + +.mxn-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } + +.mx-9-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-10 { margin: 4rem !important; } + +.mt-10 { margin-top: 4rem !important; } + +.mr-10 { margin-right: 4rem !important; } + +.mb-10 { margin-bottom: 4rem !important; } + +.ml-10 { margin-left: 4rem !important; } + +.mx-10 { margin-right: 4rem !important; margin-left: 4rem !important; } + +.my-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } + +.mxn-10 { margin-right: -4rem !important; margin-left: -4rem !important; } + +.mx-10-auto { margin-right: auto !important; margin-left: auto !important; } + +@media (min-width: 20rem) { .m-xs-0 { margin: 0 !important; } .mt-xs-0 { margin-top: 0 !important; } .mr-xs-0 { margin-right: 0 !important; } .mb-xs-0 { margin-bottom: 0 !important; } .ml-xs-0 { margin-left: 0 !important; } .mx-xs-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xs-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xs-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 20rem) { .m-xs-1 { margin: 0.25rem !important; } .mt-xs-1 { margin-top: 0.25rem !important; } .mr-xs-1 { margin-right: 0.25rem !important; } .mb-xs-1 { margin-bottom: 0.25rem !important; } .ml-xs-1 { margin-left: 0.25rem !important; } .mx-xs-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xs-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xs-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 20rem) { .m-xs-2 { margin: 0.5rem !important; } .mt-xs-2 { margin-top: 0.5rem !important; } .mr-xs-2 { margin-right: 0.5rem !important; } .mb-xs-2 { margin-bottom: 0.5rem !important; } .ml-xs-2 { margin-left: 0.5rem !important; } .mx-xs-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xs-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xs-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-3 { margin: 0.75rem !important; } .mt-xs-3 { margin-top: 0.75rem !important; } .mr-xs-3 { margin-right: 0.75rem !important; } .mb-xs-3 { margin-bottom: 0.75rem !important; } .ml-xs-3 { margin-left: 0.75rem !important; } .mx-xs-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xs-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xs-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 20rem) { .m-xs-4 { margin: 1rem !important; } .mt-xs-4 { margin-top: 1rem !important; } .mr-xs-4 { margin-right: 1rem !important; } .mb-xs-4 { margin-bottom: 1rem !important; } .ml-xs-4 { margin-left: 1rem !important; } .mx-xs-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xs-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xs-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 20rem) { .m-xs-5 { margin: 1.5rem !important; } .mt-xs-5 { margin-top: 1.5rem !important; } .mr-xs-5 { margin-right: 1.5rem !important; } .mb-xs-5 { margin-bottom: 1.5rem !important; } .ml-xs-5 { margin-left: 1.5rem !important; } .mx-xs-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xs-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xs-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-6 { margin: 2rem !important; } .mt-xs-6 { margin-top: 2rem !important; } .mr-xs-6 { margin-right: 2rem !important; } .mb-xs-6 { margin-bottom: 2rem !important; } .ml-xs-6 { margin-left: 2rem !important; } .mx-xs-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xs-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xs-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 20rem) { .m-xs-7 { margin: 2.5rem !important; } .mt-xs-7 { margin-top: 2.5rem !important; } .mr-xs-7 { margin-right: 2.5rem !important; } .mb-xs-7 { margin-bottom: 2.5rem !important; } .ml-xs-7 { margin-left: 2.5rem !important; } .mx-xs-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xs-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xs-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-8 { margin: 3rem !important; } .mt-xs-8 { margin-top: 3rem !important; } .mr-xs-8 { margin-right: 3rem !important; } .mb-xs-8 { margin-bottom: 3rem !important; } .ml-xs-8 { margin-left: 3rem !important; } .mx-xs-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xs-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xs-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 20rem) { .m-xs-9 { margin: 3.5rem !important; } .mt-xs-9 { margin-top: 3.5rem !important; } .mr-xs-9 { margin-right: 3.5rem !important; } .mb-xs-9 { margin-bottom: 3.5rem !important; } .ml-xs-9 { margin-left: 3.5rem !important; } .mx-xs-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xs-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xs-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 20rem) { .m-xs-10 { margin: 4rem !important; } .mt-xs-10 { margin-top: 4rem !important; } .mr-xs-10 { margin-right: 4rem !important; } .mb-xs-10 { margin-bottom: 4rem !important; } .ml-xs-10 { margin-left: 4rem !important; } .mx-xs-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xs-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xs-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-0 { margin: 0 !important; } .mt-sm-0 { margin-top: 0 !important; } .mr-sm-0 { margin-right: 0 !important; } .mb-sm-0 { margin-bottom: 0 !important; } .ml-sm-0 { margin-left: 0 !important; } .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-sm-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 31.25rem) { .m-sm-1 { margin: 0.25rem !important; } .mt-sm-1 { margin-top: 0.25rem !important; } .mr-sm-1 { margin-right: 0.25rem !important; } .mb-sm-1 { margin-bottom: 0.25rem !important; } .ml-sm-1 { margin-left: 0.25rem !important; } .mx-sm-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-sm-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-sm-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-2 { margin: 0.5rem !important; } .mt-sm-2 { margin-top: 0.5rem !important; } .mr-sm-2 { margin-right: 0.5rem !important; } .mb-sm-2 { margin-bottom: 0.5rem !important; } .ml-sm-2 { margin-left: 0.5rem !important; } .mx-sm-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-sm-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-sm-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-3 { margin: 0.75rem !important; } .mt-sm-3 { margin-top: 0.75rem !important; } .mr-sm-3 { margin-right: 0.75rem !important; } .mb-sm-3 { margin-bottom: 0.75rem !important; } .ml-sm-3 { margin-left: 0.75rem !important; } .mx-sm-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-sm-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-sm-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-4 { margin: 1rem !important; } .mt-sm-4 { margin-top: 1rem !important; } .mr-sm-4 { margin-right: 1rem !important; } .mb-sm-4 { margin-bottom: 1rem !important; } .ml-sm-4 { margin-left: 1rem !important; } .mx-sm-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-sm-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-sm-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-5 { margin: 1.5rem !important; } .mt-sm-5 { margin-top: 1.5rem !important; } .mr-sm-5 { margin-right: 1.5rem !important; } .mb-sm-5 { margin-bottom: 1.5rem !important; } .ml-sm-5 { margin-left: 1.5rem !important; } .mx-sm-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-sm-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-sm-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-6 { margin: 2rem !important; } .mt-sm-6 { margin-top: 2rem !important; } .mr-sm-6 { margin-right: 2rem !important; } .mb-sm-6 { margin-bottom: 2rem !important; } .ml-sm-6 { margin-left: 2rem !important; } .mx-sm-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-sm-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-sm-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-7 { margin: 2.5rem !important; } .mt-sm-7 { margin-top: 2.5rem !important; } .mr-sm-7 { margin-right: 2.5rem !important; } .mb-sm-7 { margin-bottom: 2.5rem !important; } .ml-sm-7 { margin-left: 2.5rem !important; } .mx-sm-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-sm-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-sm-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-8 { margin: 3rem !important; } .mt-sm-8 { margin-top: 3rem !important; } .mr-sm-8 { margin-right: 3rem !important; } .mb-sm-8 { margin-bottom: 3rem !important; } .ml-sm-8 { margin-left: 3rem !important; } .mx-sm-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-sm-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-sm-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-9 { margin: 3.5rem !important; } .mt-sm-9 { margin-top: 3.5rem !important; } .mr-sm-9 { margin-right: 3.5rem !important; } .mb-sm-9 { margin-bottom: 3.5rem !important; } .ml-sm-9 { margin-left: 3.5rem !important; } .mx-sm-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-sm-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-sm-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 31.25rem) { .m-sm-10 { margin: 4rem !important; } .mt-sm-10 { margin-top: 4rem !important; } .mr-sm-10 { margin-right: 4rem !important; } .mb-sm-10 { margin-bottom: 4rem !important; } .ml-sm-10 { margin-left: 4rem !important; } .mx-sm-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-sm-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-sm-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 50rem) { .m-md-0 { margin: 0 !important; } .mt-md-0 { margin-top: 0 !important; } .mr-md-0 { margin-right: 0 !important; } .mb-md-0 { margin-bottom: 0 !important; } .ml-md-0 { margin-left: 0 !important; } .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-md-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 50rem) { .m-md-1 { margin: 0.25rem !important; } .mt-md-1 { margin-top: 0.25rem !important; } .mr-md-1 { margin-right: 0.25rem !important; } .mb-md-1 { margin-bottom: 0.25rem !important; } .ml-md-1 { margin-left: 0.25rem !important; } .mx-md-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-md-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-md-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 50rem) { .m-md-2 { margin: 0.5rem !important; } .mt-md-2 { margin-top: 0.5rem !important; } .mr-md-2 { margin-right: 0.5rem !important; } .mb-md-2 { margin-bottom: 0.5rem !important; } .ml-md-2 { margin-left: 0.5rem !important; } .mx-md-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-md-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-md-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 50rem) { .m-md-3 { margin: 0.75rem !important; } .mt-md-3 { margin-top: 0.75rem !important; } .mr-md-3 { margin-right: 0.75rem !important; } .mb-md-3 { margin-bottom: 0.75rem !important; } .ml-md-3 { margin-left: 0.75rem !important; } .mx-md-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-md-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-md-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 50rem) { .m-md-4 { margin: 1rem !important; } .mt-md-4 { margin-top: 1rem !important; } .mr-md-4 { margin-right: 1rem !important; } .mb-md-4 { margin-bottom: 1rem !important; } .ml-md-4 { margin-left: 1rem !important; } .mx-md-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-md-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-md-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 50rem) { .m-md-5 { margin: 1.5rem !important; } .mt-md-5 { margin-top: 1.5rem !important; } .mr-md-5 { margin-right: 1.5rem !important; } .mb-md-5 { margin-bottom: 1.5rem !important; } .ml-md-5 { margin-left: 1.5rem !important; } .mx-md-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-md-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-md-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 50rem) { .m-md-6 { margin: 2rem !important; } .mt-md-6 { margin-top: 2rem !important; } .mr-md-6 { margin-right: 2rem !important; } .mb-md-6 { margin-bottom: 2rem !important; } .ml-md-6 { margin-left: 2rem !important; } .mx-md-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-md-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-md-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 50rem) { .m-md-7 { margin: 2.5rem !important; } .mt-md-7 { margin-top: 2.5rem !important; } .mr-md-7 { margin-right: 2.5rem !important; } .mb-md-7 { margin-bottom: 2.5rem !important; } .ml-md-7 { margin-left: 2.5rem !important; } .mx-md-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-md-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-md-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 50rem) { .m-md-8 { margin: 3rem !important; } .mt-md-8 { margin-top: 3rem !important; } .mr-md-8 { margin-right: 3rem !important; } .mb-md-8 { margin-bottom: 3rem !important; } .ml-md-8 { margin-left: 3rem !important; } .mx-md-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-md-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-md-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 50rem) { .m-md-9 { margin: 3.5rem !important; } .mt-md-9 { margin-top: 3.5rem !important; } .mr-md-9 { margin-right: 3.5rem !important; } .mb-md-9 { margin-bottom: 3.5rem !important; } .ml-md-9 { margin-left: 3.5rem !important; } .mx-md-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-md-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-md-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 50rem) { .m-md-10 { margin: 4rem !important; } .mt-md-10 { margin-top: 4rem !important; } .mr-md-10 { margin-right: 4rem !important; } .mb-md-10 { margin-bottom: 4rem !important; } .ml-md-10 { margin-left: 4rem !important; } .mx-md-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-md-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-md-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-0 { margin: 0 !important; } .mt-lg-0 { margin-top: 0 !important; } .mr-lg-0 { margin-right: 0 !important; } .mb-lg-0 { margin-bottom: 0 !important; } .ml-lg-0 { margin-left: 0 !important; } .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-lg-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 66.5rem) { .m-lg-1 { margin: 0.25rem !important; } .mt-lg-1 { margin-top: 0.25rem !important; } .mr-lg-1 { margin-right: 0.25rem !important; } .mb-lg-1 { margin-bottom: 0.25rem !important; } .ml-lg-1 { margin-left: 0.25rem !important; } .mx-lg-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-lg-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-lg-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-2 { margin: 0.5rem !important; } .mt-lg-2 { margin-top: 0.5rem !important; } .mr-lg-2 { margin-right: 0.5rem !important; } .mb-lg-2 { margin-bottom: 0.5rem !important; } .ml-lg-2 { margin-left: 0.5rem !important; } .mx-lg-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-lg-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-lg-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-3 { margin: 0.75rem !important; } .mt-lg-3 { margin-top: 0.75rem !important; } .mr-lg-3 { margin-right: 0.75rem !important; } .mb-lg-3 { margin-bottom: 0.75rem !important; } .ml-lg-3 { margin-left: 0.75rem !important; } .mx-lg-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-lg-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-lg-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-4 { margin: 1rem !important; } .mt-lg-4 { margin-top: 1rem !important; } .mr-lg-4 { margin-right: 1rem !important; } .mb-lg-4 { margin-bottom: 1rem !important; } .ml-lg-4 { margin-left: 1rem !important; } .mx-lg-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-lg-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-lg-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-5 { margin: 1.5rem !important; } .mt-lg-5 { margin-top: 1.5rem !important; } .mr-lg-5 { margin-right: 1.5rem !important; } .mb-lg-5 { margin-bottom: 1.5rem !important; } .ml-lg-5 { margin-left: 1.5rem !important; } .mx-lg-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-lg-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-lg-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-6 { margin: 2rem !important; } .mt-lg-6 { margin-top: 2rem !important; } .mr-lg-6 { margin-right: 2rem !important; } .mb-lg-6 { margin-bottom: 2rem !important; } .ml-lg-6 { margin-left: 2rem !important; } .mx-lg-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-lg-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-lg-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-7 { margin: 2.5rem !important; } .mt-lg-7 { margin-top: 2.5rem !important; } .mr-lg-7 { margin-right: 2.5rem !important; } .mb-lg-7 { margin-bottom: 2.5rem !important; } .ml-lg-7 { margin-left: 2.5rem !important; } .mx-lg-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-lg-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-lg-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-8 { margin: 3rem !important; } .mt-lg-8 { margin-top: 3rem !important; } .mr-lg-8 { margin-right: 3rem !important; } .mb-lg-8 { margin-bottom: 3rem !important; } .ml-lg-8 { margin-left: 3rem !important; } .mx-lg-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-lg-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-lg-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-9 { margin: 3.5rem !important; } .mt-lg-9 { margin-top: 3.5rem !important; } .mr-lg-9 { margin-right: 3.5rem !important; } .mb-lg-9 { margin-bottom: 3.5rem !important; } .ml-lg-9 { margin-left: 3.5rem !important; } .mx-lg-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-lg-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-lg-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 66.5rem) { .m-lg-10 { margin: 4rem !important; } .mt-lg-10 { margin-top: 4rem !important; } .mr-lg-10 { margin-right: 4rem !important; } .mb-lg-10 { margin-bottom: 4rem !important; } .ml-lg-10 { margin-left: 4rem !important; } .mx-lg-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-lg-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-lg-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-0 { margin: 0 !important; } .mt-xl-0 { margin-top: 0 !important; } .mr-xl-0 { margin-right: 0 !important; } .mb-xl-0 { margin-bottom: 0 !important; } .ml-xl-0 { margin-left: 0 !important; } .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xl-0 { margin-right: -0 !important; margin-left: -0 !important; } } + +@media (min-width: 87.5rem) { .m-xl-1 { margin: 0.25rem !important; } .mt-xl-1 { margin-top: 0.25rem !important; } .mr-xl-1 { margin-right: 0.25rem !important; } .mb-xl-1 { margin-bottom: 0.25rem !important; } .ml-xl-1 { margin-left: 0.25rem !important; } .mx-xl-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xl-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-2 { margin: 0.5rem !important; } .mt-xl-2 { margin-top: 0.5rem !important; } .mr-xl-2 { margin-right: 0.5rem !important; } .mb-xl-2 { margin-bottom: 0.5rem !important; } .ml-xl-2 { margin-left: 0.5rem !important; } .mx-xl-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xl-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-3 { margin: 0.75rem !important; } .mt-xl-3 { margin-top: 0.75rem !important; } .mr-xl-3 { margin-right: 0.75rem !important; } .mb-xl-3 { margin-bottom: 0.75rem !important; } .ml-xl-3 { margin-left: 0.75rem !important; } .mx-xl-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xl-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xl-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-4 { margin: 1rem !important; } .mt-xl-4 { margin-top: 1rem !important; } .mr-xl-4 { margin-right: 1rem !important; } .mb-xl-4 { margin-bottom: 1rem !important; } .ml-xl-4 { margin-left: 1rem !important; } .mx-xl-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xl-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xl-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-5 { margin: 1.5rem !important; } .mt-xl-5 { margin-top: 1.5rem !important; } .mr-xl-5 { margin-right: 1.5rem !important; } .mb-xl-5 { margin-bottom: 1.5rem !important; } .ml-xl-5 { margin-left: 1.5rem !important; } .mx-xl-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xl-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xl-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-6 { margin: 2rem !important; } .mt-xl-6 { margin-top: 2rem !important; } .mr-xl-6 { margin-right: 2rem !important; } .mb-xl-6 { margin-bottom: 2rem !important; } .ml-xl-6 { margin-left: 2rem !important; } .mx-xl-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xl-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xl-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-7 { margin: 2.5rem !important; } .mt-xl-7 { margin-top: 2.5rem !important; } .mr-xl-7 { margin-right: 2.5rem !important; } .mb-xl-7 { margin-bottom: 2.5rem !important; } .ml-xl-7 { margin-left: 2.5rem !important; } .mx-xl-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xl-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xl-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-8 { margin: 3rem !important; } .mt-xl-8 { margin-top: 3rem !important; } .mr-xl-8 { margin-right: 3rem !important; } .mb-xl-8 { margin-bottom: 3rem !important; } .ml-xl-8 { margin-left: 3rem !important; } .mx-xl-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xl-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xl-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-9 { margin: 3.5rem !important; } .mt-xl-9 { margin-top: 3.5rem !important; } .mr-xl-9 { margin-right: 3.5rem !important; } .mb-xl-9 { margin-bottom: 3.5rem !important; } .ml-xl-9 { margin-left: 3.5rem !important; } .mx-xl-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xl-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xl-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } + +@media (min-width: 87.5rem) { .m-xl-10 { margin: 4rem !important; } .mt-xl-10 { margin-top: 4rem !important; } .mr-xl-10 { margin-right: 4rem !important; } .mb-xl-10 { margin-bottom: 4rem !important; } .ml-xl-10 { margin-left: 4rem !important; } .mx-xl-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xl-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xl-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } + +.p-0 { padding: 0 !important; } + +.pt-0 { padding-top: 0 !important; } + +.pr-0 { padding-right: 0 !important; } + +.pb-0 { padding-bottom: 0 !important; } + +.pl-0 { padding-left: 0 !important; } + +.px-0 { padding-right: 0 !important; padding-left: 0 !important; } + +.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + +.p-1 { padding: 0.25rem !important; } + +.pt-1 { padding-top: 0.25rem !important; } + +.pr-1 { padding-right: 0.25rem !important; } + +.pb-1 { padding-bottom: 0.25rem !important; } + +.pl-1 { padding-left: 0.25rem !important; } + +.px-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } + +.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } + +.p-2 { padding: 0.5rem !important; } + +.pt-2 { padding-top: 0.5rem !important; } + +.pr-2 { padding-right: 0.5rem !important; } + +.pb-2 { padding-bottom: 0.5rem !important; } + +.pl-2 { padding-left: 0.5rem !important; } + +.px-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } + +.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } + +.p-3 { padding: 0.75rem !important; } + +.pt-3 { padding-top: 0.75rem !important; } + +.pr-3 { padding-right: 0.75rem !important; } + +.pb-3 { padding-bottom: 0.75rem !important; } + +.pl-3 { padding-left: 0.75rem !important; } + +.px-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } + +.py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } + +.p-4 { padding: 1rem !important; } + +.pt-4 { padding-top: 1rem !important; } + +.pr-4 { padding-right: 1rem !important; } + +.pb-4 { padding-bottom: 1rem !important; } + +.pl-4 { padding-left: 1rem !important; } + +.px-4 { padding-right: 1rem !important; padding-left: 1rem !important; } + +.py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } + +.p-5 { padding: 1.5rem !important; } + +.pt-5 { padding-top: 1.5rem !important; } + +.pr-5 { padding-right: 1.5rem !important; } + +.pb-5 { padding-bottom: 1.5rem !important; } + +.pl-5 { padding-left: 1.5rem !important; } + +.px-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } + +.py-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } + +.p-6 { padding: 2rem !important; } + +.pt-6 { padding-top: 2rem !important; } + +.pr-6 { padding-right: 2rem !important; } + +.pb-6 { padding-bottom: 2rem !important; } + +.pl-6 { padding-left: 2rem !important; } + +.px-6 { padding-right: 2rem !important; padding-left: 2rem !important; } + +.py-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } + +.p-7 { padding: 2.5rem !important; } + +.pt-7 { padding-top: 2.5rem !important; } + +.pr-7 { padding-right: 2.5rem !important; } + +.pb-7 { padding-bottom: 2.5rem !important; } + +.pl-7 { padding-left: 2.5rem !important; } + +.px-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } + +.py-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } + +.p-8 { padding: 3rem !important; } + +.pt-8 { padding-top: 3rem !important; } + +.pr-8 { padding-right: 3rem !important; } + +.pb-8 { padding-bottom: 3rem !important; } + +.pl-8 { padding-left: 3rem !important; } + +.px-8 { padding-right: 3rem !important; padding-left: 3rem !important; } + +.py-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } + +.p-9 { padding: 3.5rem !important; } + +.pt-9 { padding-top: 3.5rem !important; } + +.pr-9 { padding-right: 3.5rem !important; } + +.pb-9 { padding-bottom: 3.5rem !important; } + +.pl-9 { padding-left: 3.5rem !important; } + +.px-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } + +.py-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } + +.p-10 { padding: 4rem !important; } + +.pt-10 { padding-top: 4rem !important; } + +.pr-10 { padding-right: 4rem !important; } + +.pb-10 { padding-bottom: 4rem !important; } + +.pl-10 { padding-left: 4rem !important; } + +.px-10 { padding-right: 4rem !important; padding-left: 4rem !important; } + +.py-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } + +@media (min-width: 20rem) { .p-xs-0 { padding: 0 !important; } .pt-xs-0 { padding-top: 0 !important; } .pr-xs-0 { padding-right: 0 !important; } .pb-xs-0 { padding-bottom: 0 !important; } .pl-xs-0 { padding-left: 0 !important; } .px-xs-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xs-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xs-1 { padding: 0.25rem !important; } .pt-xs-1 { padding-top: 0.25rem !important; } .pr-xs-1 { padding-right: 0.25rem !important; } .pb-xs-1 { padding-bottom: 0.25rem !important; } .pl-xs-1 { padding-left: 0.25rem !important; } .px-xs-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xs-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xs-2 { padding: 0.5rem !important; } .pt-xs-2 { padding-top: 0.5rem !important; } .pr-xs-2 { padding-right: 0.5rem !important; } .pb-xs-2 { padding-bottom: 0.5rem !important; } .pl-xs-2 { padding-left: 0.5rem !important; } .px-xs-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xs-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xs-3 { padding: 0.75rem !important; } .pt-xs-3 { padding-top: 0.75rem !important; } .pr-xs-3 { padding-right: 0.75rem !important; } .pb-xs-3 { padding-bottom: 0.75rem !important; } .pl-xs-3 { padding-left: 0.75rem !important; } .px-xs-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xs-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xs-4 { padding: 1rem !important; } .pt-xs-4 { padding-top: 1rem !important; } .pr-xs-4 { padding-right: 1rem !important; } .pb-xs-4 { padding-bottom: 1rem !important; } .pl-xs-4 { padding-left: 1rem !important; } .px-xs-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xs-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xs-5 { padding: 1.5rem !important; } .pt-xs-5 { padding-top: 1.5rem !important; } .pr-xs-5 { padding-right: 1.5rem !important; } .pb-xs-5 { padding-bottom: 1.5rem !important; } .pl-xs-5 { padding-left: 1.5rem !important; } .px-xs-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xs-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xs-6 { padding: 2rem !important; } .pt-xs-6 { padding-top: 2rem !important; } .pr-xs-6 { padding-right: 2rem !important; } .pb-xs-6 { padding-bottom: 2rem !important; } .pl-xs-6 { padding-left: 2rem !important; } .px-xs-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xs-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xs-7 { padding: 2.5rem !important; } .pt-xs-7 { padding-top: 2.5rem !important; } .pr-xs-7 { padding-right: 2.5rem !important; } .pb-xs-7 { padding-bottom: 2.5rem !important; } .pl-xs-7 { padding-left: 2.5rem !important; } .px-xs-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xs-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xs-8 { padding: 3rem !important; } .pt-xs-8 { padding-top: 3rem !important; } .pr-xs-8 { padding-right: 3rem !important; } .pb-xs-8 { padding-bottom: 3rem !important; } .pl-xs-8 { padding-left: 3rem !important; } .px-xs-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xs-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xs-9 { padding: 3.5rem !important; } .pt-xs-9 { padding-top: 3.5rem !important; } .pr-xs-9 { padding-right: 3.5rem !important; } .pb-xs-9 { padding-bottom: 3.5rem !important; } .pl-xs-9 { padding-left: 3.5rem !important; } .px-xs-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xs-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xs-10 { padding: 4rem !important; } .pt-xs-10 { padding-top: 4rem !important; } .pr-xs-10 { padding-right: 4rem !important; } .pb-xs-10 { padding-bottom: 4rem !important; } .pl-xs-10 { padding-left: 4rem !important; } .px-xs-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xs-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 31.25rem) { .p-sm-0 { padding: 0 !important; } .pt-sm-0 { padding-top: 0 !important; } .pr-sm-0 { padding-right: 0 !important; } .pb-sm-0 { padding-bottom: 0 !important; } .pl-sm-0 { padding-left: 0 !important; } .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-sm-1 { padding: 0.25rem !important; } .pt-sm-1 { padding-top: 0.25rem !important; } .pr-sm-1 { padding-right: 0.25rem !important; } .pb-sm-1 { padding-bottom: 0.25rem !important; } .pl-sm-1 { padding-left: 0.25rem !important; } .px-sm-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-sm-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-sm-2 { padding: 0.5rem !important; } .pt-sm-2 { padding-top: 0.5rem !important; } .pr-sm-2 { padding-right: 0.5rem !important; } .pb-sm-2 { padding-bottom: 0.5rem !important; } .pl-sm-2 { padding-left: 0.5rem !important; } .px-sm-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-sm-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-sm-3 { padding: 0.75rem !important; } .pt-sm-3 { padding-top: 0.75rem !important; } .pr-sm-3 { padding-right: 0.75rem !important; } .pb-sm-3 { padding-bottom: 0.75rem !important; } .pl-sm-3 { padding-left: 0.75rem !important; } .px-sm-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-sm-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-sm-4 { padding: 1rem !important; } .pt-sm-4 { padding-top: 1rem !important; } .pr-sm-4 { padding-right: 1rem !important; } .pb-sm-4 { padding-bottom: 1rem !important; } .pl-sm-4 { padding-left: 1rem !important; } .px-sm-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-sm-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-sm-5 { padding: 1.5rem !important; } .pt-sm-5 { padding-top: 1.5rem !important; } .pr-sm-5 { padding-right: 1.5rem !important; } .pb-sm-5 { padding-bottom: 1.5rem !important; } .pl-sm-5 { padding-left: 1.5rem !important; } .px-sm-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-sm-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-sm-6 { padding: 2rem !important; } .pt-sm-6 { padding-top: 2rem !important; } .pr-sm-6 { padding-right: 2rem !important; } .pb-sm-6 { padding-bottom: 2rem !important; } .pl-sm-6 { padding-left: 2rem !important; } .px-sm-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-sm-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-sm-7 { padding: 2.5rem !important; } .pt-sm-7 { padding-top: 2.5rem !important; } .pr-sm-7 { padding-right: 2.5rem !important; } .pb-sm-7 { padding-bottom: 2.5rem !important; } .pl-sm-7 { padding-left: 2.5rem !important; } .px-sm-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-sm-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-sm-8 { padding: 3rem !important; } .pt-sm-8 { padding-top: 3rem !important; } .pr-sm-8 { padding-right: 3rem !important; } .pb-sm-8 { padding-bottom: 3rem !important; } .pl-sm-8 { padding-left: 3rem !important; } .px-sm-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-sm-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-sm-9 { padding: 3.5rem !important; } .pt-sm-9 { padding-top: 3.5rem !important; } .pr-sm-9 { padding-right: 3.5rem !important; } .pb-sm-9 { padding-bottom: 3.5rem !important; } .pl-sm-9 { padding-left: 3.5rem !important; } .px-sm-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-sm-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-sm-10 { padding: 4rem !important; } .pt-sm-10 { padding-top: 4rem !important; } .pr-sm-10 { padding-right: 4rem !important; } .pb-sm-10 { padding-bottom: 4rem !important; } .pl-sm-10 { padding-left: 4rem !important; } .px-sm-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-sm-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 50rem) { .p-md-0 { padding: 0 !important; } .pt-md-0 { padding-top: 0 !important; } .pr-md-0 { padding-right: 0 !important; } .pb-md-0 { padding-bottom: 0 !important; } .pl-md-0 { padding-left: 0 !important; } .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-md-1 { padding: 0.25rem !important; } .pt-md-1 { padding-top: 0.25rem !important; } .pr-md-1 { padding-right: 0.25rem !important; } .pb-md-1 { padding-bottom: 0.25rem !important; } .pl-md-1 { padding-left: 0.25rem !important; } .px-md-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-md-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-md-2 { padding: 0.5rem !important; } .pt-md-2 { padding-top: 0.5rem !important; } .pr-md-2 { padding-right: 0.5rem !important; } .pb-md-2 { padding-bottom: 0.5rem !important; } .pl-md-2 { padding-left: 0.5rem !important; } .px-md-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-md-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-md-3 { padding: 0.75rem !important; } .pt-md-3 { padding-top: 0.75rem !important; } .pr-md-3 { padding-right: 0.75rem !important; } .pb-md-3 { padding-bottom: 0.75rem !important; } .pl-md-3 { padding-left: 0.75rem !important; } .px-md-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-md-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-md-4 { padding: 1rem !important; } .pt-md-4 { padding-top: 1rem !important; } .pr-md-4 { padding-right: 1rem !important; } .pb-md-4 { padding-bottom: 1rem !important; } .pl-md-4 { padding-left: 1rem !important; } .px-md-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-md-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-md-5 { padding: 1.5rem !important; } .pt-md-5 { padding-top: 1.5rem !important; } .pr-md-5 { padding-right: 1.5rem !important; } .pb-md-5 { padding-bottom: 1.5rem !important; } .pl-md-5 { padding-left: 1.5rem !important; } .px-md-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-md-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-md-6 { padding: 2rem !important; } .pt-md-6 { padding-top: 2rem !important; } .pr-md-6 { padding-right: 2rem !important; } .pb-md-6 { padding-bottom: 2rem !important; } .pl-md-6 { padding-left: 2rem !important; } .px-md-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-md-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-md-7 { padding: 2.5rem !important; } .pt-md-7 { padding-top: 2.5rem !important; } .pr-md-7 { padding-right: 2.5rem !important; } .pb-md-7 { padding-bottom: 2.5rem !important; } .pl-md-7 { padding-left: 2.5rem !important; } .px-md-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-md-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-md-8 { padding: 3rem !important; } .pt-md-8 { padding-top: 3rem !important; } .pr-md-8 { padding-right: 3rem !important; } .pb-md-8 { padding-bottom: 3rem !important; } .pl-md-8 { padding-left: 3rem !important; } .px-md-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-md-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-md-9 { padding: 3.5rem !important; } .pt-md-9 { padding-top: 3.5rem !important; } .pr-md-9 { padding-right: 3.5rem !important; } .pb-md-9 { padding-bottom: 3.5rem !important; } .pl-md-9 { padding-left: 3.5rem !important; } .px-md-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-md-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-md-10 { padding: 4rem !important; } .pt-md-10 { padding-top: 4rem !important; } .pr-md-10 { padding-right: 4rem !important; } .pb-md-10 { padding-bottom: 4rem !important; } .pl-md-10 { padding-left: 4rem !important; } .px-md-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-md-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 66.5rem) { .p-lg-0 { padding: 0 !important; } .pt-lg-0 { padding-top: 0 !important; } .pr-lg-0 { padding-right: 0 !important; } .pb-lg-0 { padding-bottom: 0 !important; } .pl-lg-0 { padding-left: 0 !important; } .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-lg-1 { padding: 0.25rem !important; } .pt-lg-1 { padding-top: 0.25rem !important; } .pr-lg-1 { padding-right: 0.25rem !important; } .pb-lg-1 { padding-bottom: 0.25rem !important; } .pl-lg-1 { padding-left: 0.25rem !important; } .px-lg-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-lg-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-lg-2 { padding: 0.5rem !important; } .pt-lg-2 { padding-top: 0.5rem !important; } .pr-lg-2 { padding-right: 0.5rem !important; } .pb-lg-2 { padding-bottom: 0.5rem !important; } .pl-lg-2 { padding-left: 0.5rem !important; } .px-lg-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-lg-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-lg-3 { padding: 0.75rem !important; } .pt-lg-3 { padding-top: 0.75rem !important; } .pr-lg-3 { padding-right: 0.75rem !important; } .pb-lg-3 { padding-bottom: 0.75rem !important; } .pl-lg-3 { padding-left: 0.75rem !important; } .px-lg-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-lg-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-lg-4 { padding: 1rem !important; } .pt-lg-4 { padding-top: 1rem !important; } .pr-lg-4 { padding-right: 1rem !important; } .pb-lg-4 { padding-bottom: 1rem !important; } .pl-lg-4 { padding-left: 1rem !important; } .px-lg-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-lg-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-lg-5 { padding: 1.5rem !important; } .pt-lg-5 { padding-top: 1.5rem !important; } .pr-lg-5 { padding-right: 1.5rem !important; } .pb-lg-5 { padding-bottom: 1.5rem !important; } .pl-lg-5 { padding-left: 1.5rem !important; } .px-lg-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-lg-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-lg-6 { padding: 2rem !important; } .pt-lg-6 { padding-top: 2rem !important; } .pr-lg-6 { padding-right: 2rem !important; } .pb-lg-6 { padding-bottom: 2rem !important; } .pl-lg-6 { padding-left: 2rem !important; } .px-lg-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-lg-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-lg-7 { padding: 2.5rem !important; } .pt-lg-7 { padding-top: 2.5rem !important; } .pr-lg-7 { padding-right: 2.5rem !important; } .pb-lg-7 { padding-bottom: 2.5rem !important; } .pl-lg-7 { padding-left: 2.5rem !important; } .px-lg-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-lg-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-lg-8 { padding: 3rem !important; } .pt-lg-8 { padding-top: 3rem !important; } .pr-lg-8 { padding-right: 3rem !important; } .pb-lg-8 { padding-bottom: 3rem !important; } .pl-lg-8 { padding-left: 3rem !important; } .px-lg-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-lg-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-lg-9 { padding: 3.5rem !important; } .pt-lg-9 { padding-top: 3.5rem !important; } .pr-lg-9 { padding-right: 3.5rem !important; } .pb-lg-9 { padding-bottom: 3.5rem !important; } .pl-lg-9 { padding-left: 3.5rem !important; } .px-lg-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-lg-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-lg-10 { padding: 4rem !important; } .pt-lg-10 { padding-top: 4rem !important; } .pr-lg-10 { padding-right: 4rem !important; } .pb-lg-10 { padding-bottom: 4rem !important; } .pl-lg-10 { padding-left: 4rem !important; } .px-lg-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-lg-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media (min-width: 87.5rem) { .p-xl-0 { padding: 0 !important; } .pt-xl-0 { padding-top: 0 !important; } .pr-xl-0 { padding-right: 0 !important; } .pb-xl-0 { padding-bottom: 0 !important; } .pl-xl-0 { padding-left: 0 !important; } .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xl-1 { padding: 0.25rem !important; } .pt-xl-1 { padding-top: 0.25rem !important; } .pr-xl-1 { padding-right: 0.25rem !important; } .pb-xl-1 { padding-bottom: 0.25rem !important; } .pl-xl-1 { padding-left: 0.25rem !important; } .px-xl-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xl-2 { padding: 0.5rem !important; } .pt-xl-2 { padding-top: 0.5rem !important; } .pr-xl-2 { padding-right: 0.5rem !important; } .pb-xl-2 { padding-bottom: 0.5rem !important; } .pl-xl-2 { padding-left: 0.5rem !important; } .px-xl-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xl-3 { padding: 0.75rem !important; } .pt-xl-3 { padding-top: 0.75rem !important; } .pr-xl-3 { padding-right: 0.75rem !important; } .pb-xl-3 { padding-bottom: 0.75rem !important; } .pl-xl-3 { padding-left: 0.75rem !important; } .px-xl-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xl-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xl-4 { padding: 1rem !important; } .pt-xl-4 { padding-top: 1rem !important; } .pr-xl-4 { padding-right: 1rem !important; } .pb-xl-4 { padding-bottom: 1rem !important; } .pl-xl-4 { padding-left: 1rem !important; } .px-xl-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xl-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xl-5 { padding: 1.5rem !important; } .pt-xl-5 { padding-top: 1.5rem !important; } .pr-xl-5 { padding-right: 1.5rem !important; } .pb-xl-5 { padding-bottom: 1.5rem !important; } .pl-xl-5 { padding-left: 1.5rem !important; } .px-xl-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xl-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xl-6 { padding: 2rem !important; } .pt-xl-6 { padding-top: 2rem !important; } .pr-xl-6 { padding-right: 2rem !important; } .pb-xl-6 { padding-bottom: 2rem !important; } .pl-xl-6 { padding-left: 2rem !important; } .px-xl-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xl-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xl-7 { padding: 2.5rem !important; } .pt-xl-7 { padding-top: 2.5rem !important; } .pr-xl-7 { padding-right: 2.5rem !important; } .pb-xl-7 { padding-bottom: 2.5rem !important; } .pl-xl-7 { padding-left: 2.5rem !important; } .px-xl-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xl-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xl-8 { padding: 3rem !important; } .pt-xl-8 { padding-top: 3rem !important; } .pr-xl-8 { padding-right: 3rem !important; } .pb-xl-8 { padding-bottom: 3rem !important; } .pl-xl-8 { padding-left: 3rem !important; } .px-xl-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xl-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xl-9 { padding: 3.5rem !important; } .pt-xl-9 { padding-top: 3.5rem !important; } .pr-xl-9 { padding-right: 3.5rem !important; } .pb-xl-9 { padding-bottom: 3.5rem !important; } .pl-xl-9 { padding-left: 3.5rem !important; } .px-xl-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xl-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xl-10 { padding: 4rem !important; } .pt-xl-10 { padding-top: 4rem !important; } .pr-xl-10 { padding-right: 4rem !important; } .pb-xl-10 { padding-bottom: 4rem !important; } .pl-xl-10 { padding-left: 4rem !important; } .px-xl-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xl-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } + +@media print { .site-footer, .site-button, #edit-this-page, #back-to-top, .site-nav, .main-header { display: none !important; } .side-bar { width: 100%; height: auto; border-right: 0 !important; } .site-header { border-bottom: 1px solid #eeebee; } .site-title { font-size: 16px !important; font-weight: 700 !important; } .text-small { font-size: 8pt !important; } pre.highlight { border: 1px solid #eeebee; } .main { max-width: none; margin-left: 0; } } + +/* Just-the-docs overrides and custom styles */ +/* Rogue (Jekyll's syntax highlighter) uses Pygment compatible styles. This is the "github" theme: https://github.com/uraimo/pygments-vimstyles/blob/master/github.css */ +.highlight .hll { background-color: #ffffcc; } + +.highlight { background: #F8F8FF; color: #000000; background-color: #F8F8FF; } + +.highlight .c { color: #999988; background-color: #F8F8FF; } + +/* Comment */ +.highlight .err { color: #000000; background-color: #F8F8FF; } + +/* Error */ +.highlight .g { color: #000000; background-color: #F8F8FF; } + +/* Generic */ +.highlight .k { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword */ +.highlight .l { color: #000000; background-color: #F8F8FF; } + +/* Literal */ +.highlight .n { color: #000000; background-color: #F8F8FF; } + +/* Name */ +.highlight .o { color: #000000; background-color: #F8F8FF; } + +/* Operator */ +.highlight .x { color: #000000; background-color: #F8F8FF; } + +/* Other */ +.highlight .p { color: #000000; background-color: #F8F8FF; } + +/* Punctuation */ +.highlight .cm { color: #999988; background-color: #F8F8FF; } + +/* Comment.Multiline */ +.highlight .cp { color: #A0A0A0; font-weight: bold; background-color: #F8F8FF; } + +/* Comment.Preproc */ +.highlight .c1 { color: #999988; background-color: #F8F8FF; } + +/* Comment.Single */ +.highlight .cs { color: #999988; background-color: #F8F8FF; } + +/* Comment.Special */ +.highlight .gd { color: #DDCCCC; background-color: #FFDDDD; } + +/* Generic.Deleted */ +.highlight .ge { color: #000000; text-decoration: underline; background-color: #F8F8FF; } + +/* Generic.Emph */ +.highlight .gr { color: #ff1100; background-color: #f8f8ff; } + +/* Generic.Error */ +.highlight .gh { color: #ef5939; background-color: #F8F8FF; } + +/* Generic.Heading */ +.highlight .gi { color: #003300; background-color: #DDFFDD; } + +/* Generic.Inserted */ +.highlight .go { color: #808080; background-color: #ECECEC; } + +/* Generic.Output */ +.highlight .gp { color: #000000; background-color: #F8F8FF; } + +/* Generic.Prompt */ +.highlight .gs { color: #000000; background-color: #F8F8FF; } + +/* Generic.Strong */ +.highlight .gu { color: #ef5939; background-color: #F8F8FF; } + +/* Generic.Subheading */ +.highlight .gt { color: #000000; background-color: #F8F8FF; } + +/* Generic.Traceback */ +.highlight .kc { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Constant */ +.highlight .kd { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Declaration */ +.highlight .kn { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Namespace */ +.highlight .kp { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Pseudo */ +.highlight .kr { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold; background-color: #F8F8FF; } + +/* Keyword.Type */ +.highlight .ld { color: #000000; background-color: #F8F8FF; } + +/* Literal.Date */ +.highlight .m { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number */ +.highlight .s { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String */ +.highlight .na { color: #990000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Attribute */ +.highlight .nb { color: #000000; background-color: #F8F8FF; } + +/* Name.Builtin */ +.highlight .nc { color: #000000; background-color: #F8F8FF; } + +/* Name.Class */ +.highlight .no { color: #177F80; background-color: #F8F8FF; } + +/* Name.Constant */ +.highlight .nd { color: #000000; background-color: #F8F8FF; } + +/* Name.Decorator */ +.highlight .ni { color: #159828; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Entity */ +.highlight .ne { color: #000000; background-color: #F8F8FF; } + +/* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Function */ +.highlight .nl { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Label */ +.highlight .nn { color: #000000; background-color: #F8F8FF; } + +/* Name.Namespace */ +.highlight .nx { color: #000000; background-color: #F8F8FF; } + +/* Name.Other */ +.highlight .py { color: #000000; background-color: #F8F8FF; } + +/* Name.Property */ +.highlight .nt { color: #000000; font-weight: bold; background-color: #F8F8FF; } + +/* Name.Tag */ +.highlight .nv { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable */ +.highlight .ow { color: #000000; background-color: #F8F8FF; } + +/* Operator.Word */ +.highlight .w { color: #000000; background-color: #F8F8FF; } + +/* Text.Whitespace */ +.highlight .mf { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Float */ +.highlight .mh { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Hex */ +.highlight .mi { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Integer */ +.highlight .mo { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Oct */ +.highlight .sb { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Backtick */ +.highlight .sc { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Char */ +.highlight .sd { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Doc */ +.highlight .s2 { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Double */ +.highlight .se { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Escape */ +.highlight .sh { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Heredoc */ +.highlight .si { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Interpol */ +.highlight .sx { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Other */ +.highlight .sr { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Regex */ +.highlight .s1 { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Single */ +.highlight .ss { color: #D81745; background-color: #F8F8FF; } + +/* Literal.String.Symbol */ +.highlight .bp { color: #000000; background-color: #F8F8FF; } + +/* Name.Builtin.Pseudo */ +.highlight .vc { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable.Class */ +.highlight .vg { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable.Global */ +.highlight .vi { color: #0086B3; background-color: #F8F8FF; } + +/* Name.Variable.Instance */ +.highlight .il { color: #1C9898; background-color: #F8F8FF; } + +/* Literal.Number.Integer.Long */ +/* Style variable overrides to match Alloverse style List of changeable variables: https://github.com/pmarsceill/just-the-docs/blob/master/_sass/support/_variables.scss */ +body { font-family: "Open Sans", "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif; color: #0c2b48; } + +h1, h2, h3, h4, .text-delta { font-family: "Sen", "Segoe UI", sans-serif; color: #0c2b48; font-weight: 700; letter-spacing: -0.5px; } + +.main-content h1 { font-size: 36px !important; font-weight: 800; letter-spacing: -1px; margin-bottom: 24px; } + +pre { white-space: pre-wrap; } + +code { padding: 2px 4px; } + +.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #0c2b48; } + +.table-wrapper table { border-collapse: collapse; } + +.table-wrapper table thead { text-align: left; } + +.table-wrapper table thead th { background: #E5E9F1; } + +.table-wrapper table td { border-bottom-color: rgba(12, 43, 72, 0.1); } + +.returns-nothing { color: #A9B6D1; font-style: italic; } + +@media print { .side-bar, .page-header { display: none; } .main-content { max-width: auto; margin: 1em; } } + +/*# sourceMappingURL=just-the-docs-light.css.map */ \ No newline at end of file diff --git a/assets/css/just-the-docs-light.css.map b/assets/css/just-the-docs-light.css.map new file mode 100644 index 0000000..280e3ef --- /dev/null +++ b/assets/css/just-the-docs-light.css.map @@ -0,0 +1,78 @@ +{ + "version": 3, + "file": "just-the-docs-light.css", + "sources": [ + "just-the-docs-light.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/support.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/_variables.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/_functions.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/mixins.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_layout.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_buttons.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/support/mixins/_typography.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/color_schemes/light.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/modules.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/vendor/normalize.scss/normalize.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/base.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/layout.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/content.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/navigation.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/typography.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/labels.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/buttons.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/search.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/tables.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/code.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/utilities.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_colors.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_layout.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_typography.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_lists.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/utilities/_spacing.scss", + "vendor/bundle/ruby/2.7.0/gems/just-the-docs-0.3.3/_sass/print.scss", + "_sass/custom/custom.scss", + "_sass/custom/code.scss", + "_sass/color_schemes/alloverse.scss" + ], + "sourcesContent": [ + "\n$logo: \"https://alloverse.com/wp-content/uploads/Alloverse-logo-moniker-256x38-1.svg\";\n\n@import \"./support/support\";\n@import \"./color_schemes/light\";\n@import \"./modules\";\n@import \"./custom/custom\";\n\n\n", + "@import \"./variables\";\n@import \"./functions\";\n@import \"./mixins/mixins\";\n", + "//\n// Typography\n//\n\n$body-font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n$mono-font-family: \"SFMono-Regular\", Menlo, Consolas, Monospace !default;\n$root-font-size: 16px !default; // Base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n//\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n//\n\n$font-size-1: 9px !default;\n$font-size-1-sm: 10px !default;\n$font-size-2: 11px !default; //h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 12px !default; //h5\n$font-size-4: 14px !default;\n$font-size-5: 16px !default; //h3\n$font-size-6: 18px !default; //h2\n$font-size-7: 24px !default;\n$font-size-8: 32px !default; //h1\n$font-size-9: 36px !default;\n$font-size-10: 42px !default;\n$font-size-10-sm: 48px !default;\n\n//\n// Colors\n//\n\n$white: #fff !default;\n\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n$body-background-color: $white !default;\n$sidebar-color: $grey-lt-000 !default;\n$search-background-color: $white !default;\n$table-background-color: $white !default;\n$code-background-color: $grey-lt-000 !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n\n$body-text-color: $grey-dk-100 !default;\n$body-heading-color: $grey-dk-300 !default;\n$search-result-preview-color: $grey-dk-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$btn-primary-color: $purple-100 !default;\n$base-button-color: #f7f7f7 !default;\n\n//\n// Spacing\n//\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n//\n// Borders\n//\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n//\n// Grid system\n//\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 264px !default;\n$nav-width-md: 248px !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 800px !default;\n$header-height: 60px !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n//\n// Media queries in pixels\n//\n\n$media-queries: (\n xs: 320px,\n sm: 500px,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 1400px,\n) !default;\n", + "@function rem($size, $unit: \"\") {\n $remSize: $size / $root-font-size;\n\n @if ($unit == false) {\n @return #{$remSize};\n } @else {\n @return #{$remSize}rem;\n }\n}\n", + "@import \"./layout\";\n@import \"./buttons\";\n@import \"./typography\";\n", + "// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value != null {\n // Prints a media query based on the value\n @media (min-width: rem($value)) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. \"\n + \"Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n", + "// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n", + "@mixin fs-1 {\n font-size: $font-size-1 !important;\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n font-size: $font-size-2 !important;\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n font-size: $font-size-3 !important;\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n font-size: $font-size-4 !important;\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n font-size: $font-size-5 !important;\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n font-size: $font-size-6 !important;\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n", + "", + "//\n// Import external dependencies\n//\n@import \"./vendor/normalize.scss/normalize.scss\";\n\n//\n// Modules\n//\n@import \"./base\";\n@import \"./layout\";\n@import \"./content\";\n@import \"./navigation\";\n@import \"./typography\";\n@import \"./labels\";\n@import \"./buttons\";\n@import \"./search\";\n@import \"./tables\";\n@import \"./code\";\n@import \"./utilities/utilities\";\n@import \"./print\";\n", + "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n", + "//\n// Base element style overrides\n//\n// stylelint-disable selector-no-type, selector-max-type\n\n* {\n box-sizing: border-box;\n}\n\n::selection {\n color: $white;\n background: $link-color;\n}\n\nhtml {\n @include fs-4;\n scroll-behavior: smooth;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: none;\n background-image: linear-gradient($border-color 0%, $border-color 100%);\n background-repeat: repeat-x;\n background-position: 0 100%;\n background-size: 1px 1px;\n\n &:hover {\n background-image: linear-gradient(\n rgba($link-color, 0.45) 0%,\n rgba($link-color, 0.45) 100%\n );\n background-size: 1px 1px;\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n", + "//\n// The basic two column layout\n//\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-wrap: nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n flex-direction: column;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n}\n\n.main {\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n margin-left: calc(\n (100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}\n );\n }\n}\n\n.main-content-wrap {\n @include container;\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n background-color: $body-background-color;\n border-bottom: $border $border-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n @include container;\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n// stylelint-disable selector-max-type\n\nbody {\n position: relative;\n padding-bottom: $sp-10;\n overflow-y: scroll;\n\n @include mq(md) {\n position: static;\n padding-bottom: 0;\n }\n}\n\n// stylelint-enable selector-max-type\n\n.site-footer {\n @include container;\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n color: $grey-dk-000;\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n", + "@charset \"UTF-8\";\n\n//\n// Styles for rendered markdown in the .main-content container\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list {\n padding-left: 0;\n }\n\n .task-list-item {\n display: flex;\n align-items: center;\n\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n &:first-child {\n margin-top: $sp-2;\n }\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge {\n margin-top: 1em;\n }\n\n + p {\n margin-top: 0;\n }\n }\n}\n", + "//\n// Main nav, breadcrumb, etc...\n//\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n @include fs-4;\n position: relative;\n margin: 0;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding-top: #{$nav-list-item-height-sm / 4};\n padding-right: #{$nav-list-item-height-sm / 4};\n padding-bottom: #{$nav-list-item-height-sm / 4};\n padding-left: #{$nav-list-item-height-sm / 4};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding-top: #{$nav-list-item-height / 4};\n padding-right: #{$nav-list-item-height / 4};\n padding-bottom: #{$nav-list-item-height / 4};\n padding-left: #{$nav-list-item-height / 4};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: $gutter-spacing-sm;\n font-weight: 600;\n text-align: end;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n", + "//\n// Typography\n//\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type\n\nh1,\n.text-alpha {\n @include fs-8;\n font-weight: 300;\n}\n\nh2,\n.text-beta {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n @include fs-2;\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n color: $grey-dk-200;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n color: $grey-dk-200;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n", + "//\n// Labels (not the form kind)\n//\n\n.label,\n.label-blue {\n display: inline-block;\n padding-top: 0.16em;\n padding-right: 0.56em;\n padding-bottom: 0.16em;\n padding-left: 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n @include fs-2;\n border-radius: 12px;\n}\n\n.label-green {\n background-color: $green-200;\n}\n\n.label-purple {\n background-color: $purple-100;\n}\n\n.label-red {\n background-color: $red-200;\n}\n\n.label-yellow {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n", + "//\n// Buttons and things that look like buttons\n//\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding-top: 0.3em;\n padding-right: 1em;\n padding-bottom: 0.3em;\n padding-left: 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-000);\n}\n\n.btn-green {\n @include btn-color($white, $green-100);\n}\n", + "//\n// Search input and autocomplete\n//\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration / 2};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding-top: $sp-2;\n padding-right: $gutter-spacing-sm;\n padding-bottom: $sp-2;\n padding-left: #{$gutter-spacing-sm + $sp-5};\n font-size: 16px;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n padding-left: #{$gutter-spacing + $sp-5};\n font-size: 14px;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n &:focus {\n outline: 0;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration / 2};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding-top: $sp-1;\n padding-right: $sp-3;\n padding-bottom: $sp-1;\n padding-left: $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 / 2};\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition: opacity ease $transition-duration, width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition: opacity ease $transition-duration, width 0s, height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n", + "//\n// Tables\n//\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n @include fs-3;\n min-width: 120px;\n padding-top: $sp-2;\n padding-right: $sp-3;\n padding-bottom: $sp-2;\n padding-left: $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n", + "//\n// Code and syntax highlighting\n//\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type\n\ncode {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n//
...
:\n// figure.highlight > pre > code.language-LANG\n//\n//
1
+
...
+
:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\ndiv.highlighter-rouge {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n overflow-x: auto;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n div.highlight,\n pre.highlight,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n//
...
,\n//
1
+
...
+
:\nfigure.highlight {\n padding: $sp-3;\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n\n pre,\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n//
1
+
...
+
:\n.highlight .table-wrapper {\n padding: 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n @include fs-2;\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n }\n\n td.gl {\n padding-right: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n.highlight .c {\n color: #586e75;\n} // comment //\n.highlight .err {\n color: #93a1a1;\n} // error //\n.highlight .g {\n color: #93a1a1;\n} // generic //\n.highlight .k {\n color: #859900;\n} // keyword //\n.highlight .l {\n color: #93a1a1;\n} // literal //\n.highlight .n {\n color: #93a1a1;\n} // name //\n.highlight .o {\n color: #859900;\n} // operator //\n.highlight .x {\n color: #cb4b16;\n} // other //\n.highlight .p {\n color: #93a1a1;\n} // punctuation //\n.highlight .cm {\n color: #586e75;\n} // comment.multiline //\n.highlight .cp {\n color: #859900;\n} // comment.preproc //\n.highlight .c1 {\n color: #586e75;\n} // comment.single //\n.highlight .cs {\n color: #859900;\n} // comment.special //\n.highlight .gd {\n color: #2aa198;\n} // generic.deleted //\n.highlight .ge {\n font-style: italic;\n color: #93a1a1;\n} // generic.emph //\n.highlight .gr {\n color: #dc322f;\n} // generic.error //\n.highlight .gh {\n color: #cb4b16;\n} // generic.heading //\n.highlight .gi {\n color: #859900;\n} // generic.inserted //\n.highlight .go {\n color: #93a1a1;\n} // generic.output //\n.highlight .gp {\n color: #93a1a1;\n} // generic.prompt //\n.highlight .gs {\n font-weight: bold;\n color: #93a1a1;\n} // generic.strong //\n.highlight .gu {\n color: #cb4b16;\n} // generic.subheading //\n.highlight .gt {\n color: #93a1a1;\n} // generic.traceback //\n.highlight .kc {\n color: #cb4b16;\n} // keyword.constant //\n.highlight .kd {\n color: #268bd2;\n} // keyword.declaration //\n.highlight .kn {\n color: #859900;\n} // keyword.namespace //\n.highlight .kp {\n color: #859900;\n} // keyword.pseudo //\n.highlight .kr {\n color: #268bd2;\n} // keyword.reserved //\n.highlight .kt {\n color: #dc322f;\n} // keyword.type //\n.highlight .ld {\n color: #93a1a1;\n} // literal.date //\n.highlight .m {\n color: #2aa198;\n} // literal.number //\n.highlight .s {\n color: #2aa198;\n} // literal.string //\n.highlight .na {\n color: #555;\n} // name.attribute //\n.highlight .nb {\n color: #b58900;\n} // name.builtin //\n.highlight .nc {\n color: #268bd2;\n} // name.class //\n.highlight .no {\n color: #cb4b16;\n} // name.constant //\n.highlight .nd {\n color: #268bd2;\n} // name.decorator //\n.highlight .ni {\n color: #cb4b16;\n} // name.entity //\n.highlight .ne {\n color: #cb4b16;\n} // name.exception //\n.highlight .nf {\n color: #268bd2;\n} // name.function //\n.highlight .nl {\n color: #555;\n} // name.label //\n.highlight .nn {\n color: #93a1a1;\n} // name.namespace //\n.highlight .nx {\n color: #555;\n} // name.other //\n.highlight .py {\n color: #93a1a1;\n} // name.property //\n.highlight .nt {\n color: #268bd2;\n} // name.tag //\n.highlight .nv {\n color: #268bd2;\n} // name.variable //\n.highlight .ow {\n color: #859900;\n} // operator.word //\n.highlight .w {\n color: #93a1a1;\n} // text.whitespace //\n.highlight .mf {\n color: #2aa198;\n} // literal.number.float //\n.highlight .mh {\n color: #2aa198;\n} // literal.number.hex //\n.highlight .mi {\n color: #2aa198;\n} // literal.number.integer //\n.highlight .mo {\n color: #2aa198;\n} // literal.number.oct //\n.highlight .sb {\n color: #586e75;\n} // literal.string.backtick //\n.highlight .sc {\n color: #2aa198;\n} // literal.string.char //\n.highlight .sd {\n color: #93a1a1;\n} // literal.string.doc //\n.highlight .s2 {\n color: #2aa198;\n} // literal.string.double //\n.highlight .se {\n color: #cb4b16;\n} // literal.string.escape //\n.highlight .sh {\n color: #93a1a1;\n} // literal.string.heredoc //\n.highlight .si {\n color: #2aa198;\n} // literal.string.interpol //\n.highlight .sx {\n color: #2aa198;\n} // literal.string.other //\n.highlight .sr {\n color: #dc322f;\n} // literal.string.regex //\n.highlight .s1 {\n color: #2aa198;\n} // literal.string.single //\n.highlight .ss {\n color: #2aa198;\n} // literal.string.symbol //\n.highlight .bp {\n color: #268bd2;\n} // name.builtin.pseudo //\n.highlight .vc {\n color: #268bd2;\n} // name.variable.class //\n.highlight .vg {\n color: #268bd2;\n} // name.variable.global //\n.highlight .vi {\n color: #268bd2;\n} // name.variable.instance //\n.highlight .il {\n color: #2aa198;\n} // literal.number.integer.long //\n\n//\n// Code examples (rendered)\n//\n\n.code-example {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n", + "@import \"./colors\";\n@import \"./layout\";\n@import \"./typography\";\n@import \"./lists\";\n@import \"./spacing\";\n", + "//\n// Utility classes for colors\n//\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n", + "// stylelint-disable primer/selector-no-utility, primer/no-override\n//\n// Utility classes for layout\n//\n\n// Display\n\n.d-block {\n display: block !important;\n}\n.d-flex {\n display: flex !important;\n}\n.d-inline {\n display: inline !important;\n}\n.d-inline-block {\n display: inline-block !important;\n}\n.d-none {\n display: none !important;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n.v-align-middle {\n vertical-align: middle !important;\n}\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n.v-align-top {\n vertical-align: top !important;\n}\n", + "//\n// Utility classes for typography\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n// stylelint-enable primer/selector-no-utility\n", + "//\n// Utility classes for lists\n//\n\n// stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n", + "//\n// Utility classes for margins and padding\n//\n\n// scss-lint:disable SpaceAfterPropertyName\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility, primer/no-override\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n", + "// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type, primer/no-override,\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: $root-font-size !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n", + "/* Just-the-docs overrides and custom styles */\n\n@import url(\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400&family=Sen:wght@400;700;800\");\n\n\n\n@import \"./code\";\n@import \"../color_schemes/alloverse.scss\";\n\nbody {\n font-family: \"Open Sans\", \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", Arial, sans-serif;\n color: $allo-text-color-dark;\n}\n\nh1,\nh2,\nh3,\nh4,\n.text-delta {\n font-family: \"Sen\", \"Segoe UI\", sans-serif;\n color: $allo-text-color-dark;\n font-weight: 700;\n letter-spacing: -0.5px;\n}\n\n.main-content {\n h1 {\n font-size: 36px!important;;\n font-weight: 800;\n letter-spacing: -1px;\n margin-bottom: 24px;\n }\n // h2 {\n // font-size: 30px!important;\n // color: $allo-text-color-dark-90;\n // letter-spacing: -0.8px;\n \n // margin-top: 48px;\n // margin-bottom: 6px;\n // }\n // h3 {\n // font-size: 24px!important;\n \n // margin-top: 32px;\n // margin-bottom: 6px;\n // }\n // h4 {\n // font-size: 18px!important;\n // text-transform: none;\n\n // margin-top: 30px;\n // margin-bottom: 6px;\n // }\n}\n\npre {\n white-space: pre-wrap;\n}\n\ncode {\n padding: 2px 4px;\n}\n\n// Different link color for children of lists in the sidebar\n.nav-list .nav-list-item>.nav-list .nav-list-item .nav-list-link {\n color: #0c2b48;\n}\n\n// Tables for arguments & returns\n.table-wrapper {\n table {\n border-collapse: collapse;\n\n thead {\n text-align: left;\n th {\n background: $allo-dark-gray-30;\n }\n }\n \n td {\n border-bottom-color: $border-color;\n }\n\n }\n}\n\n.returns-nothing {\n color: $allo-dark-gray;\n font-style: italic;\n}\n\n// Print-only styles.\n@media print {\n .side-bar,\n .page-header {\n display: none;\n }\n .main-content {\n max-width: auto;\n margin: 1em;\n }\n}\n", + "/*\n Rogue (Jekyll's syntax highlighter) uses Pygment compatible styles.\n\n This is the \"github\" theme: https://github.com/uraimo/pygments-vimstyles/blob/master/github.css\n*/\n\n\n.highlight .hll { background-color: #ffffcc }\n.highlight { background: #F8F8FF; color: #000000; background-color: #F8F8FF }\n.highlight .c { color: #999988; background-color: #F8F8FF } /* Comment */\n.highlight .err { color: #000000; background-color: #F8F8FF } /* Error */\n.highlight .g { color: #000000; background-color: #F8F8FF } /* Generic */\n.highlight .k { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword */\n.highlight .l { color: #000000; background-color: #F8F8FF } /* Literal */\n.highlight .n { color: #000000; background-color: #F8F8FF } /* Name */\n.highlight .o { color: #000000; background-color: #F8F8FF } /* Operator */\n.highlight .x { color: #000000; background-color: #F8F8FF } /* Other */\n.highlight .p { color: #000000; background-color: #F8F8FF } /* Punctuation */\n.highlight .cm { color: #999988; background-color: #F8F8FF } /* Comment.Multiline */\n.highlight .cp { color: #A0A0A0; font-weight: bold; background-color: #F8F8FF } /* Comment.Preproc */\n.highlight .c1 { color: #999988; background-color: #F8F8FF } /* Comment.Single */\n.highlight .cs { color: #999988; background-color: #F8F8FF } /* Comment.Special */\n.highlight .gd { color: #DDCCCC; background-color: #FFDDDD } /* Generic.Deleted */\n.highlight .ge { color: #000000; text-decoration: underline; background-color: #F8F8FF } /* Generic.Emph */\n.highlight .gr { color: #ff1100; background-color: #f8f8ff } /* Generic.Error */\n.highlight .gh { color: #ef5939; background-color: #F8F8FF } /* Generic.Heading */\n.highlight .gi { color: #003300; background-color: #DDFFDD } /* Generic.Inserted */\n.highlight .go { color: #808080; background-color: #ECECEC } /* Generic.Output */\n.highlight .gp { color: #000000; background-color: #F8F8FF } /* Generic.Prompt */\n.highlight .gs { color: #000000; background-color: #F8F8FF } /* Generic.Strong */\n.highlight .gu { color: #ef5939; background-color: #F8F8FF } /* Generic.Subheading */\n.highlight .gt { color: #000000; background-color: #F8F8FF } /* Generic.Traceback */\n.highlight .kc { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Constant */\n.highlight .kd { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Declaration */\n.highlight .kn { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Namespace */\n.highlight .kp { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Pseudo */\n.highlight .kr { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Keyword.Reserved */\n.highlight .kt { color: #445588; font-weight: bold; background-color: #F8F8FF } /* Keyword.Type */\n.highlight .ld { color: #000000; background-color: #F8F8FF } /* Literal.Date */\n.highlight .m { color: #1C9898; background-color: #F8F8FF } /* Literal.Number */\n.highlight .s { color: #D81745; background-color: #F8F8FF } /* Literal.String */\n.highlight .na { color: #990000; font-weight: bold; background-color: #F8F8FF } /* Name.Attribute */\n.highlight .nb { color: #000000; background-color: #F8F8FF } /* Name.Builtin */\n.highlight .nc { color: #000000; background-color: #F8F8FF } /* Name.Class */\n.highlight .no { color: #177F80; background-color: #F8F8FF } /* Name.Constant */\n.highlight .nd { color: #000000; background-color: #F8F8FF } /* Name.Decorator */\n.highlight .ni { color: #159828; font-weight: bold; background-color: #F8F8FF } /* Name.Entity */\n.highlight .ne { color: #000000; background-color: #F8F8FF } /* Name.Exception */\n.highlight .nf { color: #990000; font-weight: bold; background-color: #F8F8FF } /* Name.Function */\n.highlight .nl { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Name.Label */\n.highlight .nn { color: #000000; background-color: #F8F8FF } /* Name.Namespace */\n.highlight .nx { color: #000000; background-color: #F8F8FF } /* Name.Other */\n.highlight .py { color: #000000; background-color: #F8F8FF } /* Name.Property */\n.highlight .nt { color: #000000; font-weight: bold; background-color: #F8F8FF } /* Name.Tag */\n.highlight .nv { color: #0086B3; background-color: #F8F8FF } /* Name.Variable */\n.highlight .ow { color: #000000; background-color: #F8F8FF } /* Operator.Word */\n.highlight .w { color: #000000; background-color: #F8F8FF } /* Text.Whitespace */\n.highlight .mf { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Float */\n.highlight .mh { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Hex */\n.highlight .mi { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Integer */\n.highlight .mo { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Oct */\n.highlight .sb { color: #D81745; background-color: #F8F8FF } /* Literal.String.Backtick */\n.highlight .sc { color: #D81745; background-color: #F8F8FF } /* Literal.String.Char */\n.highlight .sd { color: #D81745; background-color: #F8F8FF } /* Literal.String.Doc */\n.highlight .s2 { color: #D81745; background-color: #F8F8FF } /* Literal.String.Double */\n.highlight .se { color: #D81745; background-color: #F8F8FF } /* Literal.String.Escape */\n.highlight .sh { color: #D81745; background-color: #F8F8FF } /* Literal.String.Heredoc */\n.highlight .si { color: #D81745; background-color: #F8F8FF } /* Literal.String.Interpol */\n.highlight .sx { color: #D81745; background-color: #F8F8FF } /* Literal.String.Other */\n.highlight .sr { color: #D81745; background-color: #F8F8FF } /* Literal.String.Regex */\n.highlight .s1 { color: #D81745; background-color: #F8F8FF } /* Literal.String.Single */\n.highlight .ss { color: #D81745; background-color: #F8F8FF } /* Literal.String.Symbol */\n.highlight .bp { color: #000000; background-color: #F8F8FF } /* Name.Builtin.Pseudo */\n.highlight .vc { color: #0086B3; background-color: #F8F8FF } /* Name.Variable.Class */\n.highlight .vg { color: #0086B3; background-color: #F8F8FF } /* Name.Variable.Global */\n.highlight .vi { color: #0086B3; background-color: #F8F8FF } /* Name.Variable.Instance */\n.highlight .il { color: #1C9898; background-color: #F8F8FF } /* Literal.Number.Integer.Long */", + "/*\n Style variable overrides to match Alloverse style\n\n List of changeable variables:\n https://github.com/pmarsceill/just-the-docs/blob/master/_sass/support/_variables.scss \n*/\n\n\n// Variables\n\n$allo-light-blue: #EAF6FF;\n$allo-dark-blue: #CDEBFA;\n$allo-light-gray-30: #EFF1F6;\n$allo-dark-gray: #A9B6D1;\n$allo-dark-gray-30: #E5E9F1;\n\n$allo-text-color-dark: #0c2b48;\n$allo-text-color-dark-90: #24405A;\n\n$link-color: $blue-200;\n$nav-child-link-color: $blue-200;\n\n$body-text-color: $allo-text-color-dark;\n$body-heading-color: $allo-text-color-dark;\n\n$border-color: rgba(12, 43, 72, 0.1); // 10% of text-color-dark\n\n$sidebar-color: $allo-light-blue;\n\n// Hover background color for clickable items in the sidebar\n$feedback-color: $allo-dark-blue;" + ], + "names": [], + "mappings": ";AUAA,4EAA4E;AAE5E,yFACgF;AAEhF,wHAGG;AkBNH,OAAO,CAAC,iHAAI;AlBQZ,AAAA,IAAI,CAAC,EACH,WAAW,EAAE,IAAI,EAAE,OAAO,CAC1B,wBAAwB,EAAE,IAAI,EAAE,OAAO,EACxC;;AAED,yFACgF;AAEhF,yCAEG;AAEH,AAAA,IAAI,CAAC,EACH,MAAM,EAAE,CAAC,GACV;;AAED,oDAEG;AAEH,AAAA,IAAI,CAAC,EACH,OAAO,EAAE,KAAK,GACf;;AAED,gIAGG;AAEH,AAAA,EAAE,CAAC,EACD,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,QAAQ,GACjB;;AAED,iGACgF;AAEhF,qFAGG;AAEH,AAAA,EAAE,CAAC,EACD,UAAU,EAAE,WAAW,EAAE,OAAO,CAChC,MAAM,EAAE,CAAC,EAAE,OAAO,CAClB,QAAQ,EAAE,OAAO,EAAE,OAAO,EAC3B;;AAED,gIAGG;AAEH,AAAA,GAAG,CAAC,EACF,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAC1C,SAAS,EAAE,GAAG,EAAE,OAAO,EACxB;;AAED,qGACgF;AAEhF,2DAEG;AAEH,AAAA,CAAC,CAAC,EACA,gBAAgB,EAAE,WAAW,GAC9B;;AAED,2HAGG;AAEH,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA,EAAO,EACV,aAAa,EAAE,IAAI,EAAE,OAAO,CAC5B,eAAe,EAAE,SAAS,EAAE,OAAO,CACnC,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAC3C;;AAED,+DAEG;AAEH,AAAA,CAAC,EACD,MAAM,CAAC,EACL,WAAW,EAAE,MAAM,GACpB;;AAED,gIAGG;AAEH,AAAA,IAAI,EACJ,GAAG,EACH,IAAI,CAAC,EACH,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAC1C,SAAS,EAAE,GAAG,EAAE,OAAO,EACxB;;AAED,iDAEG;AAEH,AAAA,KAAK,CAAC,EACJ,SAAS,EAAE,GAAG,GACf;;AAED,uFAGG;AAEH,AAAA,GAAG,EACH,GAAG,CAAC,EACF,SAAS,EAAE,GAAG,EACd,WAAW,EAAE,CAAC,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,QAAQ,GACzB;;AAED,AAAA,GAAG,CAAC,EACF,MAAM,EAAE,OAAO,GAChB;;AAED,AAAA,GAAG,CAAC,EACF,GAAG,EAAE,MAAM,GACZ;;AAED,iGACgF;AAEhF,yDAEG;AAEH,AAAA,GAAG,CAAC,EACF,YAAY,EAAE,IAAI,GACnB;;AAED,sFACgF;AAEhF,6FAGG;AAEH,AAAA,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,CAAC,EACP,WAAW,EAAE,OAAO,EAAE,OAAO,CAC7B,SAAS,EAAE,IAAI,EAAE,OAAO,CACxB,WAAW,EAAE,IAAI,EAAE,OAAO,CAC1B,MAAM,EAAE,CAAC,EAAE,OAAO,EACnB;;AAED,6DAGG;AAEH,AAAA,MAAM,EACN,KAAK,CAAC,EAAE,OAAO,CACb,QAAQ,EAAE,OAAO,GAClB;;AAED,iIAGG;AAEH,AAAA,MAAM,EACN,MAAM,CAAC,EAAE,OAAO,CACd,cAAc,EAAE,IAAI,GACrB;;AAED,wEAEG;AAEH,AAAA,MAAM,GACN,AAAA,IAAC,CAAK,QAAQ,AAAb,IACD,AAAA,IAAC,CAAK,OAAO,AAAZ,IACD,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe,EACd,kBAAkB,EAAE,MAAM,GAC3B;;AAED,sDAEG;AAEH,AAAA,MAAM,EAAE,gBAAgB,GACxB,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,gBAAgB,GACjC,AAAA,IAAC,CAAK,OAAO,AAAZ,GAAe,gBAAgB,GAChC,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,gBAAgB,CAAC,EAChC,YAAY,EAAE,IAAI,EAClB,OAAO,EAAE,CAAC,GACX;;AAED,2DAEG;AAEH,AAAA,MAAM,CAAC,cAAc,GACrB,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe,cAAc,GAC9B,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAc,cAAc,GAC7B,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe,cAAc,CAAC,EAC7B,OAAO,EAAE,qBAAqB,GAC/B;;AAED,sCAEG;AAEH,AAAA,QAAQ,CAAC,EACP,OAAO,EAAE,qBAAqB,GAC/B;;AAED,mOAKG;AAEH,AAAA,MAAM,CAAC,EACL,UAAU,EAAE,UAAU,EAAE,OAAO,CAC/B,KAAK,EAAE,OAAO,EAAE,OAAO,CACvB,OAAO,EAAE,KAAK,EAAE,OAAO,CACvB,SAAS,EAAE,IAAI,EAAE,OAAO,CACxB,OAAO,EAAE,CAAC,EAAE,OAAO,CACnB,WAAW,EAAE,MAAM,EAAE,OAAO,EAC7B;;AAED,wEAEG;AAEH,AAAA,QAAQ,CAAC,EACP,cAAc,EAAE,QAAQ,GACzB;;AAED,uDAEG;AAEH,AAAA,QAAQ,CAAC,EACP,QAAQ,EAAE,IAAI,GACf;;AAED,8EAGG;CAEH,AAAA,AAAA,IAAC,CAAK,UAAU,AAAf,IACD,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAc,EACb,UAAU,EAAE,UAAU,EAAE,OAAO,CAC/B,OAAO,EAAE,CAAC,EAAE,OAAO,EACpB;;AAED,6EAEG;CAEH,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,yBAAyB,GAC1C,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,yBAAyB,CAAC,EACzC,MAAM,EAAE,IAAI,GACb;;AAED,kGAGG;CAEH,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe,EACd,kBAAkB,EAAE,SAAS,EAAE,OAAO,CACtC,cAAc,EAAE,IAAI,EAAE,OAAO,EAC9B;;AAED,8DAEG;CAEH,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,yBAAyB,CAAC,EACzC,kBAAkB,EAAE,IAAI,GACzB;;AAED,6HAGG;EAED,AAAF,0BAA4B,CAAC,EAC3B,kBAAkB,EAAE,MAAM,EAAE,OAAO,CACnC,IAAI,EAAE,OAAO,EAAE,OAAO,EACvB;;AAED,4FACgF;AAEhF,2DAEG;AAEH,AAAA,OAAO,CAAC,EACN,OAAO,EAAE,KAAK,GACf;;AAED,8CAEG;AAEH,AAAA,OAAO,CAAC,EACN,OAAO,EAAE,SAAS,GACnB;;AAED,qFACgF;AAEhF,yCAEG;AAEH,AAAA,QAAQ,CAAC,EACP,OAAO,EAAE,IAAI,GACd;;AAED,wCAEG;CAEH,AAAA,AAAA,MAAC,AAAA,EAAQ,EACP,OAAO,EAAE,IAAI,GACd;;ACvVD,AAAA,CAAC,CAAC,EACA,UAAU,EAAE,UAAU,GACvB;;EAEC,AAAF,SAAW,CAAC,EACV,KAAK,ETwBC,IAAI,ESvBV,UAAU,EToCC,OAAO,GSnCnB;;AAED,AAAA,IAAI,CAAC,EJWH,SAAS,ELJG,IAAI,CKIQ,UAAU,EITlC,eAAe,EAAE,MAAM,GACxB;;ANHG,MAAM,sBMAV,GAAA,AAAA,IAAI,CAAC,EJcD,SAAS,ELNC,IAAI,CKMU,UAAU,GIXrC,EAAA;;AAED,AAAA,IAAI,CAAC,EACH,WAAW,EThBM,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EACzE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,ESgB3C,SAAS,EAAE,OAAO,EAClB,WAAW,ETdM,GAAG,ESepB,KAAK,ETcO,OAAO,ESbnB,gBAAgB,ETUV,IAAI,GSTX;;AAED,AAAA,EAAE,EACF,EAAE,EACF,EAAE,EACF,GAAG,EACH,OAAO,EACP,UAAU,EACV,KAAK,EACL,GAAG,EACH,EAAE,EACF,IAAI,EACJ,QAAQ,EACR,QAAQ,CAAC,cAAc,CAAC,EACtB,UAAU,EAAE,CAAC,GACd;;AAED,AAAA,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,CAAC,EACD,UAAU,EAAE,CAAC,EACb,aAAa,EAAE,GAAG,EAClB,WAAW,EAAE,GAAG,EAChB,WAAW,ETzCc,IAAI,ES0C7B,KAAK,ETZO,OAAO,GSapB;;AAED,AAAA,CAAC,CAAC,EACA,UAAU,EAAE,GAAG,EACf,aAAa,EAAE,GAAG,GACnB;;AAED,AAAA,CAAC,CAAC,EACA,KAAK,ETdM,OAAO,ESelB,eAAe,EAAE,IAAI,GACtB;;AAED,AAAA,CAAC,CAAA,GAAK,EAAA,AAAA,KAAC,AAAA,GAAQ,EACb,eAAe,EAAE,IAAI,EACrB,gBAAgB,EAAE,yCAAqD,EACvE,iBAAiB,EAAE,QAAQ,EAC3B,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,OAAO,GASzB;;AAdD,AAOE,CAPD,CAAA,GAAK,EAAA,AAAA,KAAC,AAAA,GAOH,KAAK,CAAC,EACN,gBAAgB,EAAE,2EAGjB,EACD,eAAe,EAAE,OAAO,GACzB;;AAGH,AAAA,IAAI,CAAC,EACH,WAAW,ET5EM,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,ES6E7D,SAAS,EAAE,MAAM,EACjB,WAAW,ET5EM,GAAG,GS6ErB;;AAED,AAAA,MAAM,EACN,GAAG,CAAC,EACF,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,EAAE,CAAC,EACD,MAAM,EAAE,QAAQ,GACjB;;AAED,AAAA,GAAG,CAAC,EACF,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,IAAI,GACb;;AAED,AAAA,EAAE,CAAC,EACD,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,CAAC,EACV,MAAM,ETJA,IAAiB,CSIT,CAAC,EACf,gBAAgB,ET9DJ,OAAO,ES+DnB,MAAM,EAAE,CAAC,GACV;;ACvGD,AAAA,SAAS,CAAC,EACR,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,IAAI,EACf,gBAAgB,EVkCJ,OAAO,GUlBpB;;APVG,MAAM,mBOVV,GAAA,AAAA,SAAS,CAAC,EAON,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,KAAK,EACf,KAAK,EVwHM,KAAK,EUvHhB,MAAM,EAAE,IAAI,EACZ,cAAc,EAAE,MAAM,EACtB,YAAY,EV0GP,GAAG,CAAC,KAAK,CA/EJ,OAAO,EU1BjB,WAAW,EAAE,QAAQ,GAOxB,EAAA;;APVG,MAAM,qBOVV,GAAA,AAAA,SAAS,CAAC,EAiBN,KAAK,EAAE,iCAA2I,EAClJ,SAAS,EV8GD,KAAK,GU5GhB,EAAA;;APVG,MAAM,mBOYV,GAAA,AAAA,KAAK,CAAC,EAEF,QAAQ,EAAE,QAAQ,EAClB,SAAS,EV4GG,KAAK,EU3GjB,WAAW,EVuGA,KAAK,GU/FnB,EAAA;;APxBG,MAAM,qBOYV,GAAA,AAAA,KAAK,CAAC,EAQF,WAAW,EAAE,kCAEyB,GAEzC,EAAA;;AAED,AAAA,kBAAkB,CAAC,EPdjB,aAAa,EHiEA,IAAI,EGhEjB,YAAY,EHgEC,IAAI,EUjDjB,WAAW,EViDE,IAAI,EUhDjB,cAAc,EVgDD,IAAI,GU1ClB;;APnCG,MAAM,mBO0BV,GAAA,AAAA,kBAAkB,CAAC,EPVf,aAAa,EHsET,IAAiB,EGrErB,YAAY,EHqER,IAAiB,GUnDxB,EAAA;;APnCG,MAAM,mBO0BV,GAAA,AAAA,kBAAkB,CAAC,EAMf,WAAW,EVsDP,IAAiB,EUrDrB,cAAc,EVqDV,IAAiB,GUnDxB,EAAA;;AAED,AAAA,YAAY,CAAC,EACX,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,IAAI,EACb,gBAAgB,EVZJ,OAAO,GU6BpB;;APzDG,MAAM,mBOqCV,GAAA,AAAA,YAAY,CAAC,EAMT,OAAO,EAAE,IAAI,EACb,eAAe,EAAE,aAAa,EAC9B,MAAM,EV+EM,IAAI,EU9EhB,gBAAgB,EV1BZ,IAAI,EU2BR,aAAa,EV6DR,GAAG,CAAC,KAAK,CA/EJ,OAAO,GU4BpB,EAAA;;AApBD,AAaE,YAbU,AAaT,SAAS,CAAC,EACT,OAAO,EAAE,KAAK,GAKf;;APxDC,MAAM,mBOkDR,GAbF,AAaE,YAbU,AAaT,SAAS,CAAC,EAIP,OAAO,EAAE,IAAI,GAEhB,EAAA;;AAGH,AAAA,SAAS,EACT,YAAY,EACZ,YAAY,CAAC,EACX,KAAK,EAAE,IAAI,GAKZ;;APnEG,MAAM,qBO2DV,GAAA,AAAA,SAAS,EACT,YAAY,EACZ,YAAY,CAAC,EAIT,KAAK,EVqDG,KAAK,GUnDhB,EAAA;;AAED,AAAA,SAAS,CAAC,EACR,OAAO,EAAE,IAAI,GAad;;AAdD,AAGE,SAHO,AAGN,SAAS,CAAC,EACT,OAAO,EAAE,KAAK,GACf;;AP1EC,MAAM,mBOqEV,GAAA,AAAA,SAAS,CAAC,EAQN,OAAO,EAAE,KAAK,EACd,WAAW,EVUP,IAAiB,EUTrB,cAAc,EVFH,IAAI,EUGf,UAAU,EAAE,IAAI,EAChB,IAAI,EAAE,QAAQ,GAEjB,EAAA;;AAED,AAAA,YAAY,CAAC,EACX,OAAO,EAAE,IAAI,EACb,UAAU,EVqCI,IAAI,EUpClB,WAAW,EAAE,MAAM,GAOpB;;AP/FG,MAAM,mBOqFV,GAAA,AAAA,YAAY,CAAC,EAMT,MAAM,EViCM,IAAI,EUhChB,UAAU,EVgCE,IAAI,EU/BhB,aAAa,EVeR,GAAG,CAAC,KAAK,CA/EJ,OAAO,GUkEpB,EAAA;;AAED,AAAA,WAAW,CAAC,EPrFV,aAAa,EHiEA,IAAI,EGhEjB,YAAY,EHgEC,IAAI,EUsBjB,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EVpBL,OAAoB,EUqB1B,cAAc,EVrBR,OAAoB,EUsB1B,KAAK,EV/EO,OAAO,EKCnB,SAAS,ELlBG,IAAI,CKkBQ,UAAU,GKqFnC;;APhHG,MAAM,mBOiGV,GAAA,AAAA,WAAW,CAAC,EPjFR,aAAa,EHsET,IAAiB,EGrErB,YAAY,EHqER,IAAiB,GU0BxB,EAAA;;APhHG,MAAM,sBOiGV,GAAA,AAAA,WAAW,CAAC,ELnER,SAAS,ELpBC,IAAI,CKoBU,UAAU,EAClC,WAAW,ELnCY,IAAI,GUoH9B,EAAA;;APhHG,MAAM,mBOiGV,GAAA,AAAA,WAAW,CAAC,EAYR,WAAW,EV3BP,MAAmB,EU4BvB,cAAc,EV5BV,MAAmB,GU8B1B,EAAA;;AAGC,AAAA,UAAU,CAAC,EACT,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,gBAAgB,EAAE,mFAAU,EAC5B,iBAAiB,EAAE,SAAS,EAC5B,mBAAmB,EAAE,WAAW,EAChC,eAAe,EAAE,OAAO,GACzB;;AAGH,AAAA,YAAY,CAAC,EACX,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,OAAO,EVnDM,IAAI,EUoDjB,WAAW,EAAE,MAAM,GACpB;;APlIG,MAAM,mBOqIR,GAAA,AAAA,YAAY,CAAC,YAAY,CAAC,EACxB,OAAO,EAAE,IAAI,GACd,EAAA;;AAGH,AAAA,WAAW,CAAC,KAAK,CAAC,EAChB,gBAAgB,EAAE,8FAKjB,GACF;;AAED,AAAA,YAAY,CAAC,KAAK,CAAC,EACjB,gBAAgB,EAAE,kEAIjB,GACF;;AAID,AAAA,IAAI,CAAC,EACH,QAAQ,EAAE,QAAQ,EAClB,cAAc,EVrEP,IAAiB,EUsExB,UAAU,EAAE,MAAM,GAMnB;;APtKG,MAAM,mBO6JV,GAAA,AAAA,IAAI,CAAC,EAMD,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,CAAC,GAEpB,EAAA;;AAID,AAAA,YAAY,CAAC,EP9JX,aAAa,EHiEA,IAAI,EGhEjB,YAAY,EHgEC,IAAI,EU+FjB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EACP,WAAW,EVlGE,IAAI,EUmGjB,cAAc,EVnGD,IAAI,EUoGjB,KAAK,EV3JO,OAAO,EK3BnB,SAAS,ELUG,IAAI,CKVQ,UAAU,GK6LnC;;APxLG,MAAM,mBO0KV,GAAA,AAAA,YAAY,CAAC,EP1JT,aAAa,EHsET,IAAiB,EGrErB,YAAY,EHqER,IAAiB,GUkGxB,EAAA;;APxLG,MAAM,sBO0KV,GAAA,AAAA,YAAY,CAAC,EL5KT,SAAS,ELQC,IAAI,CKRU,UAAU,GK0LrC,EAAA;;APxLG,MAAM,mBO0KV,GAAA,AAAA,YAAY,CAAC,EAWT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,GAAG,GAEpB,EAAA;;AAED,AAAA,KAAK,CAAC,EACJ,KAAK,EVtGC,MAAmB,EUuGzB,MAAM,EVvGA,MAAmB,EUwGzB,KAAK,EV5JM,OAAO,GU6JnB;;ACrMD,AAAA,aAAa,CAAC,EACZ,WAAW,EXCS,GAAG,GW6NxB;;AA/ND,AAGE,aAHW,CAGX,EAAE,EAHJ,aAAa,CAIX,EAAE,EAJJ,aAAa,CAKX,EAAE,EALJ,aAAa,CAMX,GAAG,EANL,aAAa,CAOX,OAAO,EAPT,aAAa,CAQX,UAAU,EARZ,aAAa,CASX,cAAc,CAAC,EACb,UAAU,EAAE,KAAK,GAClB;;AAXH,AAaE,aAbW,CAaX,CAAC,CAAC,EACA,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAE,MAAM,GACpB;;AAjBH,AAmBE,aAnBW,CAmBX,EAAE,EAnBJ,aAAa,CAoBX,EAAE,CAAC,EACD,YAAY,EAAE,KAAK,GACpB;;AAtBH,AAyBI,aAzBS,CAwBX,EAAE,CACA,UAAU,CAAC,EACT,UAAU,EX8DR,OAAoB,GW7DvB;;AA3BL,AA8BE,aA9BW,CA8BX,EAAE,CAAC,EACD,eAAe,EAAE,IAAI,EACrB,aAAa,EAAE,YAAY,GA8B5B;;AA9DH,AAkCI,aAlCS,CA8BX,EAAE,GAIE,EAAE,CAAC,EACH,QAAQ,EAAE,QAAQ,GA0BnB;;AA7DL,AAqCM,aArCO,CA8BX,EAAE,GAIE,EAAE,EAGC,MAAM,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,KAAK,EACV,IAAI,EAAE,MAAM,EACZ,KAAK,EXZC,OAAO,EWab,OAAO,EAAE,qBAAqB,EAC9B,iBAAiB,EAAE,YAAY,ENjCrC,SAAS,ELGG,IAAI,CKHQ,UAAU,GMuC7B;;AR1CH,MAAM,sBQ8BJ,GArCN,AAqCM,aArCO,CA8BX,EAAE,GAIE,EAAE,EAGC,MAAM,CAAC,ENxBZ,SAAS,ELCC,IAAI,CKDU,UAAU,GMoC/B,EAAA;;AR1CH,MAAM,sBQ8BJ,GArCN,AAqCM,aArCO,CA8BX,EAAE,GAIE,EAAE,EAGC,MAAM,CAAC,EAUN,GAAG,EAAE,MAAM,GAEd,EAAA;;AAjDP,AAmDM,aAnDO,CA8BX,EAAE,GAIE,EAAE,CAiBF,EAAE,CAAC,EACD,aAAa,EAAE,WAAW,GAQ3B;;AA5DP,AAuDU,aAvDG,CA8BX,EAAE,GAIE,EAAE,CAiBF,EAAE,CAGA,EAAE,EACG,MAAM,CAAC,EACR,OAAO,EAAE,iCAAiC,EAC1C,iBAAiB,EAAE,WAAW,GAC/B;;AA1DX,AAgEE,aAhEW,CAgEX,EAAE,CAAC,EACD,UAAU,EAAE,IAAI,GAUjB;;AA3EH,AAoEM,aApEO,CAgEX,EAAE,GAGE,EAAE,EACC,MAAM,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EX1CC,OAAO,EW2Cb,OAAO,EAAE,IAAI,GACd;;AAzEP,AA6EE,aA7EW,CA6EX,UAAU,CAAC,EACT,YAAY,EAAE,CAAC,GAChB;;AA/EH,AAiFE,aAjFW,CAiFX,eAAe,CAAC,EACd,OAAO,EAAE,IAAI,EACb,WAAW,EAAE,MAAM,GAKpB;;AAxFH,AAqFI,aArFS,CAiFX,eAAe,EAIV,MAAM,CAAC,EACR,OAAO,EAAE,EAAE,GACZ;;AAvFL,AA0FE,aA1FW,CA0FX,wBAAwB,CAAC,EACvB,YAAY,EAAE,KAAK,GACpB;;AA5FH,AA8FE,aA9FW,CA8FX,EAAE,GAAG,CAAC,CAAC,EACL,UAAU,EAAE,CAAC,GACd;;AAhGH,AAkGE,aAlGW,CAkGX,EAAE,CAAC,aAAa,CAAC,EACf,UAAU,EAAE,KAAK,GAClB;;AApGH,AAsGE,aAtGW,CAsGX,EAAE,CAAC,EACD,OAAO,EAAE,IAAI,EACb,aAAa,EAAE,eAAe,GAC/B;;AAzGH,AA2GE,aA3GW,CA2GX,EAAE,EA3GJ,aAAa,CA4GX,EAAE,CAAC,EACD,MAAM,EAAE,QAAQ,GACjB;;AA9GH,AAgHE,aAhHW,CAgHX,EAAE,CAAC,EACD,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,KAAK,GAIlB;;AAvHH,AAoHI,aApHS,CAgHX,EAAE,EAIG,KAAK,CAAC,EACP,OAAO,EAAE,GAAG,GACb;;AAtHL,AAyHE,aAzHW,CAyHX,EAAE,CAAC,EACD,WAAW,EAAE,CAAC,EACd,aAAa,EAAE,CAAC,EAChB,WAAW,EAAE,GAAG,GAsBjB;;AAlJH,AA8IM,aA9IO,CAyHX,EAAE,CAIA,UAAU,CAiBN,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAKA,GAAG,CAgBC,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAMA,EAAE,CAeE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAOA,EAAE,CAcE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAQA,EAAE,CAaE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CASA,EAAE,CAYE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAUA,EAAE,CAWE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAWA,EAAE,CAUE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAYA,EAAE,CASE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAaA,EAAE,CAQE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAcA,EAAE,CAOE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAeA,EAAE,CAME,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAgBA,CAAC,CAKG,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAiBA,GAAG,CAIC,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAkBA,KAAK,CAGD,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAmBA,EAAE,CAEE,WAAW,EA9InB,aAAa,CAyHX,EAAE,CAoBA,cAAc,CACV,WAAW,CAAC,EACZ,UAAU,EAAE,CAAC,GACd;;AAhJP,AAwJM,aAxJO,CAoJX,EAAE,CAGA,EAAE,CAAC,WAAW,CACZ,EAAE,CAAC,WAAW,EAxJpB,aAAa,CAoJX,EAAE,CAGA,EAAE,CAAC,WAAW,CAEZ,EAAE,CAAC,SAAU,CAAA,CAAC,GAzJpB,aAAa,CAqJX,EAAE,CAEA,EAAE,CAAC,WAAW,CACZ,EAAE,CAAC,WAAW,EAxJpB,aAAa,CAqJX,EAAE,CAEA,EAAE,CAAC,WAAW,CAEZ,EAAE,CAAC,SAAU,CAAA,CAAC,GAzJpB,aAAa,CAsJX,EAAE,CACA,EAAE,CAAC,WAAW,CACZ,EAAE,CAAC,WAAW,EAxJpB,aAAa,CAsJX,EAAE,CACA,EAAE,CAAC,WAAW,CAEZ,EAAE,CAAC,SAAU,CAAA,CAAC,EAAE,EACd,UAAU,EAAE,CAAC,GACd;;AA3JP,AA+JE,aA/JW,CA+JX,eAAe,CAAC,EACd,QAAQ,EAAE,QAAQ,EAClB,KAAK,EX7EM,KAAI,EW8Ef,KAAK,EXtED,MAAmB,EWuEvB,MAAM,EAAE,IAAI,EACZ,aAAa,EX5ET,OAAoB,EW6ExB,YAAY,EX7ER,OAAoB,EW8ExB,QAAQ,EAAE,OAAO,GAclB;;AR7KC,MAAM,mBQwJR,GA/JF,AA+JE,aA/JW,CA+JX,eAAe,CAAC,EAUZ,KAAK,EAAE,IAAI,EACX,IAAI,EX9EF,OAAmB,GWwFxB,EAAA;;AApLH,AA6KI,aA7KS,CA+JX,eAAe,CAcb,GAAG,CAAC,EACF,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,KAAK,EXzIE,OAAO,EW0Id,UAAU,EAAE,MAAM,GACnB;;AAnLL,AA6LI,aA7LS,CAsLX,eAAe,CAAC,KAAK,CAOnB,GAAG,EA7LP,aAAa,CAuLX,EAAE,CAAC,KAAK,GAAG,eAAe,CAMxB,GAAG,EA7LP,aAAa,CAwLX,EAAE,CAAC,KAAK,GAAG,eAAe,CAKxB,GAAG,EA7LP,aAAa,CAyLX,EAAE,CAAC,KAAK,GAAG,eAAe,CAIxB,GAAG,EA7LP,aAAa,CA0LX,EAAE,CAAC,KAAK,GAAG,eAAe,CAGxB,GAAG,EA7LP,aAAa,CA2LX,EAAE,CAAC,KAAK,GAAG,eAAe,CAExB,GAAG,EA7LP,aAAa,CA4LX,EAAE,CAAC,KAAK,GAAG,eAAe,CACxB,GAAG,CAAC,EACF,UAAU,EAAE,OAAO,GACpB;;AA/LL,AAkME,aAlMW,CAkMX,OAAO,CAAC,EACN,MAAM,EAAE,OAAO,GAChB;;AApMH,AAsME,aAtMW,CAsMX,EAAE,EAtMJ,aAAa,CAuMX,EAAE,EAvMJ,aAAa,CAwMX,EAAE,EAxMJ,aAAa,CAyMX,EAAE,EAzMJ,aAAa,CA0MX,EAAE,EA1MJ,aAAa,CA2MX,EAAE,CAAC,EACD,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,KAAK,EACjB,aAAa,EAAE,MAAM,GAgBtB;;AA9NH,AAgNI,aAhNS,CAsMX,EAAE,CAUE,WAAW,EAhNjB,aAAa,CAuMX,EAAE,CASE,WAAW,EAhNjB,aAAa,CAwMX,EAAE,CAQE,WAAW,EAhNjB,aAAa,CAyMX,EAAE,CAOE,WAAW,EAhNjB,aAAa,CA0MX,EAAE,CAME,WAAW,EAhNjB,aAAa,CA2MX,EAAE,CAKE,WAAW,CAAC,EACZ,UAAU,EXxHR,MAAmB,GWyHtB;;AAlNL,AAoNI,aApNS,CAsMX,EAAE,GAcE,KAAK,EApNX,aAAa,CAsMX,EAAE,GAeE,cAAc,EArNpB,aAAa,CAsMX,EAAE,GAgBE,aAAa,EAtNnB,aAAa,CAsMX,EAAE,GAiBE,kBAAkB,EAvNxB,aAAa,CAuMX,EAAE,GAaE,KAAK,EApNX,aAAa,CAuMX,EAAE,GAcE,cAAc,EArNpB,aAAa,CAuMX,EAAE,GAeE,aAAa,EAtNnB,aAAa,CAuMX,EAAE,GAgBE,kBAAkB,EAvNxB,aAAa,CAwMX,EAAE,GAYE,KAAK,EApNX,aAAa,CAwMX,EAAE,GAaE,cAAc,EArNpB,aAAa,CAwMX,EAAE,GAcE,aAAa,EAtNnB,aAAa,CAwMX,EAAE,GAeE,kBAAkB,EAvNxB,aAAa,CAyMX,EAAE,GAWE,KAAK,EApNX,aAAa,CAyMX,EAAE,GAYE,cAAc,EArNpB,aAAa,CAyMX,EAAE,GAaE,aAAa,EAtNnB,aAAa,CAyMX,EAAE,GAcE,kBAAkB,EAvNxB,aAAa,CA0MX,EAAE,GAUE,KAAK,EApNX,aAAa,CA0MX,EAAE,GAWE,cAAc,EArNpB,aAAa,CA0MX,EAAE,GAYE,aAAa,EAtNnB,aAAa,CA0MX,EAAE,GAaE,kBAAkB,EAvNxB,aAAa,CA2MX,EAAE,GASE,KAAK,EApNX,aAAa,CA2MX,EAAE,GAUE,cAAc,EArNpB,aAAa,CA2MX,EAAE,GAWE,aAAa,EAtNnB,aAAa,CA2MX,EAAE,GAYE,kBAAkB,CAAC,EACnB,UAAU,EAAE,GAAG,GAChB;;AAzNL,AA2NI,aA3NS,CAsMX,EAAE,GAqBE,CAAC,EA3NP,aAAa,CAuMX,EAAE,GAoBE,CAAC,EA3NP,aAAa,CAwMX,EAAE,GAmBE,CAAC,EA3NP,aAAa,CAyMX,EAAE,GAkBE,CAAC,EA3NP,aAAa,CA0MX,EAAE,GAiBE,CAAC,EA3NP,aAAa,CA2MX,EAAE,GAgBE,CAAC,CAAC,EACF,UAAU,EAAE,CAAC,GACd;;AC/NL,AAAA,SAAS,CAAC,EACR,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,CAAC,EACb,aAAa,EAAE,CAAC,EAChB,UAAU,EAAE,IAAI,GA0HjB;;AA9HD,AAME,SANO,CAMP,cAAc,CAAC,EPcf,SAAS,ELJG,IAAI,CKIQ,UAAU,EOZhC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,CAAC,GAoHV;;ATpHC,MAAM,sBSHR,GANF,AAME,SANO,CAMP,cAAc,CAAC,EPiBb,SAAS,ELNC,IAAI,CKMU,UAAU,GOsGnC,EAAA;;ATpHC,MAAM,mBSHR,GANF,AAME,SANO,CAMP,cAAc,CAAC,EPMf,SAAS,ELGG,IAAI,CKHQ,UAAU,GOiHjC,EAAA;;ATpHC,MAAM,6CSHR,GANF,AAME,SANO,CAMP,cAAc,CAAC,EPSb,SAAS,ELCC,IAAI,CKDU,UAAU,GO8GnC,EAAA;;AA7HH,AAeI,SAfK,CAMP,cAAc,CASZ,cAAc,CAAC,EACb,OAAO,EAAE,KAAK,EACd,UAAU,EZgFR,IAAiB,EY/EnB,WAAW,EZwET,OAAoB,EYvEtB,cAAc,EZuEZ,OAAoB,EYtEtB,WAAW,EAAC,MAAC,EAEX,aAAa,EZ2Eb,IAAiB,EY1EjB,YAAY,EZ+DL,IAAI,GY/Bd;;AT9CD,MAAM,mBSMN,GAfJ,AAeI,SAfK,CAMP,cAAc,CASZ,cAAc,CAAC,EAeX,UAAU,EZiEV,IAAiB,EYhEjB,WAAW,EAAC,MAAC,EAEX,aAAa,EZ8Df,IAAiB,EY7Df,YAAY,EZ6Dd,IAAiB,GYxCpB,EAAA;;AAvDL,AAyCM,SAzCG,CAMP,cAAc,CASZ,cAAc,AA0BX,OAAO,CAAC,EACP,WAAW,EAAE,GAAG,EAChB,eAAe,EAAE,IAAI,GACtB;;AA5CP,AA8CM,SA9CG,CAMP,cAAc,CASZ,cAAc,CA+BV,KAAK,EA9Cb,SAAS,CAMP,cAAc,CASZ,cAAc,AAgCX,OAAO,CAAC,EACP,gBAAgB,EAAE,8FAKjB,GACF;;AAtDP,AAyDI,SAzDK,CAMP,cAAc,CAmDZ,kBAAkB,CAAC,EACjB,QAAQ,EAAE,QAAQ,EAEhB,KAAK,EAAE,CAAC,EAEV,KAAK,EZmCH,IAAiB,EYlCnB,MAAM,EZkCJ,IAAiB,EYjCnB,WAAW,EAAC,OAAC,EACb,aAAa,EAAC,OAAC,EACf,cAAc,EAAC,OAAC,EAChB,YAAY,EAAC,OAAC,EACd,KAAK,EZ1BE,OAAO,GYkDf;;ATnFD,MAAM,mBSgDN,GAzDJ,AAyDI,SAzDK,CAMP,cAAc,CAmDZ,kBAAkB,CAAC,EAcf,KAAK,EZwBL,IAAiB,EYvBjB,MAAM,EZuBN,IAAiB,EYtBjB,WAAW,EAAC,MAAC,EACb,aAAa,EAAC,MAAC,EACf,cAAc,EAAC,MAAC,EAChB,YAAY,EAAC,MAAC,GAgBjB,EAAA;;AA5FL,AA+EM,SA/EG,CAMP,cAAc,CAmDZ,kBAAkB,CAsBd,KAAK,CAAC,EACN,gBAAgB,EAAE,kEAIjB,GACF;;AArFP,AAwFQ,SAxFC,CAMP,cAAc,CAmDZ,kBAAkB,CA+Bd,GAAG,CAAC,EACF,SAAS,EAAE,aAAa,GACzB;;AA1FT,AA8FI,SA9FK,CAMP,cAAc,GAwFV,SAAS,CAAC,EACV,OAAO,EAAE,IAAI,EACb,YAAY,EZJV,OAAoB,EYKtB,UAAU,EAAE,IAAI,GAajB;;AA9GL,AAmGM,SAnGG,CAMP,cAAc,GAwFV,SAAS,CAKT,cAAc,CAAC,EACb,QAAQ,EAAE,QAAQ,GASnB;;AA7GP,AAsGQ,SAtGC,CAMP,cAAc,GAwFV,SAAS,CAKT,cAAc,CAGZ,cAAc,CAAC,EACb,KAAK,EZvED,OAAO,GYwEZ;;AAxGT,AA0GQ,SA1GC,CAMP,cAAc,GAwFV,SAAS,CAKT,cAAc,CAOZ,kBAAkB,CAAC,EACjB,KAAK,EZ3ED,OAAO,GY4EZ;;AA5GT,AAiHM,SAjHG,CAMP,cAAc,AA0GX,OAAO,GACJ,kBAAkB,CAAC,GAAG,CAAC,EAErB,SAAS,EAAE,cAAc,GAI5B;;AAvHP,AAyHM,SAzHG,CAMP,cAAc,AA0GX,OAAO,GASJ,SAAS,CAAC,EACV,OAAO,EAAE,KAAK,GACf;;AAKP,AAAA,aAAa,CAAC,EACZ,WAAW,EZtCL,MAAmB,EYuCzB,aAAa,EZ5CA,IAAI,EY6CjB,cAAc,EZxCR,MAAmB,EYyCzB,YAAY,EZ9CC,IAAI,EY+CjB,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,GAAG,EACf,cAAc,EAAE,SAAS,EACzB,aAAa,EZnBN,GAAG,CAAC,KAAK,CA/EJ,OAAO,EKlCnB,SAAS,ELUG,IAAI,CKVQ,UAAU,GOiJnC;;AT5IG,MAAM,sBSuHV,GAAA,AAAA,aAAa,CAAC,EPzHV,SAAS,ELQC,IAAI,CKRU,UAAU,GO8IrC,EAAA;;AT5IG,MAAM,mBSuHV,GAAA,AAAA,aAAa,CAAC,EAYV,aAAa,EZ7CT,IAAiB,EY8CrB,YAAY,EZ9CR,IAAiB,EY+CrB,UAAU,EZxDC,IAAI,EYyDf,UAAU,EAAE,KAAK,GAMpB,CArBD,AAiBI,aAjBS,CAiBP,WAAW,CAAC,EACZ,UAAU,EAAE,CAAC,GACd,EAEJ;;AAID,AAAA,QAAQ,CAAC,EACP,MAAM,EAAE,IAAI,EACZ,UAAU,EAAE,IAAI,EPvJhB,SAAS,ELUG,IAAI,CKVQ,UAAU,GO4KnC;;ATvKG,MAAM,sBSgJV,GAAA,AAAA,QAAQ,CAAC,EPlJL,SAAS,ELQC,IAAI,CKRU,UAAU,GOyKrC,EAAA;;AAvBD,AAKE,QALM,CAKN,aAAa,CAAC,EACZ,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,IAAI,GACjB;;AAXH,AAaE,QAbM,CAaN,kBAAkB,CAAC,EACjB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,GACV;;ATlKC,MAAM,mBSgJV,GAAA,AAAA,QAAQ,CAAC,EAqBL,aAAa,EZxFF,IAAI,GY0FlB,EAAA;;ATvKG,MAAM,mBS2KV,GAAA,AAAA,eAAe,CAAC,EAEZ,UAAU,EZhGC,KAAI,GYkGlB,EAAA;;AAED,AAAA,oBAAoB,CAAC,EACnB,YAAY,EAAE,CAAC,EACf,aAAa,EZhGP,OAAoB,EYiG1B,UAAU,EAAE,IAAI,GACjB;;AAED,AAAA,yBAAyB,CAAC,EACxB,OAAO,EAAE,UAAU,EP7LnB,SAAS,ELUG,IAAI,CKVQ,UAAU,GOiNnC;;AT5MG,MAAM,sBSuLV,GAAA,AAAA,yBAAyB,CAAC,EPzLtB,SAAS,ELQC,IAAI,CKRU,UAAU,GO8MrC,EAAA;;AArBD,AAIE,yBAJuB,EAIpB,MAAM,CAAC,EACR,OAAO,EAAE,IAAI,GACd;;AANH,AAQE,yBARuB,EAQpB,KAAK,CAAC,EACP,OAAO,EAAE,YAAY,EACrB,YAAY,EZ/GR,MAAmB,EYgHvB,WAAW,EZhHP,MAAmB,EYiHvB,KAAK,EZ7KK,OAAO,EY8KjB,OAAO,EAAE,GAAG,GACb;;AAdH,AAiBI,yBAjBqB,CAgBrB,UAAU,EACP,KAAK,CAAC,EACP,OAAO,EAAE,EAAE,GACZ;;ACnNL,AAAA,EAAE,EACF,WAAW,CAAC,ERqDV,SAAS,ELlCG,IAAI,CKkCQ,UAAU,EAClC,WAAW,ELlDc,IAAI,EaF7B,WAAW,EAAE,GAAG,GACjB;;AVKG,MAAM,sBUTV,GAAA,AAAA,EAAE,EACF,WAAW,CAAC,ERyDR,SAAS,ELrCC,IAAI,CKqCU,UAAU,GQtDrC,EAAA;;AAED,AAAA,EAAE,EACF,UAAU,CAAC,ER6BT,SAAS,ELlBG,IAAI,CKkBQ,UAAU,GQ3BnC;;AVAG,MAAM,sBUHV,GAAA,AAAA,EAAE,EACF,UAAU,CAAC,ERgCP,SAAS,ELpBC,IAAI,CKoBU,UAAU,EAClC,WAAW,ELnCY,IAAI,GaI9B,EAAA;;AAED,AAAA,EAAE,EACF,WAAW,CAAC,ERgBV,SAAS,ELXG,IAAI,CKWQ,UAAU,GQdnC;;AVLG,MAAM,sBUEV,GAAA,AAAA,EAAE,EACF,WAAW,CAAC,ERmBR,SAAS,ELbC,IAAI,CKaU,UAAU,GQjBrC,EAAA;;AAED,AAAA,EAAE,EACF,WAAW,CAAC,ERbV,SAAS,ELUG,IAAI,CKVQ,UAAU,EQelC,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,SAAS,EACzB,cAAc,EAAE,KAAK,GACtB;;AVbG,MAAM,sBUOV,GAAA,AAAA,EAAE,EACF,WAAW,CAAC,ERVR,SAAS,ELQC,IAAI,CKRU,UAAU,GQerC,EAAA;;AAED,AAAA,EAAE,CAAC,IAAI,CAAC,EACN,cAAc,EAAE,IAAI,GACrB;;AAED,AAAA,EAAE,EACF,aAAa,CAAC,ERjBZ,SAAS,ELGG,IAAI,CKHQ,UAAU,EQmBlC,KAAK,EbEO,OAAO,GaDpB;;AVvBG,MAAM,sBUmBV,GAAA,AAAA,EAAE,EACF,aAAa,CAAC,ERdV,SAAS,ELCC,IAAI,CKDU,UAAU,GQiBrC,EAAA;;AAED,AAAA,EAAE,EACF,UAAU,CAAC,ER/BT,SAAS,ELUG,IAAI,CKVQ,UAAU,EQiClC,KAAK,EbJO,OAAO,GaKpB;;AV7BG,MAAM,sBUyBV,GAAA,AAAA,EAAE,EACF,UAAU,CAAC,ER5BP,SAAS,ELQC,IAAI,CKRU,UAAU,GQ+BrC,EAAA;;AAED,AAAA,WAAW,CAAC,ERpCV,SAAS,ELUG,IAAI,CKVQ,UAAU,GQsCnC;;AVjCG,MAAM,sBU+BV,GAAA,AAAA,WAAW,CAAC,ERjCR,SAAS,ELQC,IAAI,CKRU,UAAU,GQmCrC,EAAA;;AAED,AAAA,UAAU,CAAC,EACT,WAAW,Eb5CM,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,Ca4C9B,UAAU,GAC1C;;AAED,AAAA,UAAU,CAAC,EACT,UAAU,EAAE,eAAe,GAC5B;;AAED,AAAA,YAAY,CAAC,EACX,UAAU,EAAE,iBAAiB,GAC9B;;AAED,AAAA,WAAW,CAAC,EACV,UAAU,EAAE,gBAAgB,GAC7B;;AC3DD,AAAA,MAAM,EACN,WAAW,CAAC,EACV,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,YAAY,EdqFN,MAAmB,EcpFzB,WAAW,EdoFL,MAAmB,EcnFzB,KAAK,EdqBC,IAAI,EcpBV,cAAc,EAAE,SAAS,EACzB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EdqCP,OAAO,EK5ChB,SAAS,ELUG,IAAI,CKVQ,UAAU,ESSlC,aAAa,EAAE,IAAI,GACpB;;AXLG,MAAM,sBWVV,GAAA,AAAA,MAAM,EACN,WAAW,CAAC,ETOR,SAAS,ELQC,IAAI,CKRU,UAAU,GSOrC,EAAA;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EdqCN,OAAO,GcpClB;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EdsBL,OAAO,GcrBnB;;AAED,AAAA,UAAU,CAAC,EACT,gBAAgB,EduCR,OAAO,GctChB;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EdIO,OAAO,EcHnB,gBAAgB,Ed6BL,OAAO,Gc5BnB;;AC/BD,AAAA,IAAI,CAAC,EACH,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,KAAK,EAClB,aAAa,EAAE,GAAG,EAClB,cAAc,EAAE,KAAK,EACrB,YAAY,EAAE,GAAG,EACjB,MAAM,EAAE,CAAC,EACT,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,GAAG,EAChB,WAAW,EAAE,GAAG,EAChB,KAAK,Ef8BM,OAAO,Ee7BlB,eAAe,EAAE,IAAI,EACrB,cAAc,EAAE,QAAQ,EACxB,MAAM,EAAE,OAAO,EACf,gBAAgB,EfgEE,OAAO,Ee/DzB,YAAY,EAAE,CAAC,EACf,aAAa,EfoGC,GAAG,EenGjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EACzE,UAAU,EAAE,IAAI,GAiDjB;;AArED,AAsBE,IAtBE,CAsBA,KAAK,CAAC,EACN,eAAe,EAAE,IAAI,EACrB,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAM,qBAAI,GAChC;;AA1BH,AA4BE,IA5BE,CA4BA,KAAK,CAAC,KAAK,EA5Bf,IAAI,AA6BD,SAAS,CAAC,KAAK,CAAC,EACf,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAM,qBAAI,GAChC;;AA/BH,AAiCE,IAjCE,CAiCA,KAAK,EAjCT,IAAI,AAkCD,uBAAuB,CAAC,EACvB,KAAK,EfOI,OAAO,GeNjB;;AApCH,AAsCE,IAtCE,CAsCA,KAAK,EAtCT,IAAI,CAuCA,MAAM,EAvCV,IAAI,AAwCD,uBAAuB,EAxC1B,IAAI,AAyCD,wBAAwB,CAAC,EACxB,eAAe,EAAE,IAAI,EACrB,gBAAgB,EfqCA,OAAO,GepCxB;;AA5CH,AA8CE,IA9CE,CA8CA,MAAM,EA9CV,IAAI,AA+CD,SAAS,EA/CZ,IAAI,AAgDD,wBAAwB,CAAC,EACxB,gBAAgB,Ef+BA,OAAO,Ee9BvB,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AApDH,AAsDE,IAtDE,AAsDD,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EAAS,OAAO,GACjC;;AAxDH,AA4DI,IA5DA,CA0DA,QAAQ,EA1DZ,IAAI,CA0DA,QAAQ,CAGN,KAAK,EA7DX,IAAI,AA2DD,SAAS,EA3DZ,IAAI,AA2DD,SAAS,CAEN,KAAK,CAAC,EACN,KAAK,EAAE,wBAAwB,EAC/B,MAAM,EAAE,OAAO,EACf,gBAAgB,EAAE,wBAAwB,EAC1C,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,IAAI,GACjB;;AAIL,AAAA,YAAY,CAAC,EACX,KAAK,Ef9BM,OAAO,Ee+BlB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CflCf,OAAO,GewDpB;;AAzBD,AAKE,YALU,CAKR,KAAK,EALT,YAAY,CAMR,MAAM,EANV,YAAY,AAOT,uBAAuB,EAP1B,YAAY,AAQT,wBAAwB,CAAC,EACxB,KAAK,EftCI,OAAO,EeuChB,eAAe,EAAE,IAAI,EACrB,gBAAgB,EAAE,WAAW,EAC7B,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,Cf3CjB,OAAO,Ge4ClB;;AAbH,AAeE,YAfU,CAeR,KAAK,CAAC,EACN,eAAe,EAAE,IAAI,EACrB,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CfzDjB,OAAO,EeyDyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAM,qBAAI,GAC9D;;AAnBH,AAqBE,YArBU,CAqBR,KAAK,CAAC,KAAK,EArBf,YAAY,AAsBT,SAAS,CAAC,KAAK,CAAC,EACf,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,Cf9DjB,OAAO,Ge+DlB;;AAGH,AAAA,YAAY,CAAC,EXpGX,KAAK,EJ+BC,IAAI,EI9BV,gBAAgB,EJ4CL,OAAO,EI3ClB,gBAAgB,EAAE,iCAAkD,EACpE,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GWmG1E;;AAFD,AX/FE,YW+FU,CX/FR,KAAK,EW+FT,YAAY,AX9FT,uBAAuB,CAAC,EACvB,KAAK,EJwBD,IAAI,EIvBR,gBAAgB,EJqCP,OAAO,EIpChB,gBAAgB,EAAE,iCAAoD,GACvE;;AW0FH,AXxFE,YWwFU,CXxFR,MAAM,EWwFV,YAAY,AXvFT,SAAS,EWuFZ,YAAY,AXtFT,wBAAwB,CAAC,EACxB,gBAAgB,EJ8BP,OAAO,EI7BhB,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AWkFH,AXhFE,YWgFU,AXhFT,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EJwBP,OAAO,GIvBjB;;AWkFH,AAAA,WAAW,CAAC,EXxGV,KAAK,EJ+BC,IAAI,EI9BV,gBAAgB,EJ4CL,OAAO,EI3ClB,gBAAgB,EAAE,iCAAkD,EACpE,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GWuG1E;;AAFD,AXnGE,WWmGS,CXnGP,KAAK,EWmGT,WAAW,AXlGR,uBAAuB,CAAC,EACvB,KAAK,EJwBD,IAAI,EIvBR,gBAAgB,EJqCP,OAAO,EIpChB,gBAAgB,EAAE,iCAAoD,GACvE;;AW8FH,AX5FE,WW4FS,CX5FP,MAAM,EW4FV,WAAW,AX3FR,SAAS,EW2FZ,WAAW,AX1FR,wBAAwB,CAAC,EACxB,gBAAgB,EJ8BP,OAAO,EI7BhB,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AWsFH,AXpFE,WWoFS,AXpFR,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EJwBP,OAAO,GIvBjB;;AWsFH,AAAA,SAAS,CAAC,EX5GR,KAAK,EJ+BC,IAAI,EI9BV,gBAAgB,EJgDP,OAAO,EI/ChB,gBAAgB,EAAE,iCAAkD,EACpE,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GW2G1E;;AAFD,AXvGE,SWuGO,CXvGL,KAAK,EWuGT,SAAS,AXtGN,uBAAuB,CAAC,EACvB,KAAK,EJwBD,IAAI,EIvBR,gBAAgB,EJyCT,OAAO,EIxCd,gBAAgB,EAAE,iCAAoD,GACvE;;AWkGH,AXhGE,SWgGO,CXhGL,MAAM,EWgGV,SAAS,AX/FN,SAAS,EW+FZ,SAAS,AX9FN,wBAAwB,CAAC,EACxB,gBAAgB,EJkCT,OAAO,EIjCd,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AW0FH,AXxFE,SWwFO,AXxFN,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EJ4BT,OAAO,GI3Bf;;AW0FH,AAAA,UAAU,CAAC,EXhHT,KAAK,EJ+BC,IAAI,EI9BV,gBAAgB,EJsDN,OAAO,EIrDjB,gBAAgB,EAAE,iCAAkD,EACpE,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GW+G1E;;AAFD,AX3GE,UW2GQ,CX3GN,KAAK,EW2GT,UAAU,AX1GP,uBAAuB,CAAC,EACvB,KAAK,EJwBD,IAAI,EIvBR,gBAAgB,EJ+CR,OAAO,EI9Cf,gBAAgB,EAAE,iCAAoD,GACvE;;AWsGH,AXpGE,UWoGQ,CXpGN,MAAM,EWoGV,UAAU,AXnGP,SAAS,EWmGZ,UAAU,AXlGP,wBAAwB,CAAC,EACxB,gBAAgB,EJwCR,OAAO,EIvCf,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAChD;;AW8FH,AX5FE,UW4FQ,AX5FP,SAAS,CAAC,KAAK,CAAC,EACf,gBAAgB,EJkCR,OAAO,GIjChB;;AYrBH,AAAA,OAAO,CAAC,EACN,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,EACZ,MAAM,EhBgGC,IAAiB,EgB/FxB,OAAO,EhBuFD,MAAmB,EgBtFzB,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAmD,GAS/E;;AbLG,MAAM,mBaVV,GAAA,AAAA,OAAO,CAAC,EASJ,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,IAAI,GAEnB,EAAA;;AAED,AAAA,kBAAkB,CAAC,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,EACV,MAAM,EhB8EA,IAAiB,EgB7EvB,QAAQ,EAAE,MAAM,EAChB,aAAa,EhBiGC,GAAG,EgBhGjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EACzE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,KAAmD,GAW9E;;AbzBG,MAAM,mBaOV,GAAA,AAAA,kBAAkB,CAAC,EAUf,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,IAAI,EACX,SAAS,EhB0GU,KAA2B,EgBzG9C,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,CAAC,EAChB,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,KAAK,CAAC,IAAI,ChBuGJ,KAAK,GgBrG1B,EAAA;;AAED,AAAA,aAAa,CAAC,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,WAAW,EhBmDL,MAAmB,EgBlDzB,aAAa,EhB6CA,IAAI,EgB5CjB,cAAc,EhBiDR,MAAmB,EgBhDzB,YAAY,EAAC,MAAC,EACd,SAAS,EAAE,IAAI,EACf,gBAAgB,EhBhBV,IAAI,EgBiBV,UAAU,EAAE,CAAC,EACb,YAAY,EAAE,CAAC,EACf,aAAa,EAAE,CAAC,EAChB,WAAW,EAAE,CAAC,EACd,aAAa,EAAE,CAAC,GAkBjB;;Ab3DG,MAAM,mBa2BV,GAAA,AAAA,aAAa,CAAC,EAiBV,WAAW,EhBiCA,IAAI,EgBhCf,cAAc,EhBgCH,IAAI,EgB/Bf,YAAY,EAAC,MAAC,EACd,SAAS,EAAE,IAAI,EACf,gBAAgB,EhB5BZ,IAAI,EgB6BR,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,KAAmD,GAUtF,EAAA;;AAhCD,AAyBE,aAzBW,CAyBT,KAAK,CAAC,EACN,OAAO,EAAE,CAAC,GAKX;;AA/BH,AA4BI,aA5BS,CAyBT,KAAK,GAGH,aAAa,CAAC,YAAY,CAAC,EAC3B,KAAK,EhBvBE,OAAO,GgBwBf;;AAIL,AAAA,aAAa,CAAC,EACZ,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,YAAY,EhBYC,IAAI,GgBClB;;Ab9EG,MAAM,mBa6DV,GAAA,AAAA,aAAa,CAAC,EAOV,YAAY,EhBkBR,IAAiB,EgBjBrB,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,KAAmD,GAStF,EAAA;;AAjBD,AAWE,aAXW,CAWX,YAAY,CAAC,EACX,KAAK,EAAC,MAAC,EACP,MAAM,EAAC,MAAC,EACR,UAAU,EAAE,MAAM,EAClB,KAAK,EhBtDK,OAAO,GgBuDlB;;AAGH,AAAA,eAAe,CAAC,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,IAAI,EACX,UAAU,EAAE,iBAAkC,EAC9C,UAAU,EAAE,IAAI,EAChB,gBAAgB,EhBnEV,IAAI,EgBoEV,0BAA0B,EhBqBZ,GAAG,EgBpBjB,yBAAyB,EhBoBX,GAAG,EgBnBjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GAO1E;;AbjGG,MAAM,mBagFV,GAAA,AAAA,eAAe,CAAC,EAaZ,GAAG,EAAE,IAAI,EACT,KAAK,EhB+Bc,KAA2B,EgB9B9C,UAAU,EAAE,kBAAkB,CAAC,UAAU,GAE5C,EAAA;;AAED,AAAA,oBAAoB,CAAC,EACnB,YAAY,EAAE,CAAC,EACf,aAAa,EhBpBP,OAAoB,EgBqB1B,UAAU,EAAE,IAAI,EX3FhB,SAAS,ELJG,IAAI,CKIQ,UAAU,GWiGnC;;Ab5GG,MAAM,sBamGV,GAAA,AAAA,oBAAoB,CAAC,EXrFjB,SAAS,ELNC,IAAI,CKMU,UAAU,GW8FrC,EAAA;;Ab5GG,MAAM,mBamGV,GAAA,AAAA,oBAAoB,CAAC,EXhGnB,SAAS,ELGG,IAAI,CKHQ,UAAU,GWyGnC,EAAA;;Ab5GG,MAAM,6CamGV,GAAA,AAAA,oBAAoB,CAAC,EX7FjB,SAAS,ELCC,IAAI,CKDU,UAAU,GWsGrC,EAAA;;AAED,AAAA,yBAAyB,CAAC,EACxB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,cAAc,CAAC,EACb,OAAO,EAAE,KAAK,EACd,WAAW,EhBpCL,OAAoB,EgBqC1B,aAAa,EhBnCP,OAAoB,EgBoC1B,cAAc,EhBtCR,OAAoB,EgBuC1B,YAAY,EhBrCN,OAAoB,GgB2C3B;;AAXD,AAOE,cAPY,CAOV,KAAK,EAPT,cAAc,AAQX,OAAO,CAAC,EACP,gBAAgB,EhBhGN,OAAO,GgBiGlB;;AAGH,AAAA,oBAAoB,CAAC,EACnB,OAAO,EAAE,KAAK,EACd,WAAW,EhBhDL,MAAmB,EgBiDzB,cAAc,EhBjDR,MAAmB,GgByD1B;;Ab3IG,MAAM,sBagIV,GAAA,AAAA,oBAAoB,CAAC,EAMjB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,GAAG,EACV,aAAa,EhBtDT,MAAmB,EgBuDvB,cAAc,EAAE,GAAG,GAEtB,EAAA;;AAED,AAAA,kBAAkB,CAAC,EACjB,OAAO,EAAE,IAAI,EACb,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,GAsBtB;;AAzBD,AAKE,kBALgB,AAKf,yBAAyB,CAAC,EACzB,OAAO,EAAE,GAAG,EXhJd,SAAS,ELGG,IAAI,CKHQ,UAAU,GWsJjC;;AbzJC,MAAM,sBakJR,GALF,AAKE,kBALgB,AAKf,yBAAyB,CAAC,EX5IzB,SAAS,ELCC,IAAI,CKDU,UAAU,GWmJnC,EAAA;;AbzJC,MAAM,mBakJR,GALF,AAKE,kBALgB,AAKf,yBAAyB,CAAC,EXvJ3B,SAAS,ELUG,IAAI,CKVQ,UAAU,GW8JjC,EAAA;;AbzJC,MAAM,6CakJR,GALF,AAKE,kBALgB,AAKf,yBAAyB,CAAC,EXpJzB,SAAS,ELQC,IAAI,CKRU,UAAU,GW2JnC,EAAA;;AAZH,AAcE,kBAdgB,CAchB,mBAAmB,CAAC,EAClB,KAAK,EhB/EM,IAAI,EgBgFf,MAAM,EhBhFK,IAAI,EgBiFf,YAAY,EhB5ER,MAAmB,EgB6EvB,KAAK,EhB9HI,OAAO,EgB+HhB,WAAW,EAAE,CAAC,GACf;;AApBH,AAsBE,kBAtBgB,CAsBhB,wBAAwB,CAAC,EACvB,QAAQ,EAAE,IAAI,GACf;;AAGH,AAAA,sBAAsB,CAAC,EACrB,WAAW,EAAC,MAAC,EACb,SAAS,EAAE,UAAU,GACtB;;AAED,AAAA,sBAAsB,CAAC,EACrB,OAAO,EAAE,KAAK,EACd,WAAW,EAAC,MAAC,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EhB3JO,OAAO,EgB4JnB,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAE,MAAM,EXhMnB,SAAS,ELgBG,GAAG,CKhBS,UAAU,GWkMnC;;AbrLG,MAAM,sBa6KV,GAAA,AAAA,sBAAsB,CAAC,EXvLnB,SAAS,ELcI,IAAI,CKdU,UAAU,GW+LxC,EAAA;;AAED,AAAA,uBAAuB,CAAC,EACtB,OAAO,EAAE,KAAK,EACd,WAAW,EhBvGL,MAAmB,EgBwGzB,cAAc,EhBxGR,MAAmB,EgByGzB,YAAY,EhB9GC,IAAI,EgB+GjB,WAAW,EhB1GL,MAAmB,EgB2GzB,KAAK,EhBvKO,OAAO,EgBwKnB,SAAS,EAAE,UAAU,EACrB,WAAW,EhBnFJ,GAAG,CAAC,KAAK,EgBoFhB,iBAAiB,EhBnKL,OAAO,EKlCnB,SAAS,ELUG,IAAI,CKVQ,UAAU,GW+MnC;;Ab1MG,MAAM,sBauLV,GAAA,AAAA,uBAAuB,CAAC,EXzLpB,SAAS,ELQC,IAAI,CKRU,UAAU,GW4MrC,EAAA;;Ab1MG,MAAM,sBauLV,GAAA,AAAA,uBAAuB,CAAC,EAapB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,GAAG,EACV,YAAY,EhBpHR,MAAmB,EgBqHvB,WAAW,EAAE,CAAC,EACd,cAAc,EAAE,GAAG,GAEtB,EAAA;;AAED,AAAA,sBAAsB,GAAG,sBAAsB,CAAC,EAC9C,UAAU,EhB5HJ,OAAoB,GgB6H3B;;AAED,AAAA,wBAAwB,CAAC,EACvB,WAAW,EAAE,IAAI,GAClB;;AAED,AAAA,iBAAiB,CAAC,EAChB,WAAW,EhBnIL,MAAmB,EgBoIzB,aAAa,EhBnIP,OAAoB,EgBoI1B,cAAc,EhBrIR,MAAmB,EgBsIzB,YAAY,EhBrIN,OAAoB,EKhF1B,SAAS,ELGG,IAAI,CKHQ,UAAU,GWuNnC;;Ab1NG,MAAM,sBaoNV,GAAA,AAAA,iBAAiB,CAAC,EX9Md,SAAS,ELCC,IAAI,CKDU,UAAU,GWoNrC,EAAA;;AAED,AAAA,cAAc,CAAC,EACb,QAAQ,EAAE,KAAK,EACf,KAAK,EhBjJQ,IAAI,EgBkJjB,MAAM,EhBlJO,IAAI,EgBmJjB,OAAO,EAAE,IAAI,EACb,KAAK,EhBxIC,MAAmB,EgByIzB,MAAM,EhBzIA,MAAmB,EgB0IzB,gBAAgB,EhB/MV,IAAI,EgBgNV,MAAM,EAAE,GAAG,CAAC,KAAK,ChBnMN,uBAAO,EgBoMlB,aAAa,EAAC,OAAC,EACf,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EACzE,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACxB;;AAED,AAAA,eAAe,CAAC,EACd,QAAQ,EAAE,KAAK,EACf,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,kBAAkB,EACpC,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,OAAO,CAAC,IAAI,ChBtHJ,KAAK,EgBsHsB,KAAK,CAAC,EAAE,ChBtHnC,KAAK,EgBuHvB,MAAM,CAAC,EAAE,ChBvHS,KAAK,GgBwH1B;;AAED,AACE,cADY,CACZ,OAAO,CAAC,EACN,QAAQ,EAAE,KAAK,EACf,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,CAAC,GACX;;AARH,AAUE,cAVY,CAUZ,kBAAkB,CAAC,EACjB,MAAM,EhBzKD,IAAiB,EgB0KtB,aAAa,EAAE,CAAC,GAMjB;;Ab1QC,MAAM,mBakQR,GAVF,AAUE,cAVY,CAUZ,kBAAkB,CAAC,EAKf,KAAK,EhB1IY,KAA2B,EgB2I5C,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GAE5E,EAAA;;AAlBH,AAoBE,cApBY,CAoBZ,aAAa,CAAC,EACZ,gBAAgB,EhBzPZ,IAAI,GgB8PT;;AblRC,MAAM,mBa4QR,GApBF,AAoBE,cApBY,CAoBZ,aAAa,CAAC,EAIV,YAAY,EAAE,MAAM,GAEvB,EAAA;;AblRC,MAAM,mBaoRR,GA5BF,AA4BE,cA5BY,CA4BZ,aAAa,CAAC,EAEV,YAAY,EAAE,MAAM,GAEvB,EAAA;;AAhCH,AAkCE,cAlCY,CAkCZ,eAAe,CAAC,EACd,OAAO,EAAE,KAAK,GACf;;AApCH,AAsCE,cAtCY,CAsCZ,eAAe,CAAC,EACd,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,OAAO,CAAC,IAAI,ChBpKN,KAAK,EgBoKwB,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,GACnE;;AbnSC,MAAM,mBasSN,GA9CJ,AA8CI,cA9CU,CA8CV,KAAK,CAAC,EACJ,QAAQ,EAAE,KAAK,EACf,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,CAAC,GACR,EAAA;;AAlDL,AAqDE,cArDY,CAqDZ,YAAY,CAAC,EACX,WAAW,EhBpNN,IAAiB,GgByNvB;;AbnTC,MAAM,mBa6SR,GArDF,AAqDE,cArDY,CAqDZ,YAAY,CAAC,EAIT,WAAW,EAAE,CAAC,GAEjB,EAAA;;AC5TH,AAAA,cAAc,CAAC,EACb,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,IAAI,EACX,SAAS,EAAE,IAAI,EACf,aAAa,EjB0FP,MAAmB,EiBzFzB,UAAU,EAAE,IAAI,EAChB,aAAa,EjBgHC,GAAG,EiB/GjB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,GAC1E;;AAED,AAAA,KAAK,CAAC,EACJ,OAAO,EAAE,KAAK,EACd,SAAS,EAAE,IAAI,EACf,eAAe,EAAE,QAAQ,GAC1B;;AAED,AAAA,EAAE,EACF,EAAE,CAAC,EZLD,SAAS,ELGG,IAAI,CKHQ,UAAU,EYOlC,SAAS,EAAE,KAAK,EAChB,WAAW,EjBuEL,MAAmB,EiBtEzB,aAAa,EjBuEP,OAAoB,EiBtE1B,cAAc,EjBqER,MAAmB,EiBpEzB,YAAY,EjBqEN,OAAoB,EiBpE1B,gBAAgB,EjBKV,IAAI,EiBJV,aAAa,EjB4FN,GAAG,CAAC,KAAK,CA/EJ,wBAAO,EiBZnB,WAAW,EjB2FJ,GAAG,CAAC,KAAK,CA/EJ,OAAO,GiBPpB;;AdtBG,MAAM,sBcOV,GAAA,AAAA,EAAE,EACF,EAAE,CAAC,EZFC,SAAS,ELCC,IAAI,CKDU,UAAU,GYgBrC,EAAA;;AAfD,AAYE,EAZA,CAYE,aAAa,EAXjB,EAAE,CAWE,aAAa,CAAC,EACd,WAAW,EAAE,CAAC,GACf;;AAGH,AAGM,KAHD,CACH,EAAE,CACE,YAAY,CACZ,EAAE,EAHR,KAAK,CACH,EAAE,CACE,YAAY,CAEZ,EAAE,CAAC,EACD,aAAa,EAAE,CAAC,GACjB;;AANP,AAQM,KARD,CACH,EAAE,CACE,YAAY,CAMZ,EAAE,CAAC,EACD,cAAc,EjBkDd,OAAoB,GiBjDrB;;AAKP,AACE,KADG,CACH,EAAE,CAAC,EACD,aAAa,EjBmER,GAAG,CAAC,KAAK,CA/EJ,OAAO,GiBalB;;ACnDH,AAAA,IAAI,CAAC,EACH,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,GAAG,EAChB,gBAAgB,ElBkCJ,OAAO,EkBjCnB,MAAM,ElBiHC,GAAG,CAAC,KAAK,CA/EJ,OAAO,EkBjCnB,aAAa,ElBiHC,GAAG,GkBhHlB;;AAGD,AAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EACb,YAAY,ElB4BA,OAAO,GkB3BpB;;AA8BD,AAAA,GAAG,AAAA,kBAAkB,CAAC,EACpB,OAAO,ElBkDD,OAAoB,EkBjD1B,UAAU,EAAE,CAAC,EACb,aAAa,ElBgDP,OAAoB,EkB/C1B,UAAU,EAAE,IAAI,EAChB,gBAAgB,ElBTJ,OAAO,EkBUnB,aAAa,ElBuEC,GAAG,EkBtEjB,UAAU,EAAE,IAAI,EAChB,0BAA0B,EAAE,KAAK,GASlC;;AAjBD,AAUE,GAVC,AAAA,kBAAkB,CAUnB,GAAG,AAAA,UAAU,EAVf,GAAG,AAAA,kBAAkB,CAWnB,GAAG,AAAA,UAAU,EAXf,GAAG,AAAA,kBAAkB,CAYnB,IAAI,CAAC,EACH,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,GACV;;AAKH,AAAA,MAAM,AAAA,UAAU,CAAC,EACf,OAAO,ElB6BD,OAAoB,EkB5B1B,UAAU,EAAE,CAAC,EACb,aAAa,ElB2BP,OAAoB,EkB1B1B,gBAAgB,ElB7BJ,OAAO,EkB8BnB,aAAa,ElBmDC,GAAG,EkBlDjB,UAAU,EAAE,IAAI,EAChB,0BAA0B,EAAE,KAAK,GAQlC;;AAfD,AASE,MATI,AAAA,UAAU,CASd,GAAG,EATL,MAAM,AAAA,UAAU,CAUd,IAAI,CAAC,EACH,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,GACV;;AAKH,AAAA,UAAU,CAAC,cAAc,CAAC,EACxB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,IAAI,GAmBjB;;AAvBD,AAME,UANQ,CAAC,cAAc,CAMvB,EAAE,EANJ,UAAU,CAAC,cAAc,CAOvB,GAAG,CAAC,EbpFJ,SAAS,ELUG,IAAI,CKVQ,UAAU,EasFhC,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,CAAC,EACV,gBAAgB,ElBvDN,OAAO,EkBwDjB,MAAM,EAAE,CAAC,GACV;;AfrFC,MAAM,sBe8ER,GANF,AAME,UANQ,CAAC,cAAc,CAMvB,EAAE,EANJ,UAAU,CAAC,cAAc,CAOvB,GAAG,CAAC,EbjFF,SAAS,ELQC,IAAI,CKRU,UAAU,GauFnC,EAAA;;AAbH,AAeE,UAfQ,CAAC,cAAc,CAevB,EAAE,AAAA,GAAG,CAAC,EACJ,aAAa,ElBLT,OAAoB,GkBMzB;;AAjBH,AAmBE,UAnBQ,CAAC,cAAc,CAmBvB,GAAG,CAAC,EACF,MAAM,EAAE,CAAC,EACT,WAAW,EAAE,CAAC,GACf;;AAGH,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,IAAI,CAAC,EACd,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,WAAW,EAAE,IAAI,EACjB,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,IAAI,GACZ;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,IAAI,GACZ;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,IAAI,GACZ;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,EAAE,CAAC,EACZ,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AACD,AAAA,UAAU,CAAC,GAAG,CAAC,EACb,KAAK,EAAE,OAAO,GACf;;AAMD,AAAA,aAAa,CAAC,EACZ,OAAO,ElBlOD,OAAoB,EkBmO1B,aAAa,ElBnOP,OAAoB,EkBoO1B,QAAQ,EAAE,IAAI,EACd,MAAM,EAAE,GAAG,CAAC,KAAK,ClB3RL,OAAO,EkB4RnB,aAAa,ElB5MC,GAAG,GkBwNlB;;AAjBD,AAOE,aAPW,GAOT,kBAAkB,EAPtB,aAAa,GAQT,MAAM,AAAA,UAAU,CAAC,EACjB,QAAQ,EAAE,QAAQ,EAClB,UAAU,ElBjPC,KAAI,EkBkPf,YAAY,EAAE,GAAG,CAAC,KAAK,ClBlSb,OAAO,EkBmSjB,aAAa,EAAE,GAAG,CAAC,KAAK,ClBnSd,OAAO,EkBoSjB,WAAW,EAAE,GAAG,CAAC,KAAK,ClBpSZ,OAAO,EkBqSjB,sBAAsB,EAAE,CAAC,EACzB,uBAAuB,EAAE,CAAC,GAC3B;;AE5UH,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpB6BO,OAAO,CoB7BC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpB0BO,OAAO,CoB1BC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBuBO,OAAO,CoBvBC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBoBO,OAAO,CoBpBC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBiBO,OAAO,CoBjBC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBeO,OAAO,CoBfC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBYO,OAAO,CoBZC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBSO,OAAO,CoBTC,UAAU,GAC/B;;AAED,AAAA,iBAAiB,CAAC,EAChB,KAAK,EpBMO,OAAO,CoBNC,UAAU,GAC/B;;AAED,AAAA,cAAc,CAAC,EACb,KAAK,EpBSI,OAAO,CoBTC,UAAU,GAC5B;;AAED,AAAA,cAAc,CAAC,EACb,KAAK,EpBMI,OAAO,CoBNC,UAAU,GAC5B;;AAED,AAAA,cAAc,CAAC,EACb,KAAK,EpBGI,OAAO,CoBHC,UAAU,GAC5B;;AAED,AAAA,cAAc,CAAC,EACb,KAAK,EpBAI,OAAO,CoBAC,UAAU,GAC5B;;AAED,AAAA,eAAe,CAAC,EACd,KAAK,EpBFK,OAAO,CoBEC,UAAU,GAC7B;;AAED,AAAA,eAAe,CAAC,EACd,KAAK,EpBLK,OAAO,CoBKC,UAAU,GAC7B;;AAED,AAAA,eAAe,CAAC,EACd,KAAK,EpBRK,OAAO,CoBQC,UAAU,GAC7B;;AAED,AAAA,eAAe,CAAC,EACd,KAAK,EpBXK,OAAO,CoBWC,UAAU,GAC7B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpB5BM,OAAO,CoB4BC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpB/BM,OAAO,CoB+BC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBlCM,OAAO,CoBkCC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBrCM,OAAO,CoBqCC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpB7BM,OAAO,CoB6BC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBhCM,OAAO,CoBgCC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBnCM,OAAO,CoBmCC,UAAU,GAC9B;;AAED,AAAA,gBAAgB,CAAC,EACf,KAAK,EpBtCM,OAAO,CoBsCC,UAAU,GAC9B;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EpBxCG,OAAO,CoBwCC,UAAU,GAC3B;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EpB3CG,OAAO,CoB2CC,UAAU,GAC3B;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EpB9CG,OAAO,CoB8CC,UAAU,GAC3B;;AAED,AAAA,aAAa,CAAC,EACZ,KAAK,EpBjDG,OAAO,CoBiDC,UAAU,GAC3B;;AAID,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBzFJ,OAAO,CoByFY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpB5FJ,OAAO,CoB4FY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpB/FJ,OAAO,CoB+FY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBlGJ,OAAO,CoBkGY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBrGJ,OAAO,CoBqGY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBvGJ,OAAO,CoBuGY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpB1GJ,OAAO,CoB0GY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpB7GJ,OAAO,CoB6GY,UAAU,GAC1C;;AAED,AAAA,eAAe,CAAC,EACd,gBAAgB,EpBhHJ,OAAO,CoBgHY,UAAU,GAC1C;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EpB7GP,OAAO,CoB6GY,UAAU,GACvC;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EpBhHP,OAAO,CoBgHY,UAAU,GACvC;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EpBnHP,OAAO,CoBmHY,UAAU,GACvC;;AAED,AAAA,YAAY,CAAC,EACX,gBAAgB,EpBtHP,OAAO,CoBsHY,UAAU,GACvC;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EpBxHN,OAAO,CoBwHY,UAAU,GACxC;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EpB3HN,OAAO,CoB2HY,UAAU,GACxC;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EpB9HN,OAAO,CoB8HY,UAAU,GACxC;;AAED,AAAA,aAAa,CAAC,EACZ,gBAAgB,EpBjIN,OAAO,CoBiIY,UAAU,GACxC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBlJL,OAAO,CoBkJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBrJL,OAAO,CoBqJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBxJL,OAAO,CoBwJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpB3JL,OAAO,CoB2JY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBnJL,OAAO,CoBmJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBtJL,OAAO,CoBsJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpBzJL,OAAO,CoByJY,UAAU,GACzC;;AAED,AAAA,cAAc,CAAC,EACb,gBAAgB,EpB5JL,OAAO,CoB4JY,UAAU,GACzC;;AAED,AAAA,WAAW,CAAC,EACV,gBAAgB,EpB9JR,OAAO,CoB8JY,UAAU,GACtC;;AAED,AAAA,WAAW,CAAC,EACV,gBAAgB,EpBjKR,OAAO,CoBiKY,UAAU,GACtC;;AAED,AAAA,WAAW,CAAC,EACV,gBAAgB,EpBpKR,OAAO,CoBoKY,UAAU,GACtC;;AAED,AAAA,WAAW,CAAC,EACV,gBAAgB,EpBvKR,OAAO,CoBuKY,UAAU,GACtC;;ACvOD,AAAA,QAAQ,CAAC,EACP,OAAO,EAAE,gBAAgB,GAC1B;;AACD,AAAA,OAAO,CAAC,EACN,OAAO,EAAE,eAAe,GACzB;;AACD,AAAA,SAAS,CAAC,EACR,OAAO,EAAE,iBAAiB,GAC3B;;AACD,AAAA,eAAe,CAAC,EACd,OAAO,EAAE,uBAAuB,GACjC;;AACD,AAAA,OAAO,CAAC,EACN,OAAO,EAAE,eAAe,GACzB;;AlBPG,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,sBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,mBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AlBlBH,MAAM,qBkBgBJ,GA9BN,AA8BM,WA9BK,CA8Be,EAClB,OAAO,EAAE,gBAAgB,GAC1B,CAhCP,AAiCM,UAjCI,CAiCe,EACjB,OAAO,EAAE,eAAe,GACzB,CAnCP,AAoCM,YApCM,CAoCe,EACnB,OAAO,EAAE,iBAAiB,GAC3B,CAtCP,AAuCM,kBAvCY,CAuCe,EACzB,OAAO,EAAE,uBAAuB,GACjC,CAzCP,AA0CM,UA1CI,CA0Ce,EACjB,OAAO,EAAE,eAAe,GACzB,EAZA;;AAmBP,AAAA,WAAW,CAAC,EACV,KAAK,EAAE,eAAe,GACvB;;AAED,AAAA,YAAY,CAAC,EACX,KAAK,EAAE,gBAAgB,GACxB;;AAED,AAAA,mBAAmB,CAAC,EAClB,eAAe,EAAE,qBAAqB,GACvC;;AAED,AAAA,iBAAiB,CAAC,EAChB,eAAe,EAAE,mBAAmB,GACrC;;AAED,AAAA,qBAAqB,CAAC,EACpB,eAAe,EAAE,wBAAwB,GAC1C;;AAED,AAAA,oBAAoB,CAAC,EACnB,eAAe,EAAE,uBAAuB,GACzC;;AAID,AAAA,iBAAiB,CAAC,EAChB,cAAc,EAAE,mBAAmB,GACpC;;AACD,AAAA,eAAe,CAAC,EACd,cAAc,EAAE,iBAAiB,GAClC;;AACD,AAAA,eAAe,CAAC,EACd,cAAc,EAAE,iBAAiB,GAClC;;AACD,AAAA,oBAAoB,CAAC,EACnB,cAAc,EAAE,sBAAsB,GACvC;;AACD,AAAA,iBAAiB,CAAC,EAChB,cAAc,EAAE,mBAAmB,GACpC;;AACD,AAAA,YAAY,CAAC,EACX,cAAc,EAAE,cAAc,GAC/B;;ACxFD,AAAA,KAAK,CAAC,EjBLJ,SAAS,ELgBG,GAAG,CKhBS,UAAU,GiBOnC;;AnBMG,MAAM,sBmBRV,GAAA,AAAA,KAAK,CAAC,EjBFF,SAAS,ELcI,IAAI,CKdU,UAAU,GiBIxC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBDJ,SAAS,ELUG,IAAI,CKVQ,UAAU,GiBGnC;;AnBEG,MAAM,sBmBJV,GAAA,AAAA,KAAK,CAAC,EjBEF,SAAS,ELQC,IAAI,CKRU,UAAU,GiBArC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBGJ,SAAS,ELGG,IAAI,CKHQ,UAAU,GiBDnC;;AnBFG,MAAM,sBmBAV,GAAA,AAAA,KAAK,CAAC,EjBMF,SAAS,ELCC,IAAI,CKDU,UAAU,GiBJrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBOJ,SAAS,ELJG,IAAI,CKIQ,UAAU,GiBLnC;;AnBNG,MAAM,sBmBIV,GAAA,AAAA,KAAK,CAAC,EjBUF,SAAS,ELNC,IAAI,CKMU,UAAU,GiBRrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBWJ,SAAS,ELXG,IAAI,CKWQ,UAAU,GiBTnC;;AnBVG,MAAM,sBmBQV,GAAA,AAAA,KAAK,CAAC,EjBcF,SAAS,ELbC,IAAI,CKaU,UAAU,GiBZrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjBeJ,SAAS,ELlBG,IAAI,CKkBQ,UAAU,GiBbnC;;AnBdG,MAAM,sBmBYV,GAAA,AAAA,KAAK,CAAC,EjBkBF,SAAS,ELpBC,IAAI,CKoBU,UAAU,EAClC,WAAW,ELnCY,IAAI,GsBkB9B,EAAA;;AAED,AAAA,KAAK,CAAC,EjBoBJ,SAAS,EL1BG,IAAI,CK0BQ,UAAU,EAClC,WAAW,ELzCc,IAAI,GsBsB9B;;AnBlBG,MAAM,sBmBgBV,GAAA,AAAA,KAAK,CAAC,EjBwBF,SAAS,EL7BC,IAAI,CK6BU,UAAU,GiBtBrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjByBJ,SAAS,ELlCG,IAAI,CKkCQ,UAAU,EAClC,WAAW,ELlDc,IAAI,GsB0B9B;;AnBtBG,MAAM,sBmBoBV,GAAA,AAAA,KAAK,CAAC,EjB6BF,SAAS,ELrCC,IAAI,CKqCU,UAAU,GiB3BrC,EAAA;;AAED,AAAA,KAAK,CAAC,EjB8BJ,SAAS,EL1CG,IAAI,CK0CQ,UAAU,EAClC,WAAW,EL3Dc,IAAI,GsB8B9B;;AnB1BG,MAAM,sBmBwBV,GAAA,AAAA,KAAK,CAAC,EjBkCF,SAAS,EL7CE,IAAI,CK6CU,UAAU,GiBhCtC,EAAA;;AAED,AAAA,MAAM,CAAC,EjBmCL,SAAS,ELlDI,IAAI,CKkDQ,UAAU,EACnC,WAAW,ELpEc,IAAI,GsBkC9B;;AnB9BG,MAAM,sBmB4BV,GAAA,AAAA,MAAM,CAAC,EjBuCH,SAAS,ELrDK,IAAI,CKqDU,UAAU,GiBrCzC,EAAA;;AAED,AAAA,OAAO,CAAC,EACN,WAAW,EAAE,cAAc,GAC5B;;AAED,AAAA,OAAO,CAAC,EACN,WAAW,EAAE,cAAc,GAC5B;;AAED,AAAA,OAAO,CAAC,EACN,WAAW,EAAE,cAAc,GAC5B;;AAED,AAAA,OAAO,CAAC,EACN,WAAW,EAAE,cAAc,GAC5B;;AAED,AAAA,KAAK,CAAC,EACJ,WAAW,EAAE,YAAY,GAC1B;;AAED,AAAA,WAAW,CAAC,EACV,WAAW,EtB3DM,GAAG,GsB4DrB;;AAED,AAAA,SAAS,CAAC,EACR,WAAW,EtB7Dc,IAAI,GsB8D9B;;AAED,AAAA,KAAK,CAAC,EACJ,cAAc,EAAE,iBAAiB,GAClC;;AAED,AAAA,MAAM,CAAC,EACL,cAAc,EAAE,gBAAgB,GACjC;;AAED,AAAA,KAAK,CAAC,EACJ,cAAc,EAAE,YAAY,GAC7B;;AAED,AAAA,eAAe,CAAC,EACd,cAAc,EAAE,oBAAoB,GACrC;;AClFD,AAAA,gBAAgB,CAAC,EACf,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,eAAe,GAO5B;;AAVD,AAMI,gBANY,CAKd,EAAE,EACG,MAAM,CAAC,EACR,OAAO,EAAE,eAAe,GACzB;;ACLL,AAAA,QAAQ,CAAC,EACP,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AAZD,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,IAnBE,CAmBM,EACN,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,KAtBG,CAsBK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,KAzBG,CAyBK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,KA5BG,CA4BK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,KA/BG,CA+BK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,KAnCG,CAmCK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,KAxCG,CAwCK,EACN,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,MA7CI,CA6CI,EACN,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,UAjDQ,CAiDK,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;AApDH,AAmBE,KAnBG,CAmBK,EACN,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC;;AArBH,AAsBE,MAtBI,CAsBI,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC;;AAxBH,AAyBE,MAzBI,CAyBI,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA3BH,AA4BE,MA5BI,CA4BI,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA9BH,AA+BE,MA/BI,CA+BI,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAjCH,AAmCE,MAnCI,CAmCI,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AAtCH,AAwCE,MAxCI,CAwCI,EACN,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA3CH,AA6CE,OA7CK,CA6CG,EACN,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC;;AAhDH,AAiDE,WAjDS,CAiDI,EACX,YAAY,EAAE,eAAe,EAC7B,WAAW,EAAE,eAAe,GAC7B;;ArBtCC,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,sBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,mBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,CAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,EACtC,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,CAAa,CAAC,UAAU,EACpC,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,EAAe,CAAC,UAAU,EACxC,WAAW,EAAE,EAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,OAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,EACtC,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,OAAa,CAAC,UAAU,EACpC,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,QAAe,CAAC,UAAU,EACxC,WAAW,EAAE,QAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,OA9DC,CA8DmB,EAClB,MAAM,EAAE,MAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,QAjEE,CAiEkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,QApEE,CAoEkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,QAvEE,CAuEkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,QA1EE,CA0EkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,QA9EE,CA8EkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,EACtC,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,QAnFE,CAmFkB,EAClB,UAAU,EAAE,MAAa,CAAC,UAAU,EACpC,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,SAxFG,CAwFiB,EAClB,YAAY,EAAE,OAAe,CAAC,UAAU,EACxC,WAAW,EAAE,OAAe,CAAC,UAAU,GACxC,EA3BA;;ArBlDH,MAAM,qBqBgDJ,GA9DN,AA8DM,QA9DE,CA8DkB,EAClB,MAAM,EAAE,IAAa,CAAC,UAAU,GACjC,CAhEP,AAiEM,SAjEG,CAiEiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,GACrC,CAnEP,AAoEM,SApEG,CAoEiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAtEP,AAuEM,SAvEG,CAuEiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAzEP,AA0EM,SA1EG,CA0EiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA5EP,AA8EM,SA9EG,CA8EiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,EACtC,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CAjFP,AAmFM,SAnFG,CAmFiB,EAClB,UAAU,EAAE,IAAa,CAAC,UAAU,EACpC,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAtFP,AAwFM,UAxFI,CAwFgB,EAClB,YAAY,EAAE,KAAe,CAAC,UAAU,EACxC,WAAW,EAAE,KAAe,CAAC,UAAU,GACxC,EA3BA;;AAhEP,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,IAvGE,CAuGM,EACN,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,KA1GG,CA0GK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,KA7GG,CA6GK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,KAhHG,CAgHK,EACN,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,KAnHG,CAmHK,EACN,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,KAvHG,CAuHK,EACN,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,KA5HG,CA4HK,EACN,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC;;AA/HH,AAuGE,KAvGG,CAuGK,EACN,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC;;AAzGH,AA0GE,MA1GI,CA0GI,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC;;AA5GH,AA6GE,MA7GI,CA6GI,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC;;AA/GH,AAgHE,MAhHI,CAgHI,EACN,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;AAlHH,AAmHE,MAnHI,CAmHI,EACN,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AArHH,AAuHE,MAvHI,CAuHI,EACN,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC;;AA1HH,AA4HE,MA5HI,CA4HI,EACN,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC;;ArBjHC,MAAM,mBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ArB7HH,MAAM,sBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ArB7HH,MAAM,mBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ArB7HH,MAAM,qBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ArB7HH,MAAM,qBqB2HJ,GAzIN,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,CAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,CAAa,CAAC,UAAU,EACvC,YAAY,EAAE,CAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,CAAa,CAAC,UAAU,EACrC,cAAc,EAAE,CAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,OAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,OAAa,CAAC,UAAU,EACvC,YAAY,EAAE,OAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,OAAa,CAAC,UAAU,EACrC,cAAc,EAAE,OAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,OAzIC,CAyImB,EAClB,OAAO,EAAE,MAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,QA5IE,CA4IkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,QA/IE,CA+IkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,QAlJE,CAkJkB,EAClB,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,QArJE,CAqJkB,EAClB,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,QAzJE,CAyJkB,EAClB,aAAa,EAAE,MAAa,CAAC,UAAU,EACvC,YAAY,EAAE,MAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,QA9JE,CA8JkB,EAClB,WAAW,EAAE,MAAa,CAAC,UAAU,EACrC,cAAc,EAAE,MAAa,CAAC,UAAU,GACzC,CAjKP,AAyIM,QAzIE,CAyIkB,EAClB,OAAO,EAAE,IAAa,CAAC,UAAU,GAClC,CA3IP,AA4IM,SA5IG,CA4IiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,GACtC,CA9IP,AA+IM,SA/IG,CA+IiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,GACxC,CAjJP,AAkJM,SAlJG,CAkJiB,EAClB,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,CApJP,AAqJM,SArJG,CAqJiB,EAClB,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CAvJP,AAyJM,SAzJG,CAyJiB,EAClB,aAAa,EAAE,IAAa,CAAC,UAAU,EACvC,YAAY,EAAE,IAAa,CAAC,UAAU,GACvC,CA5JP,AA8JM,SA9JG,CA8JiB,EAClB,WAAW,EAAE,IAAa,CAAC,UAAU,EACrC,cAAc,EAAE,IAAa,CAAC,UAAU,GACzC,EAtBA;;ACzIP,MAAM,MACJ,GAAA,AAAA,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,SAAS,EACT,YAAY,CAAC,EACX,OAAO,EAAE,eAAe,GACzB,CAED,AAAA,SAAS,CAAC,EACR,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,YAAY,EAAE,YAAY,GAC3B,CAED,AAAA,YAAY,CAAC,EACX,aAAa,EAAE,GAAG,CAAC,KAAK,CzBwBd,OAAO,GyBvBlB,CAED,AAAA,WAAW,CAAC,EACV,SAAS,EzBhBI,IAAI,CyBgBU,UAAU,EACrC,WAAW,EAAE,cAAc,GAC5B,CAED,AAAA,WAAW,CAAC,EACV,SAAS,EAAE,cAAc,GAC1B,CAED,AAAA,GAAG,AAAA,UAAU,CAAC,EACZ,MAAM,EAAE,GAAG,CAAC,KAAK,CzBWP,OAAO,GyBVlB,CAED,AAAA,KAAK,CAAC,EACJ,SAAS,EAAE,IAAI,EACf,WAAW,EAAE,CAAC,GACf,EA5BA;;ACVH,+CAA+C;ACA/C,yKAIE;AAGF,AAAA,UAAU,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAC9C,AAAA,UAAU,CAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAC/E,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,aAAa;AACzE,AAAA,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,WAAW;AACzE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,aAAa;AACzE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,aAAa;AAC5F,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,aAAa;AACzE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,UAAU;AACtE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,cAAc;AAC1E,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,WAAW;AACvE,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,iBAAiB;AAC7E,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,uBAAuB;AACpF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AACrG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AAClF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AAClF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,kBAAkB;AAC3G,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AAClF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,sBAAsB;AACnF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,wBAAwB;AACrF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,uBAAuB;AACpF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,sBAAsB;AACtG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,yBAAyB;AACzG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,uBAAuB;AACvG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACpG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,sBAAsB;AACtG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,kBAAkB;AAClG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,kBAAkB;AAC/E,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AAChF,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACpG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,kBAAkB;AAC/E,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,gBAAgB;AAC7E,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,iBAAiB;AACjG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AACnG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,gBAAgB;AAChG,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,oBAAoB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,gBAAgB;AAC7E,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,cAAc;AAC9F,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,mBAAmB;AAChF,AAAA,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,qBAAqB;AACjF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,0BAA0B;AACvF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,wBAAwB;AACrF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,4BAA4B;AACzF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,wBAAwB;AACrF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,6BAA6B;AAC1F,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,yBAAyB;AACtF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,wBAAwB;AACrF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,2BAA2B;AACxF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,2BAA2B;AACxF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,4BAA4B;AACzF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,6BAA6B;AAC1F,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,0BAA0B;AACvF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,0BAA0B;AACvF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,2BAA2B;AACxF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,2BAA2B;AACxF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,yBAAyB;AACtF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,yBAAyB;AACtF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,0BAA0B;AACvF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,4BAA4B;AACzF,AAAA,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAQ,GAAE;;AAAA,iCAAiC;AC5E9F,4KAKE;AFIF,AAAA,IAAI,CAAC,EACH,WAAW,EAAE,sEAAsE,EACnF,KAAK,EEKgB,OAAO,GFJ7B;;AAED,AAAA,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,WAAW,CAAC,EACV,WAAW,EAAE,6BAA6B,EAC1C,KAAK,EEJgB,OAAO,EFK5B,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,MAAM,GACvB;;AAED,AACE,aADW,CACX,EAAE,CAAC,EACD,SAAS,EAAE,IAAI,CAAA,UAAU,EACzB,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,IAAI,EACpB,aAAa,EAAE,IAAI,GACpB;;AAwBH,AAAA,GAAG,CAAC,EACF,WAAW,EAAE,QAAQ,GACtB;;AAED,AAAA,IAAI,CAAC,EACH,OAAO,EAAE,OAAO,GACjB;;AAGD,AAAA,SAAS,CAAC,cAAc,GAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,EAC/D,KAAK,EAAE,OAAO,GACf;;AAGD,AACE,cADY,CACZ,KAAK,CAAC,EACJ,eAAe,EAAE,QAAQ,GAa1B;;AAfH,AAII,cAJU,CACZ,KAAK,CAGH,KAAK,CAAC,EACJ,UAAU,EAAE,IAAI,GAIjB;;AATL,AAMM,cANQ,CACZ,KAAK,CAGH,KAAK,CAEH,EAAE,CAAC,EACD,UAAU,EE9DE,OAAO,GF+DpB;;AARP,AAWI,cAXU,CACZ,KAAK,CAUH,EAAE,CAAC,EACD,mBAAmB,EExDV,qBAAqB,GFyD/B;;AAKL,AAAA,gBAAgB,CAAC,EACf,KAAK,EE3EU,OAAO,EF4EtB,UAAU,EAAE,MAAM,GACnB;;AAGD,MAAM,MACJ,GAAA,AAAA,SAAS,EACT,YAAY,CAAC,EACX,OAAO,EAAE,IAAI,GACd,CACD,AAAA,aAAa,CAAC,EACZ,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,GAAG,GACZ,EAJA" +} \ No newline at end of file diff --git a/assets/images/Alloverse01.png b/assets/images/Alloverse01.png new file mode 100644 index 0000000..522d5d7 Binary files /dev/null and b/assets/images/Alloverse01.png differ diff --git a/assets/images/allonet.png b/assets/images/allonet.png new file mode 100644 index 0000000..cd84c72 Binary files /dev/null and b/assets/images/allonet.png differ diff --git a/assets/images/alloui.png b/assets/images/alloui.png new file mode 100644 index 0000000..f9f060b Binary files /dev/null and b/assets/images/alloui.png differ diff --git a/assets/images/checkmark.png b/assets/images/checkmark.png new file mode 100644 index 0000000..7f6d496 Binary files /dev/null and b/assets/images/checkmark.png differ diff --git a/assets/images/coordinate-system-XYZ.png b/assets/images/coordinate-system-XYZ.png new file mode 100644 index 0000000..bf668f3 Binary files /dev/null and b/assets/images/coordinate-system-XYZ.png differ diff --git a/assets/images/hello-world-1024x318.jpg b/assets/images/hello-world-1024x318.jpg new file mode 100644 index 0000000..8f3caed Binary files /dev/null and b/assets/images/hello-world-1024x318.jpg differ diff --git a/assets/images/hello-world-csharp.png b/assets/images/hello-world-csharp.png new file mode 100644 index 0000000..c3e4c95 Binary files /dev/null and b/assets/images/hello-world-csharp.png differ diff --git a/assets/images/just-the-docs.png b/assets/images/just-the-docs.png new file mode 100644 index 0000000..81c3306 Binary files /dev/null and b/assets/images/just-the-docs.png differ diff --git a/assets/images/search.svg b/assets/images/search.svg new file mode 100644 index 0000000..421ca4d --- /dev/null +++ b/assets/images/search.svg @@ -0,0 +1 @@ +Search diff --git a/assets/images/todo-progress-1.png b/assets/images/todo-progress-1.png new file mode 100644 index 0000000..6ed5999 Binary files /dev/null and b/assets/images/todo-progress-1.png differ diff --git a/assets/images/todo-progress-2.png b/assets/images/todo-progress-2.png new file mode 100644 index 0000000..b556757 Binary files /dev/null and b/assets/images/todo-progress-2.png differ diff --git a/assets/images/todo-sketch.jpeg b/assets/images/todo-sketch.jpeg new file mode 100644 index 0000000..a86b5b9 Binary files /dev/null and b/assets/images/todo-sketch.jpeg differ diff --git a/assets/js/custom.js b/assets/js/custom.js new file mode 100644 index 0000000..361689e --- /dev/null +++ b/assets/js/custom.js @@ -0,0 +1,10 @@ +document.addEventListener('DOMContentLoaded', function() { + // scroll active site nav item into view if it's not visible + const siteNav = document.getElementById('site-nav'); + const active = siteNav.querySelector('.nav-list-link.active'); + if (active) { + if (active.getBoundingClientRect().bottom > siteNav.getBoundingClientRect().bottom) { + active.scrollIntoView(); + } + } +}); diff --git a/assets/js/just-the-docs.js b/assets/js/just-the-docs.js new file mode 100644 index 0000000..f142a66 --- /dev/null +++ b/assets/js/just-the-docs.js @@ -0,0 +1,445 @@ +(function (jtd, undefined) { + +// Event handling + +jtd.addEvent = function(el, type, handler) { + if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler); +} +jtd.removeEvent = function(el, type, handler) { + if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler); +} +jtd.onReady = function(ready) { + // in case the document is already rendered + if (document.readyState!='loading') ready(); + // modern browsers + else if (document.addEventListener) document.addEventListener('DOMContentLoaded', ready); + // IE <= 8 + else document.attachEvent('onreadystatechange', function(){ + if (document.readyState=='complete') ready(); + }); +} + +// Show/hide mobile menu + +function initNav() { + jtd.addEvent(document, 'click', function(e){ + var target = e.target; + while (target && !(target.classList && target.classList.contains('nav-list-expander'))) { + target = target.parentNode; + } + if (target) { + e.preventDefault(); + target.parentNode.classList.toggle('active'); + } + }); + + const siteNav = document.getElementById('site-nav'); + const mainHeader = document.getElementById('main-header'); + const menuButton = document.getElementById('menu-button'); + + jtd.addEvent(menuButton, 'click', function(e){ + e.preventDefault(); + + if (menuButton.classList.toggle('nav-open')) { + siteNav.classList.add('nav-open'); + mainHeader.classList.add('nav-open'); + } else { + siteNav.classList.remove('nav-open'); + mainHeader.classList.remove('nav-open'); + } + }); +} +// Site search + +function initSearch() { + var request = new XMLHttpRequest(); + request.open('GET', '/assets/js/search-data.json', true); + + request.onload = function(){ + if (request.status >= 200 && request.status < 400) { + var docs = JSON.parse(request.responseText); + + lunr.tokenizer.separator = /[\s/]+/ + + var index = lunr(function(){ + this.ref('id'); + this.field('title', { boost: 200 }); + this.field('content', { boost: 2 }); + this.field('relUrl'); + this.metadataWhitelist = ['position'] + + for (var i in docs) { + this.add({ + id: i, + title: docs[i].title, + content: docs[i].content, + relUrl: docs[i].relUrl + }); + } + }); + + searchLoaded(index, docs); + } else { + console.log('Error loading ajax request. Request status:' + request.status); + } + }; + + request.onerror = function(){ + console.log('There was a connection error'); + }; + + request.send(); +} + +function searchLoaded(index, docs) { + var index = index; + var docs = docs; + var searchInput = document.getElementById('search-input'); + var searchResults = document.getElementById('search-results'); + var mainHeader = document.getElementById('main-header'); + var currentInput; + var currentSearchIndex = 0; + + function showSearch() { + document.documentElement.classList.add('search-active'); + } + + function hideSearch() { + document.documentElement.classList.remove('search-active'); + } + + function update() { + currentSearchIndex++; + + var input = searchInput.value; + if (input === '') { + hideSearch(); + } else { + showSearch(); + // scroll search input into view, workaround for iOS Safari + window.scroll(0, -1); + setTimeout(function(){ window.scroll(0, 0); }, 0); + } + if (input === currentInput) { + return; + } + currentInput = input; + searchResults.innerHTML = ''; + if (input === '') { + return; + } + + var results = index.query(function (query) { + var tokens = lunr.tokenizer(input) + query.term(tokens, { + boost: 10 + }); + query.term(tokens, { + wildcard: lunr.Query.wildcard.TRAILING + }); + }); + + if ((results.length == 0) && (input.length > 2)) { + var tokens = lunr.tokenizer(input).filter(function(token, i) { + return token.str.length < 20; + }) + if (tokens.length > 0) { + results = index.query(function (query) { + query.term(tokens, { + editDistance: Math.round(Math.sqrt(input.length / 2 - 1)) + }); + }); + } + } + + if (results.length == 0) { + var noResultsDiv = document.createElement('div'); + noResultsDiv.classList.add('search-no-result'); + noResultsDiv.innerText = 'No results found'; + searchResults.appendChild(noResultsDiv); + + } else { + var resultsList = document.createElement('ul'); + resultsList.classList.add('search-results-list'); + searchResults.appendChild(resultsList); + + addResults(resultsList, results, 0, 10, 100, currentSearchIndex); + } + + function addResults(resultsList, results, start, batchSize, batchMillis, searchIndex) { + if (searchIndex != currentSearchIndex) { + return; + } + for (var i = start; i < (start + batchSize); i++) { + if (i == results.length) { + return; + } + addResult(resultsList, results[i]); + } + setTimeout(function() { + addResults(resultsList, results, start + batchSize, batchSize, batchMillis, searchIndex); + }, batchMillis); + } + + function addResult(resultsList, result) { + var doc = docs[result.ref]; + + var resultsListItem = document.createElement('li'); + resultsListItem.classList.add('search-results-list-item'); + resultsList.appendChild(resultsListItem); + + var resultLink = document.createElement('a'); + resultLink.classList.add('search-result'); + resultLink.setAttribute('href', doc.url); + resultsListItem.appendChild(resultLink); + + var resultTitle = document.createElement('div'); + resultTitle.classList.add('search-result-title'); + resultLink.appendChild(resultTitle); + + var resultDoc = document.createElement('div'); + resultDoc.classList.add('search-result-doc'); + resultDoc.innerHTML = ''; + resultTitle.appendChild(resultDoc); + + var resultDocTitle = document.createElement('div'); + resultDocTitle.classList.add('search-result-doc-title'); + resultDocTitle.innerHTML = doc.doc; + resultDoc.appendChild(resultDocTitle); + var resultDocOrSection = resultDocTitle; + + if (doc.doc != doc.title) { + resultDoc.classList.add('search-result-doc-parent'); + var resultSection = document.createElement('div'); + resultSection.classList.add('search-result-section'); + resultSection.innerHTML = doc.title; + resultTitle.appendChild(resultSection); + resultDocOrSection = resultSection; + } + + var metadata = result.matchData.metadata; + var titlePositions = []; + var contentPositions = []; + for (var j in metadata) { + var meta = metadata[j]; + if (meta.title) { + var positions = meta.title.position; + for (var k in positions) { + titlePositions.push(positions[k]); + } + } + if (meta.content) { + var positions = meta.content.position; + for (var k in positions) { + var position = positions[k]; + var previewStart = position[0]; + var previewEnd = position[0] + position[1]; + var ellipsesBefore = true; + var ellipsesAfter = true; + for (var k = 0; k < 3; k++) { + var nextSpace = doc.content.lastIndexOf(' ', previewStart - 2); + var nextDot = doc.content.lastIndexOf('. ', previewStart - 2); + if ((nextDot >= 0) && (nextDot > nextSpace)) { + previewStart = nextDot + 1; + ellipsesBefore = false; + break; + } + if (nextSpace < 0) { + previewStart = 0; + ellipsesBefore = false; + break; + } + previewStart = nextSpace + 1; + } + for (var k = 0; k < 3; k++) { + var nextSpace = doc.content.indexOf(' ', previewEnd + 1); + var nextDot = doc.content.indexOf('. ', previewEnd + 1); + if ((nextDot >= 0) && (nextDot < nextSpace)) { + previewEnd = nextDot; + ellipsesAfter = false; + break; + } + if (nextSpace < 0) { + previewEnd = doc.content.length; + ellipsesAfter = false; + break; + } + previewEnd = nextSpace; + } + contentPositions.push({ + highlight: position, + previewStart: previewStart, previewEnd: previewEnd, + ellipsesBefore: ellipsesBefore, ellipsesAfter: ellipsesAfter + }); + } + } + } + + if (titlePositions.length > 0) { + titlePositions.sort(function(p1, p2){ return p1[0] - p2[0] }); + resultDocOrSection.innerHTML = ''; + addHighlightedText(resultDocOrSection, doc.title, 0, doc.title.length, titlePositions); + } + + if (contentPositions.length > 0) { + contentPositions.sort(function(p1, p2){ return p1.highlight[0] - p2.highlight[0] }); + var contentPosition = contentPositions[0]; + var previewPosition = { + highlight: [contentPosition.highlight], + previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, + ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter + }; + var previewPositions = [previewPosition]; + for (var j = 1; j < contentPositions.length; j++) { + contentPosition = contentPositions[j]; + if (previewPosition.previewEnd < contentPosition.previewStart) { + previewPosition = { + highlight: [contentPosition.highlight], + previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, + ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter + } + previewPositions.push(previewPosition); + } else { + previewPosition.highlight.push(contentPosition.highlight); + previewPosition.previewEnd = contentPosition.previewEnd; + previewPosition.ellipsesAfter = contentPosition.ellipsesAfter; + } + } + + var resultPreviews = document.createElement('div'); + resultPreviews.classList.add('search-result-previews'); + resultLink.appendChild(resultPreviews); + + var content = doc.content; + for (var j = 0; j < Math.min(previewPositions.length, 2); j++) { + var position = previewPositions[j]; + + var resultPreview = document.createElement('div'); + resultPreview.classList.add('search-result-preview'); + resultPreviews.appendChild(resultPreview); + + if (position.ellipsesBefore) { + resultPreview.appendChild(document.createTextNode('... ')); + } + addHighlightedText(resultPreview, content, position.previewStart, position.previewEnd, position.highlight); + if (position.ellipsesAfter) { + resultPreview.appendChild(document.createTextNode(' ...')); + } + } + } + var resultRelUrl = document.createElement('span'); + resultRelUrl.classList.add('search-result-rel-url'); + resultRelUrl.innerText = doc.relUrl; + resultTitle.appendChild(resultRelUrl); + } + + function addHighlightedText(parent, text, start, end, positions) { + var index = start; + for (var i in positions) { + var position = positions[i]; + var span = document.createElement('span'); + span.innerHTML = text.substring(index, position[0]); + parent.appendChild(span); + index = position[0] + position[1]; + var highlight = document.createElement('span'); + highlight.classList.add('search-result-highlight'); + highlight.innerHTML = text.substring(position[0], index); + parent.appendChild(highlight); + } + var span = document.createElement('span'); + span.innerHTML = text.substring(index, end); + parent.appendChild(span); + } + } + + jtd.addEvent(searchInput, 'focus', function(){ + setTimeout(update, 0); + }); + + jtd.addEvent(searchInput, 'keyup', function(e){ + switch (e.keyCode) { + case 27: // When esc key is pressed, hide the results and clear the field + searchInput.value = ''; + break; + case 38: // arrow up + case 40: // arrow down + case 13: // enter + e.preventDefault(); + return; + } + update(); + }); + + jtd.addEvent(searchInput, 'keydown', function(e){ + switch (e.keyCode) { + case 38: // arrow up + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + active.classList.remove('active'); + if (active.parentElement.previousSibling) { + var previous = active.parentElement.previousSibling.querySelector('.search-result'); + previous.classList.add('active'); + } + } + return; + case 40: // arrow down + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + if (active.parentElement.nextSibling) { + var next = active.parentElement.nextSibling.querySelector('.search-result'); + active.classList.remove('active'); + next.classList.add('active'); + } + } else { + var next = document.querySelector('.search-result'); + if (next) { + next.classList.add('active'); + } + } + return; + case 13: // enter + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + active.click(); + } else { + var first = document.querySelector('.search-result'); + if (first) { + first.click(); + } + } + return; + } + }); + + jtd.addEvent(document, 'click', function(e){ + if (e.target != searchInput) { + hideSearch(); + } + }); +} + +// Switch theme + +jtd.getTheme = function() { + var cssFileHref = document.querySelector('[rel="stylesheet"]').getAttribute('href'); + return cssFileHref.substring(cssFileHref.lastIndexOf('-') + 1, cssFileHref.length - 4); +} + +jtd.setTheme = function(theme) { + var cssFile = document.querySelector('[rel="stylesheet"]'); + cssFile.setAttribute('href', '/assets/css/just-the-docs-' + theme + '.css'); +} + +// Document ready + +jtd.onReady(function(){ + initNav(); + initSearch(); +}); + +})(window.jtd = window.jtd || {}); + + diff --git a/assets/js/search-data.json b/assets/js/search-data.json new file mode 100644 index 0000000..eeb7ba2 --- /dev/null +++ b/assets/js/search-data.json @@ -0,0 +1,482 @@ +{"0": { + "doc": "App", + "title": "App", + "content": "App === Represents the AlloApp. Mediates communication with backend, and maintains the runloop. Create one of these, configure it, connect it and run it, and you have an alloapp. ## Constructor ~~~ lua local app = App(client) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | client | [Client](Client) | The AlloNet client wrapper | #### Returns Nothing --- ## Methods ### app:openPopupNearHand (popup, hand, distance, entity) Open a ui.View as a popup near a hand. Call from e g a button handler to display it right where the user could easily interact with it. You can use this to open a \"new item\" or a \"settings\" UI near a user. Since apps are multi-user, sometimes it's nice to give a user some personal UI that they can do input in, so that they don't have to fight over control of input with another user. #### Arguments | Name | Type | Description | -------- | -------------- | --------------- | popup | ui.View | The view to show to the user. It will be instantiated in the world at the appropriate location. | hand | Entity | The hand entity that the popup should be shown near. In a button handler, this is the first argument to the callback. | distance | number | The distance in meters from the hand to show. Default 0.6 | entity | Callback(view, | ) cb The callback to call when the popup is present in-world | #### Returns Nothing --- ### app:addWristWidget (avatarOrHand, widget, callback) Add a widget to the user's left wrist, and arrange it to fit with the other widgets already present. Use this to provide some portable UI to the user, such as a remote control. #### Arguments | Name | Type | Description | ------------ | -------------- | --------------- | avatarOrHand | Entity | The avatar of the user to add the widget to. Can also be any child entity to the avatar, such as a hand, and the avatar will be looked up for you. | widget | ui.View | The widget to add. Must be at most 3cm wide. You can make it a button or something that opens more UI nearby if you need more space. | callback | Callback(bool) | Callback for when adding widget finishes. Its argument is true if successful. | #### Returns Nothing --- ### app:scheduleAction (delay, repeats, callback) Schedule work to be done later #### Arguments | Name | Type | Description | -------- | -------- | --------------- | delay | number | The time (in seconds) until the callback is called. | repeats | boolean | Whether The callback should repeat (with the same delay) or only occur once. | callback | function | The function to be called (with no arguments). | #### Returns Nothing --- ### app:clientTime () Current client time. This is monotonically increasing. #### Arguments None #### Returns Nothing --- ### app:serverTime () Current server time. Might jump around a little to compensate for lag. #### Arguments None #### Returns Nothing --- ### app:updateComponents (changes, removals) Asks the backend to update components on the server. Use this to update things you've specified in :specification() but now want to change. #### Arguments | Name | Type | Description | -------- | ----- | --------------- | changes | table | A table with the desired changes, for example: {transform={...}, collider={...}} | removals | table | A table with the keys of componets to remove, for example: {\"collider\", \"skeleton\"} | #### Returns Nothing --- ", + "url": "/doc/classes/App.html", + "relUrl": "/doc/classes/App.html" + },"1": { + "doc": "Asset", + "title": "Asset", + "content": "Asset ===== Represents data that can be shared to other clients in the Alloverse An asset is just raw data. ## Constructor ~~~ lua asset = Asset(data) ~~~ #### Arguments | Name | Type | Description | ---- | ------ | --------------- | data | string | Raw data for the asset. | #### Returns Nothing --- ## Methods ### asset:read (offset, length) Read a part of the data #### Arguments | Name | Type | Description | ------ | ------ | --------------- | offset | number | The byte to start reading from | length | number | The number of bytes to read | #### Returns | Type | Description | ------ | --------------- | string | the requested data | --- ### asset:write (data, offset, totalSize) Write a part of the data #### Arguments | Name | Type | Description | --------- | ------ | --------------- | data | string | The data buffering | offset | number | The byte offset to start writing at | totalSize | number | The expected total size of the asset. | #### Returns Nothing --- ### asset:size () Returns the size of the asset #### Arguments None #### Returns | Type | Description | ------ | --------------- | number | The size of the data | --- ### asset:getImageWidthHeight () Returns the pixel width and height of the asset that represents an image. Returns nil if the asset doesn't represent an image. #### Arguments None #### Returns | Type | Description | -------- | --------------- | (number, | number) The width and height of the image (in pixels) | --- ### asset:id (refresh) Returns a computed unique identifier for this asset The id is a hash of the asset data. This ensures the same asset identifier is always matched with the same data #### Arguments | Name | Type | Description | ------- | ------- | --------------- | refresh | boolean | By default a cached hash is returned, if one is available. Send `refresh` to true to recompute the id | #### Returns Nothing --- ### asset:like_file () Returns a File-like wrapper to send to methods that wants files It's not fully implemented; Fill out methods as needed. #### Arguments None #### Returns | Type | Description | ----------- | --------------- | FileWrapper | An object that implmeents the same methods as io.File | --- ", + "url": "/doc/classes/Asset.html", + "relUrl": "/doc/classes/Asset.html" + },"2": { + "doc": "AssetManager", + "title": "AssetManager", + "content": "AssetManager ============ A utility class for storage and access to [Assets](Asset). ## Constructor ~~~ lua assetManager = AssetManager(client) ~~~ #### Arguments | Name | Type | Description | ------ | ------ | --------------- | client | Client | The allonet client to handle assets for | #### Returns Nothing --- ## Methods ### assetmanager:add (asset, manage) Adds an Asset to the AssetManager ~~~ lua AssetManager:add(asset, manage) ~~~ #### Arguments | Name | Type | Description | ------ | -------------- | --------------- | asset | [Asset](Asset) | The Asset to add | manage | bool | If set to `true`, the AssetManager will hold on to the asset for you. If set to `false`, it will only serve the asset as long as you keep a reference to it. | #### Returns Nothing --- ### assetmanager:remove (asset) Removes an Asset from the AssetManager ~~~ lua AssetManager:remove(asset) ~~~ #### Arguments | Name | Type | Description | ----- | -------------- | --------------- | asset | [Asset](Asset) | The Asset to remove | #### Returns Nothing --- ### assetmanager:get (name) Get an Asset with the corresponding name. Returns `nil` if no matching Asset is found. ~~~ lua AssetManager:get(name) ~~~ #### Arguments | Name | Type | Description | ---- | ------ | --------------- | name | string | The name of the requested string | #### Returns | Type | Description | -------------- | --------------- | [Asset](Asset) | The corresponding Asset | --- ### assetmanager:all () Gets all Assets currently held by the AssetManager. ~~~ lua AssetManager:all() ~~~ #### Arguments None #### Returns | Type | Description | ----- | --------------- | Table | All assets held by the AssetManager | --- ### assetmanager:count () Get the number of Assets currently held by the AssetManager. ~~~ lua AssetManager:count() ~~~ #### Arguments None #### Returns | Type | Description | ------ | --------------- | number | The number of assets held by the AssetManager | --- ### assetmanager:load (name, callback) Start to load an asset. Callback will be called with the Asset when loading is complete, or with `nil` if failed. ~~~ lua AssetManager:load(name, callback) ~~~ callback: function(name, asset_or_nil) returns true if the asset is loading. returns false if asset was found in cache #### Arguments | Name | Type | Description | -------- | ---- | ----------- | name | ??? | | callback | ??? | #### Returns Nothing --- ", + "url": "/doc/classes/AssetManager.html", + "relUrl": "/doc/classes/AssetManager.html" + },"3": { + "doc": "AssetView", + "title": "AssetView", + "content": "AssetView ========= Used to display an Asset that's 3d model. ## Constructor ~~~ lua asset_view = AssetView(asset, bounds) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | asset | [Asset](Asset) | An asset representing a 3d model. | bounds | [Bounds](Bounds) | The bounds of the Asset that is to be displayed in the world. | #### Returns Nothing --- ## Methods ", + "url": "/doc/classes/AssetView.html", + "relUrl": "/doc/classes/AssetView.html" + },"4": { + "doc": "Base64Asset", + "title": "Base64Asset", + "content": "Base64Asset =========== An Asset created from a Base64-encoded string. ## Constructor ~~~ lua my_asset = Base64Asset(base64) ~~~ #### Arguments | Name | Type | Description | ------ | ------ | --------------- | base64 | string | A Base64-encoded string representation of an asset | #### Returns Nothing --- ## Methods ", + "url": "/doc/classes/Base64Asset.html", + "relUrl": "/doc/classes/Base64Asset.html" + },"5": { + "doc": "Bounds", + "title": "Bounds", + "content": "Bounds ====== A component that defines the pose and size of a [View](view), i.e. its bounds within the world. Note that any changes made to the Bounds using the methods below won't be applied (and thus visible in the world) until [View:setBounds()](view#viewsetbounds-bounds) is been run. ## Constructor ~~~ lua bounds = Bounds(a, b, c, w, h, d) ~~~ For convenience, a Bounds may also be created using [Pose](pose) and [Size](size) objects: ~~~ lua bounds = Bounds{pose=,size=} bounds = Bounds(pose, size) ~~~ #### Arguments | Name | Type | Description | ---- | ------ | --------------- | a | number | The View's x position in the world | b | number | The View's y position in the world | c | number | The View's z position in the world | w | number | The View's width | h | number | The View's height | d | number | The View's depth | #### Returns Nothing --- ## Methods ### bounds:copy () Makes a copy of a given Bounds object #### Arguments None #### Returns | Type | Description | --------------- | --------------- | [Bounds](bounds) | A copy of the given Bounds. | --- ### bounds:moveToOrigin () Sets the Bounds' [Pose](pose) component to {0, 0, 0} #### Arguments None #### Returns | Type | Description | --------------- | --------------- | [Bounds](bounds) | The updated Bounds object. | --- ### bounds:rotate (angle, x, y, z) Rotates the Bounds around an axis. #### Arguments | Name | Type | Description | ----- | ------ | --------------- | angle | number | The amount to rotate the coordinate system by, in radians. | x | number | The x component of the axis of rotation. | y | number | The y component of the axis of rotation. | z | number | The z component of the axis of rotation. | #### Returns | Type | Description | --------------- | --------------- | [Bounds](bounds) | The updated Bounds object. | --- ### bounds:move (x, y, z) Moves the Bounds. May be used in conjunction with [Size:getEdge()](Size#sizegetedge-vertical-horizontal-depthwise) to move the Bounds relative to its parent. #### Arguments | Name | Type | Description | ---- | ------ | --------------- | x | number | The movement along the x axis. | y | number | The movement along the y axis. | z | number | The movement along the z axis. | #### Returns | Type | Description | --------------- | --------------- | [Bounds](bounds) | The updated Bounds object. | --- ### bounds:scale (x, y, z) Scales the Bounds. #### Arguments | Name | Type | Description | ---- | ------ | --------------- | x | number | The scaling along the x axis (or all axes, if y and z aren't provided). | y | number | The scaling along the y axis. | z | number | The scaling along the z axis. | #### Returns | Type | Description | --------------- | --------------- | [Bounds](bounds) | The updated Bounds object. | --- ### bounds:inset (w, h, d) Shrinks the Bounds by the given parameters. #### Arguments | Name | Type | Description | ---- | ------ | --------------- | w | number | The reduction of the component's width. | h | number | The reduction of the component's height. | d | number | The reduction of the component's depth. | #### Returns | Type | Description | --------------- | --------------- | [Bounds](bounds) | The updated Bounds object. | --- ", + "url": "/doc/classes/Bounds.html", + "relUrl": "/doc/classes/Bounds.html" + },"6": { + "doc": "Button", + "title": "Button", + "content": "Button ====== A button that can be poked/clicked to perform an action. Every button has a Label. Use [label:setText(...)](Label#labelsettext-text) to set it: ~~~ lua my_button.label:setText(\"this is my button\") ~~~ Set `onActivated` to a function you'd like to be called when the button is pressed: ~~~ lua my_button.onActivated = function() -- do something... end ~~~ You can also set the button's default, highlighted and activated texture (see [Surface](Surface) documentation for image format caveats). Or if you just want a colored button, you can set its color. Set either color or texture to nil to remove that attribute. ## Constructor ~~~ lua my_button = Button(bounds) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](bounds) | The button's initial bounds. | text | string | The button's initial text | #### Returns Nothing --- ## Methods ### button:setTexture (asset) Sets the texture of the button Set to nil to remove the attribute. #### Arguments | Name | Type | Description | ----- | -------------- | --------------- | asset | [Asset](Asset) | The texture asset | #### Returns Nothing --- ### button:setColor (rgba) Sets the color of the button Set to nil to remove the attribute. #### Arguments | Name | Type | Description | ---- | ----- | --------------- | rgba | table | A table with the desired color's r, g, b and alpha values between 0-1, e.g. `{0.8, 0.4, 0.8, 0.5}` | #### Returns Nothing --- ", + "url": "/doc/classes/Button.html", + "relUrl": "/doc/classes/Button.html" + },"7": { + "doc": "Client", + "title": "Client", + "content": "Client ====== ??? ## Constructor ~~~ lua client = Client(url, name, client, updateStateAutomatically) ~~~ #### Arguments | Name | Type | Description | --------------- | --------------- | --------------- | url | string | ... | name | string | ... | client | [Client](Client) | The AlloNet client. | updateStateAutomatically | boolean | Whether or not the client should automatically update its state. | #### Returns Nothing --- ## Methods ### client:getEntity (function) Fetch an entity when it is received This is asynchronous because you might receive an interaction with an entity ID pointing to an entity that you haven't received yet. #### Arguments | Name | Type | Description | -------- | ---- | --------------- | function | cb | (entity) callback when entity is arrived | #### Returns Nothing --- ### client:launchApp (string, Pose, table, function) Ask the place to launch an app found at `appurl`. #### Arguments | Name | Type | Description | -------- | ------ | --------------- | string | appurl | The `alloapp:` URL to launch into the connected place | Pose | pose | Transform/position of where in the place to launch the app | table | args | key-value table of additional arguments to send to the app | function | cb | Callback for how the launch went. On error, called as `cb(false, errstr)`. On success, called as `cb(true, launchedAvatarId)`. | #### Returns Nothing --- ### client:sendInteraction (Interaction, Function) Send an RPC message (aka \"interaction\") to another entity. If you're sending a \"request\" interaction (default), you should really listen to the callback to make sure your call succeeded. #### Arguments | Name | Type | Description | ----------- | ----------- | --------------- | Interaction | interaction | a populated Interaction struct | Function | callback | (interaction, body) a callback that takes the response interaction and the parsed response body. | #### Returns Nothing --- ### client:poll (timeout_ms) Send and receive buffered data synchronously now. Loops over all queued network messages until the queue is empty. #### Arguments | Name | Type | Description | ---------- | ---- | --------------- | timeout_ms | ??? | how many ms to wait for incoming messages before giving up. Default 10. | #### Returns | Type | Description | ---- | --------------- | | bool whether any messages were parsed | --- ", + "url": "/doc/classes/Client.html", + "relUrl": "/doc/classes/Client.html" + },"8": { + "doc": "Color", + "title": "Color", + "content": "Color ===== An RGBA color. ", + "url": "/doc/classes/Color.html", + "relUrl": "/doc/classes/Color.html" + },"9": { + "doc": "Cube", + "title": "Cube", + "content": "Cube ==== A simple cube. Commonly used as a placeholder asset or marker. ## Constructor ~~~ lua cube = Cube(bounds) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](bounds) | The Cube's initial bounds. | #### Returns Nothing --- ## Methods ### cube:setColor (rgba) Sets the Cube's color #### Arguments | Name | Type | Description | ---- | ----- | --------------- | rgba | table | The r, g, b and a values of the text color, each defined between 0 and 1. For example, {1, 0.5, 0, 1} | #### Returns Nothing --- ", + "url": "/doc/classes/Cube.html", + "relUrl": "/doc/classes/Cube.html" + },"10": { + "doc": "Entity", + "title": "Entity", + "content": "Entity ====== An entity is the manifestation of an agent in a place. The only fixed information in an entity is its id. Everything else is specified as a set of components. ## Methods ### entity:getParent () Gets the parent of a given Entity. #### Arguments None #### Returns | Type | Description | --------------- | --------------- | [Entity](Entity) | The parent Entity, or nil if it has no parent. | --- ### entity:getAncestor () Gets the topmost parent of a given Entity. E g, if given a user's hand, gets the root avatar for that user. #### Arguments None #### Returns Nothing --- ### entity:getMatchingDescendant (The) Finds the first descendant of self where calling predicate with each descendant returns true. #### Arguments | Name | Type | Description | ---- | --------------- | --------------- | The | Callback(entity):Bool | predicate callback to run for each descendant | #### Returns | Type | Description | ---------- | --------------- | Entity|nil | the found entity, or nil if non found | --- ", + "url": "/doc/classes/Entity.html", + "relUrl": "/doc/classes/Entity.html" + },"11": { + "doc": "FileAsset", + "title": "FileAsset", + "content": "FileAsset ========= A type of Asset generated from a file ## Constructor ~~~ lua my_asset = FileAsset(path, load) ~~~ #### Arguments | Name | Type | Description | ---- | ------- | --------------- | path | string | The path to the file | load | boolean | If `true`, the file is loaded into memory immediately. Otherwise the file is read whenever data is needed. | #### Returns | Type | Description | --------- | --------------- | FileAsset | The generated FileAsset. | --- ## Methods ### fileasset:path () Get the path to a FileAsset ~~~ lua path = FileAsset:path() ~~~ #### Arguments None #### Returns | Type | Description | ------ | --------------- | string | The path to the FileAsset. | --- ### fileasset:size () Get the size (in bytes) of a FileAsset. ~~~ lua path = FileAsset:size() ~~~ #### Arguments None #### Returns | Type | Description | ------ | --------------- | string | The size, in bytes, of the FileAsset. | --- ", + "url": "/doc/classes/FileAsset.html", + "relUrl": "/doc/classes/FileAsset.html" + },"12": { + "doc": "FrameView", + "title": "FrameView", + "content": "FrameView ========= A FrameView is a [View](view) subclass that draws a border of a given width and color. ## Constructor ~~~ lua local frameview = FrameView(bounds, thickness) ~~~ For convenience, you may also set some or all of the FrameView's properties within the constructor, i.e.: ~~~ lua local frameview = FrameView{bounds=Bounds(0, 0, 0, 1.0, 0.1, 0.001), color={1.0,0.2,0.4,1}, position=\"inside\"} ~~~ #### Arguments | Name | Type | Description | --------- | ------ | --------------- | bounds | table | A table including *at least* a Bounds component. | thickness | number | The thickness of the border. | #### Returns Nothing --- ## Methods ", + "url": "/doc/classes/FrameView.html", + "relUrl": "/doc/classes/FrameView.html" + },"13": { + "doc": "GrabHandle", + "title": "GrabHandle", + "content": "GrabHandle ========== A widget for moving something; think of it as the title bar of a window. Grabbing the title bar moves the window, not the title bar. Same here; set this as the subview of your root view to make it movable. You can set any bounds on this handle to position it at a good location in your view. ## Constructor ~~~ lua grab_handle = GrabHandle(bounds) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](bounds) | The GrabHandle's bounds. | #### Returns Nothing --- ## Methods ", + "url": "/doc/classes/GrabHandle.html", + "relUrl": "/doc/classes/GrabHandle.html" + },"14": { + "doc": "Label", + "title": "Label", + "content": "Label ===== A label, used to display text in Alloverse ## Constructor ~~~ lua --Creates a Label, at origo, that is 1m wide, 20cm tall and 1cm deep local l = Label{bounds=Bounds(0, 0, 0, 1, 0.2, 0.01)} --For convenience, you may also set some or all of the Label's properties within the constructor, i.e.: local l = Label{bounds=Bounds(0, 0, 0, 1.0, 0.1, 0.001), color={1.0,0.2,0.4,1}, text=\"Hello!\", halign=\"left\"} ~~~ Note: The font size of the text is, by default, derived from the height of the Label. #### Arguments | Name | Type | Description | ---- | ----- | --------------- | o | table | A table including *at least* a Bounds component. It may also include a number of other optional properties: text, wrap, halign, color and fitToWidth. | #### Returns Nothing --- ## Methods ### label:setText (text) Sets the Label's text #### Arguments | Name | Type | Description | ---- | ------ | --------------- | text | string | The text the Label should display | #### Returns Nothing --- ### label:setWrap (wrap) Sets the Label's horizontal wrap attribute #### Arguments | Name | Type | Description | ---- | ------- | --------------- | wrap | boolean | Whether the Label should line break when reaching the Label's bounds' (`true`) or be allowed to overflow outside the component (`false`) | #### Returns Nothing --- ### label:setHalign (halign) Sets the Label's horizontal align attribute #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | halign | **\"center\"**,\"top\",\"bottom\" | The alignment of the text within the Labels' bounds | #### Returns Nothing --- ### label:setColor (color) Sets the Label's text color #### Arguments | Name | Type | Description | ----- | --------- | --------------- | color | {r,g,b,a} | The r, g, b and a values of the text color, each defined between 0 and 1. | #### Returns Nothing --- ### label:setFitToWidth (fitToWidth) Sets the Label's fitToWidth attribute Note: If true, the `wrap` attribute is made irrelevant. #### Arguments | Name | Type | Description | ---------- | ------- | --------------- | fitToWidth | boolean | Wether the Label's font size should dynamically shink in order to always fit in the label's width. | #### Returns Nothing --- ", + "url": "/doc/classes/Label.html", + "relUrl": "/doc/classes/Label.html" + },"15": { + "doc": "LovrFileAsset", + "title": "LovrFileAsset", + "content": "LovrFileAsset ============= A type of Asset generated from a file ## Constructor ~~~ lua my_asset = LovrFileAsset(path, load) ~~~ #### Arguments | Name | Type | Description | ---- | ------ | --------------- | path | string | The path to the file | #### Returns | Type | Description | ------------- | --------------- | LovrFileAsset | The generated LovrFileAsset | --- ## Methods ### lovrfileasset:path () Get the path to a LovrFileAsset ~~~ lua path = LovrFileAsset:path() ~~~ #### Arguments None #### Returns | Type | Description | ------ | --------------- | string | The path to the LovrFileAsset | --- ### lovrfileasset:size () Get the size of a LovrFileAsset ~~~ lua path = LovrFileAsset:size() ~~~ #### Arguments None #### Returns | Type | Description | ------ | --------------- | string | The size, in bytes, of the LovrFileAsset | --- ", + "url": "/doc/classes/LovrFileAsset.html", + "relUrl": "/doc/classes/LovrFileAsset.html" + },"16": { + "doc": "ModelView", + "title": "ModelView", + "content": "ModelView ========= Used to display a 3D model asset. ## Constructor ~~~ lua model_view = ModelView(bounds, asset) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](Bounds) | The bounds of the model that is to be displayed in the world. | asset | [Asset](Asset) | An asset representing a 3d model. | #### Returns Nothing --- ## Methods ", + "url": "/doc/classes/ModelView.html", + "relUrl": "/doc/classes/ModelView.html" + },"17": { + "doc": "NavStack", + "title": "NavStack", + "content": "NavStack ======== Navigation stack: pushes and pops [views](view) to drill down a hierarchy of UI. Includes a back button to allow navigation. ## Constructor ~~~ lua navStack = NavStack(bounds) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](bounds) | The NavStack's bounds. | #### Returns Nothing --- ## Methods ### navstack:bottom () Returns the item at the bottom of the stack. Does not remove the item from the stack. #### Arguments None #### Returns | Type | Description | ------------ | --------------- | [View](view) | The item from the bottom of the stack | --- ### navstack:top () Returns the item at the top of the stack. Does not remove the item from the stack. #### Arguments None #### Returns | Type | Description | ------------ | --------------- | [View](view) | The item from the top of the stack | --- ### navstack:push (view) Adds an item to the top of the stack #### Arguments | Name | Type | Description | ---- | ------------ | --------------- | view | [View](view) | The view to push | #### Returns Nothing --- ### navstack:pop () Returns the item from the top of the stack. Removes the item from the stack. #### Arguments None #### Returns | Type | Description | ------------ | --------------- | [View](view) | top The item at the top of the stack | --- ", + "url": "/doc/classes/NavStack.html", + "relUrl": "/doc/classes/NavStack.html" + },"18": { + "doc": "Ninepatch", + "title": "Ninepatch", + "content": "Ninepatch ========= A ninepatch is a [View](view) subclass which displays a 9patch texture on a square. ## Constructor ~~~ lua surface = Surface(bounds, texture, inset) ~~~ #### Arguments | Name | Type | Description | ------------ | --------------- | --------------- | bounds | [Bounds](bounds) | The Surface's bounds. | inset | number | The size of the border of the surface | An | [Texture](texture) | asset with the 9patch image texture to use | textureInset | number | The number of pixels to inset from each side in the texture image | #### Returns Nothing --- ## Methods ", + "url": "/doc/classes/Ninepatch.html", + "relUrl": "/doc/classes/Ninepatch.html" + },"19": { + "doc": "Pose", + "title": "Pose", + "content": "Pose ==== The \"position\" of a view. Abstracts a mat4 transformation matrix. ## Constructor ~~~ lua pose = Pose() -- Creates a zero pose ~~~ A Pose may also be created the following ways: ~~~ lua pose = Pose(transform) -- Creates a pose from a transform pose = Pose(x, y, z) -- Create positioned pose pose = Pose(a, x, y, z) -- Create rotated pose ~~~ #### Arguments | Name | Type | Description | ---- | ---- | ----------- | a | ??? | | b | ??? | | c | ??? | | d | ??? | #### Returns Nothing --- ## Methods ### pose:copy () Creates and returns a copy of a given Pose #### Arguments None #### Returns | Type | Description | ------------ | --------------- | [Pose](pose) | A copy of the original Pose object. | --- ### pose:identity () Sets the Pose to {0, 0, 0, 0}. #### Arguments None #### Returns | Type | Description | ------------ | --------------- | [Pose](pose) | original Pose, post reset to the identity matrix. | --- ### pose:set (other) Sets the Pose to inherit #### Arguments | Name | Type | Description | ----- | ------------ | --------------- | other | [Pose](pose) | The source Pose to copy. | #### Returns | Type | Description | ------------ | --------------- | [Pose](pose) | the original Pose, after having been updated. | --- ### pose:rotate (angle, x, y, z) Rotates the Pose #### Arguments | Name | Type | Description | ----- | ------ | --------------- | angle | number | The angle component of the angle/axis rotation (radians). | x | number | The x component of the axis of rotation. | y | number | The y component of the axis of rotation. | z | number | The z component of the axis of rotation. | #### Returns | Type | Description | ------------ | --------------- | [Pose](pose) | The original Pose, post-rotation. | --- ### pose:move (x, y, z) Moves the Pose #### Arguments | Name | Type | Description | ---- | ------ | --------------- | x | number | The movement along the x axis. | y | number | The movement along the y axis. | z | number | The movement along the z axis. | #### Returns | Type | Description | ------------ | --------------- | [Pose](pose) | The original Pose, post-move. | --- ### pose:scale (x, y, z) Scales the Pose #### Arguments | Name | Type | Description | ---- | ------ | --------------- | x | number | The x component of the scale to apply (or all axes, if y and z aren't provided). | y | number | The y component of the scale to apply. | z | number | The z component of the scale to apply. | #### Returns | Type | Description | ------------ | --------------- | [Pose](pose) | The original Pose, post-scale. | --- ### pose:concat (otherPoseOrTransform) Concatenates (multiplies) this transform with another #### Arguments | Name | Type | Description | --------------- | --------- | --------------- | otherPoseOrTransform | Pose|mat4 | Either a CPML mat4 matrix to concatenate with, or another Pose | #### Returns | Type | Description | ------------ | --------------- | [Pose](pose) | The original Pose, post-concatenation. | --- ", + "url": "/doc/classes/Pose.html", + "relUrl": "/doc/classes/Pose.html" + },"20": { + "doc": "PropertyAnimation", + "title": "PropertyAnimation", + "content": "PropertyAnimation ================= PropertyAnimation describes the animation of a field in a component in an entity. It can be any field that is numeric, 4x4 matrix, vec3 or a rotation (as an angle-axis as four numbers). Use [View:addPropertyAnimation](View#viewaddpropertyanimation-anim) to apply and activate the animation. Example usage: ~~~ lua self.logo:addPropertyAnimation(ui.PropertyAnimation{ path= \"transform.matrix.rotation.y\", start_at = self.app:serverTime() + 1.0, from= -0.2, to= 0.2, duration = 2.0, repeats= true, autoreverses= true, easing= \"elasticOut\", }) ~~~ ## Methods ### propertyanimation:setPath (path) You describe the property to be animated by setting the path to the _key path_ of the property. For example, to change the alpha field (fourth field) of the color property of the `material` component, use the path `material.color.3` (0-indexed). Matrices also have some magical computed properties. You can access `rotation`, `scale` and `translation` of a matrix to directly set that attribute of the matrix. You can also dive into the specific setting for the x, y or z axies of each of those. For example, to rotate around y, you can animate `transform.matrix.rotation.y`. In that case, the \"from\" and \"to\" values can be regular numbers. #### Arguments | Name | Type | Description | ---- | ------ | --------------- | path | string | The keypath to the property to animate | #### Returns Nothing --- ### propertyanimation:setFrom (from) The value to animate from. Can be a number, matrix (list of 16 numbers), vector (list of 3 numbers) or rotation (list of 4 numbers: angle, and the x y z of the axis). It MUST be the same kind of value as the property we're animating (see [setPath](#propertyanimationsetpath-path)). #### Arguments | Name | Type | Description | ---- | --------------- | --------------- | from | number|mat4|vec3|{a,ax,ay,az} | Value to animate from | #### Returns Nothing --- ### propertyanimation:setTo (to) The value to animate to. See `setFrom`. #### Arguments | Name | Type | Description | ---- | --------------- | --------------- | to | number|mat4|vec3|{a,ax,ay,az} | Value to animate to | #### Returns Nothing --- ### propertyanimation:setStartAt (start_at) The time at which to start the animation. Use App:serverTime() to get the current time, and use offsets from that time to get time in the future. To start an animation in four seconds, use `myview.app:serverTime()+4`. #### Arguments | Name | Type | Description | -------- | ------ | --------------- | start_at | number | Server time at which to start the animation | #### Returns Nothing --- ### propertyanimation:setDuration (duration) The number of seconds to animate for, in seconds. After the time start_at + duration has elapsed, the animation is automatically removed, unless it's a repeating animation. #### Arguments | Name | Type | Description | -------- | ------ | --------------- | duration | number | Duration of animation in seconds | #### Returns Nothing --- ### propertyanimation:setEasing (easing) Set the easing curve used to animate along. The default is `linear`, which means going in a straight line from `from` to `to`. This usually looks very stiff and robotic, and is discouraged. Use one of these easing algorithms instead: * linear * quadInOut * quadIn * quadOut * bounceInOut * bounceIn * bounceOut * backInOut * backIn * backOut * sineInOut * sineIn * sineOut * cubicInOut * cubicIn * cubicOut * quartInOut * quartIn * quartOut * quintInOut * quintIn * quintOut * elasticInOut * elasticIn * elasticOut * circularInOut * circularIn * circularOut * expInOut * expIn * expOut #### Arguments | Name | Type | Description | ------ | ------ | --------------- | easing | string | Name of the easing algorithm to use | #### Returns Nothing --- ### propertyanimation:setRepeats (repeats) Whether this animation restarts plays again immediately after finishing. Repeating animations are never removed automatically. #### Arguments | Name | Type | Description | ------- | ---- | --------------- | repeats | bool | Whether to repeat | #### Returns Nothing --- ### propertyanimation:setAutoreverses (autoreverses) For repeating animations: Whether to play this animation back in reverse after each time it has been played front-to-back. #### Arguments | Name | Type | Description | ------------ | ---- | --------------- | autoreverses | bool | Whether to autoreverse | #### Returns Nothing --- ### propertyanimation:removeFromView (callback) Asks server to stop the animation and remove it #### Arguments | Name | Type | Description | -------- | ---- | ----------- | callback | ??? | #### Returns Nothing --- ", + "url": "/doc/classes/PropertyAnimation.html", + "relUrl": "/doc/classes/PropertyAnimation.html" + },"21": { + "doc": "ProxyIconView", + "title": "ProxyIconView", + "content": "ProxyIconView ============= Proxy icon: A grabbable 3d object that creates a copy that can be placed in the world. Useful as a way to instantiate objects in the world from a palette. Subclass it and override onIconDropped(). ## Constructor ~~~ lua icon = ProxyIconView(bounds) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](bounds) | The icon's bounds. | name | String | The asset's name | author | String | The asset's author | icon | [FileAsset](FileAsset) | asset to be used as the icon for this proxy view | #### Returns Nothing --- ## Methods ### proxyiconview:onIconDropped (at_transform) Override this to handle the icon being dropped. You can also set it as a property on the instantiated icon view. #### Arguments | Name | Type | Description | ------------ | ---- | ----------- | at_transform | ??? | #### Returns Nothing --- ", + "url": "/doc/classes/ProxyIconView.html", + "relUrl": "/doc/classes/ProxyIconView.html" + },"22": { + "doc": "ResizeHandle", + "title": "ResizeHandle", + "content": "ResizeHandle ============ A window resize widget. Grab and move to resize your view from its center point. ## Constructor ~~~ lua resizeHandle = ResizeHandle(bounds, translationConstraint, rotationConstraint) ~~~ #### Arguments | Name | Type | Description | --------------- | ------ | --------------- | bounds | Bounds | The ResizeHandle's bounds. | translationConstraint | table | Only allow the indicated fraction of movement in the corresponding axis in the actuated entity’s local coordinate space. E g, to only allow movement along the floor (no lifting), set the y fraction to 0: `{1, 0, 1}`. | rotationConstraint | table | Similarly, constrain rotation to the given fraction in the given euler axis in the actuated entity’s local coordinate space. E g, to only allow rotation along Y (so that it always stays up-right), use: `{0, 1, 0}`. | #### Returns Nothing --- ## Methods ", + "url": "/doc/classes/ResizeHandle.html", + "relUrl": "/doc/classes/ResizeHandle.html" + },"23": { + "doc": "Size", + "title": "Size", + "content": "Size ==== The setfenv(...) (in meters) of a view or element in the world. Note that size and scale are different things: size is the semantic size of your app (e g \"this button is 2 dm wide\") while scale is the scaling up or down of this semantic size (e g a transformation matrix with a 2.0 X-axis scale and a 2dm width is 4dm wide, but its content is still 2dm wide.) ## Constructor ~~~ lua size = Size(width, height, depth) ~~~ #### Arguments | Name | Type | Description | ------ | ------ | --------------- | width | number | The width of the component. | height | number | The height of the component. | depth | number | The depth of the component. | #### Returns Nothing --- ## Methods ### size:copy () Creates and returns a copy of a given Size. #### Arguments None #### Returns | Type | Description | ------------ | --------------- | [Size](Size) | A copy of the original Size object. | --- ### size:inset (byWidth, byHeight, byDepth) Shrinks the Size component by the given parameters. #### Arguments | Name | Type | Description | -------- | ------ | --------------- | byWidth | number | The x component of the size reduction. | byHeight | number | The y component of the size reduction. | byDepth | number | The z component of the size reduction. | #### Returns | Type | Description | ------------ | --------------- | [Size](Size) | The original Size object, post-resize. | --- ### size:set (width, height, depth) Sets width, height and depth #### Arguments | Name | Type | Description | ------ | ------ | --------------- | width | number | The width of the component. | height | number | The height of the component. | depth | number | The depth of the component. | #### Returns Nothing --- ### size:getEdge (vertical, horizontal, depthwise) Returns the position relative to the object's edge(s). Very useful for laying out information, such as positioning a Label in the top center of `my_container`: ~~~ lua local my_label = ui.Label{ bounds = ui.Bounds{size=ui.Size(1, 0.15, 0.1)}:move ( my_container.bounds.size:getEdge(\"top\", \"center\") ) } ~~~ #### Arguments | Name | Type | Description | ---------- | ------ | --------------- | vertical | String | \"top\", \"center\" (default) or \"bottom\". | horizontal | String | \"left\", \"center\" (default) or \"right\". | depthwise | String | \"front\", \"center\" (default) or \"back\". | #### Returns | Type | Description | ------ | --------------- | vector | A vector (x, y, z) with coordinates corresponding to the requested position of the given `Size` object. | --- ", + "url": "/doc/classes/Size.html", + "relUrl": "/doc/classes/Size.html" + },"24": { + "doc": "Slider", + "title": "Slider", + "content": "Slider ====== A slider component for selecting a value from a range ## Methods ### slider:minValue (newValue) Get or set the minimum selectable value #### Arguments | Name | Type | Description | -------- | ---- | ----------- | newValue | ??? | #### Returns Nothing --- ### slider:maxValue (newvalue) Get or set the maximum selecrtable value #### Arguments | Name | Type | Description | -------- | ---- | ----------- | newvalue | ??? | #### Returns Nothing --- ### slider:currentValue (newValue) Get or set the current value #### Arguments | Name | Type | Description | -------- | ---- | ----------- | newValue | ??? | #### Returns Nothing --- ", + "url": "/doc/classes/Slider.html", + "relUrl": "/doc/classes/Slider.html" + },"25": { + "doc": "Speaker", + "title": "Speaker", + "content": "Speaker ======= A place to emit sound from. It can either play live-streamed audio or static sound files: * If given a sound effect asset to its constructor, it will play that asset looping * If not given a sound effect, it will allocate a live_media track, which you can then use to send_audio with: ~~~ lua local leftSpeaker = ui.Speaker(ui.Bounds(0,0,0, 1,1,1)) app:scheduleAction(0.02, true, function() local leftAudio, rightAudio = player:generateAudio(960) if left and leftSpeaker.trackId then app.client.client:send_audio(leftSpeaker.trackId, leftAudio) end end) ~~~ ", + "url": "/doc/classes/Speaker.html", + "relUrl": "/doc/classes/Speaker.html" + },"26": { + "doc": "StackView", + "title": "StackView", + "content": "StackView ========= A view that stacks its subviews either vertical (default) or horizontally. The StackView will adjust its size on the (specified) main axis while preserving the size given for the other axis. It will also adjust the size of each subview to fill the other axis while preserving the subview size on the main axis. You can put StackViews into Stackviews to create rows and columns ~~~ lua rows = StackView(nil, \"v\") rows:addSubview(Label{text=\"Example\"}) cols = rows:addSubview(StackView(nil, \"h\")) cols:addSubview(Label{text=\"Col1\"}) cols:addSubview(Label{text=\"Col2\"}) rows:addSubview(Label{text=\"The End\"}) self:addSubview(rows) rows:layout() ~~~ ## Constructor ~~~ lua my_button = StackView(bounds, axis) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](bounds) | The StackView's Bounds component | axis | string | The main axis to layout subviews on. \"v\" (default) or \"h\" | #### Returns Nothing --- ## Methods ### stackview:margin (newValue) Set the spacing between items #### Arguments | Name | Type | Description | -------- | ------ | --------------- | newValue | number | The space between subviews. nil to just return the current value. | #### Returns | Type | Description | ------ | --------------- | number | The current value | --- ### stackview:layout () Layout the subviews #### Arguments None #### Returns Nothing --- ", + "url": "/doc/classes/StackView.html", + "relUrl": "/doc/classes/StackView.html" + },"27": { + "doc": "Surface", + "title": "Surface", + "content": "Surface ======= A Surface is a [View](view) subclass which displays a single texture on a square. ## Constructor ~~~ lua surface = Surface(bounds) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](bounds) | The Surface's bounds. | #### Returns Nothing --- ## Methods ", + "url": "/doc/classes/Surface.html", + "relUrl": "/doc/classes/Surface.html" + },"28": { + "doc": "TabView", + "title": "TabView", + "content": "TabView ======= TabView: Switch between different UIs using tabs ## Constructor ~~~ lua tabView = TabView(bounds) ~~~ #### Arguments | Name | Type | Description | ------------- | --------------- | --------------- | bounds | [Bounds](bounds) | The TabView's bounds. | tabSpacing | int | The spacing between tabs | inactiveColor | Color | The color of an inactive tab | activeColor | Color | The color of an active tab | #### Returns Nothing --- ## Methods ", + "url": "/doc/classes/TabView.html", + "relUrl": "/doc/classes/TabView.html" + },"29": { + "doc": "TextField", + "title": "TextField", + "content": "TextField ========= A text field, used for inputting text. Set `onReturn` to define a function that gets called when the enter key is pressed (while the text field is focused): ~~~ lua my_textfield.onReturn = function() -- do stuff end ~~~ Set `onChange` to define a function that gets called when the contents of the text field have changed: ~~~ lua my_textfield.onChange = function() -- do stuff end ~~~ Set `onLostFocus` to define a function that gets called when the text field loses focus: ~~~ lua my_textfield.onLostFocus = function() -- do stuff end ~~~ ## Constructor ~~~ lua local textfield = TextField(o) ~~~ For convenience, you may also set some or all of the TextField's properties within the constructor, i.e.: ~~~ lua local textfield = TextField{bounds=Bounds(0, 0, 0, 1.0, 0.1, 0.001), color={1.0,0.2,0.4,1}, halign=\"center\"} ~~~ #### Arguments | Name | Type | Description | ---- | ----- | --------------- | o | table | A table including *at least* a Bounds component. | #### Returns Nothing --- ## Methods ### textfield:appendText (text) Appends the provided text to the TextField #### Arguments | Name | Type | Description | ---- | ------ | --------------- | text | string | The text to append | #### Returns Nothing --- ", + "url": "/doc/classes/TextField.html", + "relUrl": "/doc/classes/TextField.html" + },"30": { + "doc": "VideoSurface", + "title": "VideoSurface", + "content": "VideoSurface ============ A surface that allocates a video media track to use as texture Send frames like this ~~~ lua app:scheduleAction(0.02, true, function() if surface and surface.trackId then app.client.client:send_video(surface.trackId, pixeldata, width, height, [format=rgba8], [stride=width]) end end) ~~~ ## Constructor Initiate a video surface. A video track will be allocated for the surface. The resolution can not be changed later. #### Arguments | Name | Type | Description | ---------- | --------------- | --------------- | bounds | [Bounds](bounds) | The position and size of the surface | resolution | Table | A table ({int, int}) with width and height giving the pixel resolution of the video. Must match the width and height sent to `sendFrame` | #### Returns Nothing --- ## Methods ### videosurface:setResolution (width, height) Set the input video resolution. Must be called before awakened. #### Arguments | Name | Type | Description | ------ | ---- | ----------- | width | ??? | | height | ??? | #### Returns Nothing --- ### videosurface:setVideoFormat (fmt) Set the output video encoder format. Default \"mjpeg\" which is slow but compatible. You can also set it to \"h264\" if you provide liballonet-av, libavcodec etc. #### Arguments | Name | Type | Description | ---- | ---- | ----------- | fmt | ??? | #### Returns Nothing --- ### videosurface:sendFrame (pixels, width, height, format, stride) Send a video frame to the server #### Arguments | Name | Type | Description | ------ | ------ | --------------- | pixels | String | with pixel data according to format and stride | width | int | The number of pixels in width. Should match the width set at init. | height | int | The number of pixels in height. Shold match the height set at init. | format | string | The pixel format. For example \"bgrx8\". Default: \"rgba\" | stride | int | The number of bytes for each row of pixels. Default: width*bpp | #### Returns Nothing --- ", + "url": "/doc/classes/VideoSurface.html", + "relUrl": "/doc/classes/VideoSurface.html" + },"31": { + "doc": "View", + "title": "View", + "content": "View ==== The View class acts as base for anything visual in an alloapp. It manages a tree of sub-views; its bounds (transform and size) and a connection to a low-level entity. ## Constructor ~~~ lua view = View(bounds) ~~~ #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](bounds) | The View's Bounds component | #### Returns Nothing --- ## Methods ### view:awake () awake() is called when entity exists and is bound to this view. #### Arguments None #### Returns Nothing --- ### view:sleep () sleep() is called when the entity for the view stops existing #### Arguments None #### Returns Nothing --- ### view:isAwake () does the entity for this view exist and is bound to this view? #### Arguments None #### Returns Nothing --- ### view:doWhenAwake (todo) schedule something to do once the entity exists for this view. If it does, do the thing immediately. #### Arguments | Name | Type | Description | ---- | -------- | --------------- | todo | function | The function to run | #### Returns Nothing --- ### view:setGrabbable (grabbable, grabOptions) If this is set to true, user can grab and move this view using the grip button. #### Arguments | Name | Type | Description | ----------- | ------- | --------------- | grabbable | Boolean | Set to `true` to enable the View to be grabbed. | grabOptions | table | A table of options for the grabbable component. See [Components > grabbable](/components#grabbable) | #### Returns Nothing --- ### view:setPointable (pointable) If this is set to true, the user's cursor can land on this view, and you can receive pointer events. (See `onPointerChanged` and friends) #### Arguments | Name | Type | Description | --------- | ------- | --------------- | pointable | Boolean | Set to `true` to enable the View to receive pointer events. | #### Returns Nothing --- ### view:transformFromParent () The mat4 describing the transform from the parent view's location to this view's location, i e the location in the local coordinate system of the parent view. #### Arguments None #### Returns Nothing --- ### view:transformFromWorld () The mat4 describing the transform in world coordinates, i e exactly where the view is in the world instead of where it is relative to its parent. #### Arguments None #### Returns Nothing --- ### view:convertPointFromView (point, other) Converts `point` from `other` view to this view If `other` is nil then the point is assumed to be in world space #### Arguments | Name | Type | Description | ----- | ----- | --------------- | point | Point | A point in the coordinate system of `other` | other | View | The view to convert the point from | #### Returns Nothing --- ### view:specification () The specification is used to describe the entity tree. It is required to represent this view inside the Alloverse. In a subclass, call this implementation and then add/modify your own components. #### Arguments None #### Returns Nothing --- ### view:updateComponents (changes, removals) Asks the backend to update components on the server. Use this to update things you've specified in :specification() but now want to change. #### Arguments | Name | Type | Description | -------- | ----- | --------------- | changes | table | A table with the desired changes, for example: {transform={...}, collider={...}} | removals | table | A table with the keys of componets to remove, for example: {\"collider\", \"skeleton\"} | #### Returns Nothing --- ### view:markAsDirty (components) Mark one or more Components as needing to have their server-side value updated ASAP #### Arguments | Name | Type | Description | ---------- | --------------- | --------------- | components | string|{string} | either a string with one component to update, or a list if string components | #### Returns Nothing --- ### view:setTransform (transform) Give this view an extra transform on top of the bounds. This is useful for things like adding a scale effect. #### Arguments | Name | Type | Description | --------- | --------- | --------------- | transform | cpml.mat4 | The transformation matrix to set | #### Returns Nothing --- ### view:resetPoseFromServer () If the entity backing this view has moved (e g grabbed by a user, or moved by an animation), this won't automatically update the Pose in this view. To make sure your local state reflects what is set in-world, you can call this method to update your Pose to match whatever transform is set on the entity in the world. #### Arguments None #### Returns Nothing --- ### view:setBounds (bounds) Sets the View's bounds (pose and size) in the world. Note that simply changing a View's Bounds won't affect its size or position in the world until this method is run. #### Arguments | Name | Type | Description | ------ | --------------- | --------------- | bounds | [Bounds](bounds) | the Bounds with which to define the Size and Pose of the parent View in the world. | #### Returns Nothing --- ### view:moveBoundsToEdge (horizontal, vertical, depthwise) Uses superview's bounds' size to find an edge and move to that edge. Returns the bounds so you can continue modifying it. See Size:getEdge() #### Arguments | Name | Type | Description | ---------- | ---- | ----------- | horizontal | ??? | | vertical | ??? | | depthwise | ??? | #### Returns Nothing --- ### view:addSubview (subview) Adds a View as a child component to the given View. #### Arguments | Name | Type | Description | ------- | ------------ | --------------- | subview | [View](view) | The View to be added | #### Returns Nothing --- ### view:removeFromSuperview () Detaches the View from its parent #### Arguments None #### Returns Nothing --- ### view:findView (vid) Finds and returns a subview of the given view ID. #### Arguments | Name | Type | Description | ---- | ------ | --------------- | vid | string | The viewId of the View to be searched for. | #### Returns | Type | Description | ------------ | --------------- | [View](view) | The subview corresponding to the view ID. If no view was found, `nil` is returned. | --- ### view:playSound (asset, playOptions) Plays the given sound asset ASAP. You can use playOptions to set things like `loop_count`, `volume`, `length`, `offset` etc... #### Arguments | Name | Type | Description | ----------- | ----- | --------------- | asset | Asset | The asset to play | playOptions | table | A table with valid keys for the \"sound_effect\" component | #### Returns Nothing --- ### view:askToFocus (avatar) Ask the client that uses the given avatar to focus this view to take text input. In other words: display the keyboard for that avatar. #### Arguments | Name | Type | Description | ------ | ---- | ----------- | avatar | ??? | #### Returns Nothing --- ### view:defocus () Dismiss the keyboard for the user that has currently keyboard-focused this view. #### Arguments None #### Returns Nothing --- ### view:onGrabStarted (hand) Callback called when a user grabs this view in order to move it. The server will then update self.entity.components.transform to match where the user wants to move it continuously. There is no callback for when the entity is moved. #### Arguments | Name | Type | Description | ---- | ------ | --------------- | hand | Entity | The hand entity that started the grab | #### Returns Nothing --- ### view:onGrabEnded (hand) Callback called when a user lets go of and no longer wants to move it. #### Arguments | Name | Type | Description | ---- | ------ | --------------- | hand | Entity | The hand entity that released the grab. | #### Returns Nothing --- ### view:onPointerChanged (pointer) Callback for when a hand is interacting with a view. NOTE: You must set view:setPointable(true), or the user's cursor will just fall right through this view! This is a catch-all callback; there is also onPointerEntered, onPointerMoved, onPointerExited, onTouchDown and onTouchUp if you want to react only to specific events. #### Arguments | Name | Type | Description | ------- | ----- | --------------- | pointer | table | A table with keys (see below). The `pointer` table's keys are as follows: * `hand`: The hand entity that is doing the pointing * `state`: \"hovering\", \"outside\" or \"touching\" * `touching`: bool, whether the hand is currently doing a poke on this view * `pointedFrom`: a vec3 in world coordinate space with the coordinates of the finger tip of the hand pointing at this view. * `pointedTo`: the point on this view that is being pointed at (again, in world coordinates). | #### Returns Nothing --- ### view:onPointerEntered (pointer) Callback for when a hand's pointer ray entered this view. The `state` in `pointer` is now \"hovering\" #### Arguments | Name | Type | Description | ------- | ----- | --------------- | pointer | table | see onPointerChanged. | #### Returns Nothing --- ### view:onPointerMoved (pointer) Callback for when a hand's pointer moved within this view. The `pointedFrom` and `pointedTo` in `pointer` now likely have new values. #### Arguments | Name | Type | Description | ------- | ----- | --------------- | pointer | table | see onPointerChanged. | #### Returns Nothing --- ### view:onPointerExited (pointer) Callback for when the hand's pointer is no longer pointing within this view. The `state` in `pointer` is now \"outside\" #### Arguments | Name | Type | Description | ------- | ----- | --------------- | pointer | table | see onPointerChanged. | #### Returns Nothing --- ### view:onTouchDown (pointer) Callback for when the hand's pointer is poking/touching this view The `state` in `pointer` is now \"touching\" #### Arguments | Name | Type | Description | ------- | ----- | --------------- | pointer | table | see onPointerChanged. | #### Returns Nothing --- ### view:onTouchUp (pointer) Callback for when the hand's pointer stopped poking/touching this view. This is a great time to invoke an action based on the touch. For example, if you're implementing a button, this is where you'd trigger whatever you're trying to trigger. NOTE: If pointer.state is now \"outside\", the user released the trigger button outside of this view, and you should NOT perform an action, but cancel it instead. #### Arguments | Name | Type | Description | ------- | ----- | --------------- | pointer | table | see onPointerChanged. | #### Returns Nothing --- ### view:onInteraction (inter, body, sender) an interaction message was sent to this specific view. See [Interactions](/protocol-reference/interactions) #### Arguments | Name | Type | Description | ------ | ---- | ----------- | inter | ??? | | body | ??? | | sender | ??? | #### Returns Nothing --- ### view:onFileDropped (filename, asset_id) Callback called when a file is dropped on the view #### Arguments | Name | Type | Description | -------- | ------ | --------------- | filename | string | The name of the dropped file | asset_id | string | The id of the asset dropped on you | #### Returns Nothing --- ### view:addPropertyAnimation (anim) Add an animation of a property of a component to this view For example, you might want to add a one-second animation of `transform.matrix.rotation.x` from 0 to 6.28, repeating. #### Arguments | Name | Type | Description | ---- | --------------- | --------------- | anim | [PropertyAnimation](PropertyAnimation) | The animation to add to this view. | #### Returns Nothing --- ### view:setTexture (asset) Set the Views's texture using an Asset. The `asset` parameter can be either an [Asset](asset) instance or a raw string hash ~~~ lua View:setTexture(asset) ~~~ #### Arguments | Name | Type | Description | ----- | -------------- | --------------- | asset | [Asset](asset) | An instance of an Asset | #### Returns Nothing --- ### view:setColor (rgba) Set the color of a View using a set of rgba values between 0 and 1. E.g. to set the view to be red and 50% transparent, set this value to `{1, 0, 0, 0.5}` ~~~ lua View:setColor(rgba) ~~~ #### Arguments | Name | Type | Description | ---- | ----- | --------------- | rgba | table | A table defining a color value with alpha between 0-1. | #### Returns Nothing --- ### view:layout () Layout this view and its children. Override to implement your own custom layout. Don't forget to call super's implementation, and don't forget to markAsDirty if needed. #### Arguments None #### Returns Nothing --- ", + "url": "/doc/classes/View.html", + "relUrl": "/doc/classes/View.html" + },"32": { + "doc": "allonet.include.allonet.assetstore", + "title": "allonet.include.allonet.assetstore", + "content": "allonet.include.allonet.assetstore ================================== Api for asset handling ", + "url": "/doc/modules/allonet.include.allonet.assetstore.html", + "relUrl": "/doc/modules/allonet.include.allonet.assetstore.html" + },"33": { + "doc": "allonet.include.allonet.client", + "title": "allonet.include.allonet.client", + "content": "allonet.include.allonet.client ============================== Asset became available ", + "url": "/doc/modules/allonet.include.allonet.client.html", + "relUrl": "/doc/modules/allonet.include.allonet.client.html" + },"34": { + "doc": "allonet.include.allonet.jobs", + "title": "allonet.include.allonet.jobs", + "content": "allonet.include.allonet.jobs ============================ A scheduler instance ", + "url": "/doc/modules/allonet.include.allonet.jobs.html", + "relUrl": "/doc/modules/allonet.include.allonet.jobs.html" + },"35": { + "doc": "allonet.include.allonet.state", + "title": "allonet.include.allonet.state", + "content": "allonet.include.allonet.state ============================= List of entities that have been created since last callback ", + "url": "/doc/modules/allonet.include.allonet.state.html", + "relUrl": "/doc/modules/allonet.include.allonet.state.html" + },"36": { + "doc": "allonet.lib.tinyjpeg.tiny_jpeg", + "title": "allonet.lib.tinyjpeg.tiny_jpeg", + "content": "allonet.lib.tinyjpeg.tiny_jpeg ============================== tiny_jpeg.h Tiny JPEG Encoder - Sergio Gonzalez This is a readable and simple single-header JPEG encoder. Features - Implements Baseline DCT JPEG compression. - No dynamic allocations. This library is coded in the spirit of the stb libraries and mostly follows the stb guidelines. It is written in C99. And depends on the C standard library. Works with C++11 ==== Thanks ==== AssociationSirius (Bug reports) Bernard van Gastel (Thread-safe defaults, BSD compilation) ==== License ==== This software is in the public domain. Where that dedication is not recognized, you are granted a perpetual, irrevocable license to copy and modify this file as you see fit. ", + "url": "/doc/modules/allonet.lib.tinyjpeg.tiny_jpeg.html", + "relUrl": "/doc/modules/allonet.lib.tinyjpeg.tiny_jpeg.html" + },"37": { + "doc": "allonet.src.alloclient_simple_api", + "title": "allonet.src.alloclient_simple_api", + "content": "allonet.src.alloclient_simple_api ================================= Issues a command. Returns a json string that is valid until the next call to this method. If the issued command has a return value then you find it under the \"return\" key in the json. If any events has occurred since the last call to this method then the \"events\" key contains a chronoligical list of those events. sommand: a json object telling allonet what to do Poll the allonet connection for data and events { \"op\": \"poll\" } Connect to a place { \"op\": \"connect\", \"url\": \"alloplace://hello.place.alloverse.com\", \"identity\": {\"display_name\": \"My App Name\"}, \"avatar_spec\": {} -- TODO: Where is this format spec? } Interact with objects { \"op\": \"interaction\", \"interaction\": {} -- TODO: Where is this format spec? } Move about in the world { \"op\": \"intent\", \"intent\": {} -- TODO: Where is this format spec? } ", + "url": "/doc/modules/allonet.src.alloclient_simple_api.html", + "relUrl": "/doc/modules/allonet.src.alloclient_simple_api.html" + },"38": { + "doc": "allonet.src.asset", + "title": "allonet.src.asset", + "content": "allonet.src.asset ================= The protocol message header of asset protocol ", + "url": "/doc/modules/allonet.src.asset.html", + "relUrl": "/doc/modules/allonet.src.asset.html" + },"39": { + "doc": "allonet.src.assetstore", + "title": "allonet.src.assetstore", + "content": "allonet.src.assetstore ====================== Returns missing ranges ", + "url": "/doc/modules/allonet.src.assetstore.html", + "relUrl": "/doc/modules/allonet.src.assetstore.html" + },"40": { + "doc": "allonet.src.client._client", + "title": "allonet.src.client._client", + "content": "allonet.src.client._client ========================== Creates a track for track_id unless one is not already created ", + "url": "/doc/modules/allonet.src.client._client.html", + "relUrl": "/doc/modules/allonet.src.client._client.html" + },"41": { + "doc": "allonet.src.clientproxy", + "title": "allonet.src.clientproxy", + "content": "allonet.src.clientproxy ======================= This file proxies the network client to its own thread. Terminology: - Proxy: The object that runs on the calling thread, probably app's main thread. - Bridge: The object that runs on the internal network thread. - ProxyClient: Externally responds to the client.h API, but just sends messages over to the bridge thread. - BridgeClient: Uses the client.c implementation to actually perform the requested actions. ", + "url": "/doc/modules/allonet.src.clientproxy.html", + "relUrl": "/doc/modules/allonet.src.clientproxy.html" + },"42": { + "doc": "allonet.src.delta", + "title": "allonet.src.delta", + "content": "allonet.src.delta ================= Add a new state to the history. You relinquish ownership and may only use it until the next call of allo_delta_* (and you sould definitely not modify it). ", + "url": "/doc/modules/allonet.src.delta.html", + "relUrl": "/doc/modules/allonet.src.delta.html" + },"43": { + "doc": "allonet.src.media.media", + "title": "allonet.src.media.media", + "content": "allonet.src.media.media ======================= each subsystem is tested to see if it wants to manage this track. return true if successful. ", + "url": "/doc/modules/allonet.src.media.media.html", + "relUrl": "/doc/modules/allonet.src.media.media.html" + },"44": { + "doc": "allonet.src.media.video.libav", + "title": "allonet.src.media.video.libav", + "content": "allonet.src.media.video.libav ============================= encoder may hold on to frame data pointer so no cheating ", + "url": "/doc/modules/allonet.src.media.video.libav.html", + "relUrl": "/doc/modules/allonet.src.media.video.libav.html" + },"45": { + "doc": "allonet.src.server", + "title": "allonet.src.server", + "content": "allonet.src.server ================== map from asset_id to list of client peers ", + "url": "/doc/modules/allonet.src.server.html", + "relUrl": "/doc/modules/allonet.src.server.html" + },"46": { + "doc": "allonet.src.standalone_server", + "title": "allonet.src.standalone_server", + "content": "allonet.src.standalone_server ============================= Remove the client from any track recipient lists ", + "url": "/doc/modules/allonet.src.standalone_server.html", + "relUrl": "/doc/modules/allonet.src.standalone_server.html" + },"47": { + "doc": "allonet.test.assetstore_test", + "title": "allonet.test.assetstore_test", + "content": "allonet.test.assetstore_test ============================ Provide assets a way to send data in the network ", + "url": "/doc/modules/allonet.test.assetstore_test.html", + "relUrl": "/doc/modules/allonet.test.assetstore_test.html" + },"48": { + "doc": "alloui.lua.alloui.json", + "title": "alloui.lua.alloui.json", + "content": "alloui.lua.alloui.json ====================== Encode ", + "url": "/doc/modules/alloui.lua.alloui.json.html", + "relUrl": "/doc/modules/alloui.lua.alloui.json.html" + },"49": { + "doc": "alloui.lua.alloui.standard_animations", + "title": "alloui.lua.alloui.standard_animations", + "content": "alloui.lua.alloui.standard_animations ===================================== A suite of standard animations to use in your app. ", + "url": "/doc/modules/alloui.lua.alloui.standard_animations.html", + "relUrl": "/doc/modules/alloui.lua.alloui.standard_animations.html" + },"50": { + "doc": "Alloverse License", + "title": "Alloverse License", + "content": "# {{ page.title }} ### BSD 2-Clause License Copyright (c) 2018, Nevyn Bengtsson All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ", + "url": "/license/alloverse-license.html", + "relUrl": "/license/alloverse-license.html" + },"51": { + "doc": "Animating Views", + "title": "Animating Views", + "content": "# {{ page.title }} Coming soon {: .label .label-yellow } ", + "url": "/concepts/animating-views", + "relUrl": "/concepts/animating-views" + },"52": { + "doc": "Architecture", + "title": "Architecture", + "content": "# {{ page.title }} This document explains the various concepts. For exact protocol specifications, see the [Protocol Reference](/protocol-reference). ## Basic premises - Your \"place\" is where you decorate, run apps, invite people, and hang out. It's like a collaborative X11 server: It runs a world simulation server, a voip gateway, and all the backing data for 3d UIs for the running apps. - A \"visor\" is the GUI application you use to visit places and interact with your apps. - An \"appliance\" is a process running on your computer, or on a computer on the Internet. Like opening a web page (or launching a remote X11 process), this app can then show its interface and be interacted with inside your place. A place, a user/visor and appliances are all actors using the same network protocol and RPC mechanics, implemented in the `allonet` library. ![allonet](/assets/images/allonet.png) Streams: - The \"state stream\" sends the place's representation once every server heartbeat. Right now, it sends the entire state, but the plan is to send only a diff from the last-acknowledged-state for each client. It's a JSON object of Entities and their properties. - The \"intent stream\" sends the client or appliance's movement intents and related data on every heartbeat. It's a JSON object with relative movement intents and absolute orientation requests; details on controller position, orientation and state; and an ack of the last successfully received state. - Interactions are JSON lists, with a sender entity and receiver entity. - Asset distribution - Media streams are unreliable data streams, e g audio (for voice chat), video/textures (screen sharing etc) and geometry (for advanced appliance representations). Allonet multiplexes these over UDP using `enet`. The plan is to wrap this in TLS. An alternative plan has been to use WebRTC as the transport for free TLS, ICE, udp punch-through, etc. We might still do that in the future, if a nice open source library appears. ## Entities and the place state Entities are things in the world, represented in a scene graph. An entity has only an \"id\" and a list of components. There is a [list of specifications for official components](/components). Apps may invent additional components without them having to be part of the standard. ## Interactions and access control Interactions are the way entities can communicate, including how the visor talks to the place itself (by sending to entity id `place`). It's a json list for now, and the idea is for it to be a pub-sub request-response protocol vaguley inspired by [Peter J Robinson et al's Pedro protocol](http://www.doc.ic.ac.uk/~klc/pedro.pdf). The documentation has a [list of specifications for official interactions](/protocol-reference/interactions), but again, apps and visors can invent their own beyond the specification. The alloplace server becomes the Pedro gateway, and can thus manage access control lists, defined as guard expressions on the expression itself, the sender and the receiver. See [the implementation task](https://github.com/alloverse/alloplace/issues/2) for more information. These ACLs can then control everything needed: - An ACL on the \"announce\" packet allows place owners to restrict access to specific users - An ACL on the \"spawn\" packet allows place owners to permit only specific users and appliances to manifest in the place - An ACL on the \"acl-modify\" packet allows place owners to restrict access to the ACL itself to moderators/owners only. This should be exposed in the visor as much more user friendly than the bullet list above makes it seem... ## The three components ### Alloplace The alloplace server holds all the state and takes care of all the logic. It is the world state, RPC and media transit hub. - runs a game loop, with physics simulation, intent interpretation, etc. - pulses diffs to any actors that want it (primarily visors), - is RPC router between actors (place, visors and apps), including appapp - does ACL permission checks on all RPC - simulates the physical bodies in the place - Manages at least one physical+visual body for each actor, - Allows actors to create additional entities ### Visor I'd love to support different visors: VR, AR desktop 3D and touch. For now, the focus is on the VR visor in Lovr. `alloplace://(enet endpoint)...` URLs can be opened to make a visor open a place. A visor should provide some sort of client identity. The idea for now is for each client to provide a public certificate with a name bound to it, so you can at least know when the same client appears again. Would love an architecture idea for a distributed identity plan (web of trust?). If we end up going with webrtc, the enet endpoint should be replaced with a https endpoint that takes a `POST` of the SDP for an `OFFER`, and responds with the `ANSWER`. ### Appliances Appliances are written in any language and interact with the `allonet` library acting as a \"UIKit\" for XR UI. ![alloui](/assets/images/alloui.png) While appliances can use the allonet API directly, it uses low-level primitives that are not great for building 3D UIs. The plan is to create an \"Allo UI\" UI kit API on top of allonet that spawns entities, shares textures etc as necessary to provide the [UX and UI interactions that Alloverse standardizes on](writing-apps-with-alloUI), providing an intuitive and uniform experience across appliances without every application developer having to think of their own interaction patterns. If a user opens an `alloapp+http(s)://...`, it should be opened by the visor. The visor should then send an interaction to the alloplace server, asking it to spawn the given appliance. The alloplace server should then make the http(s) call to the given URL with a connection instruction json blob: ```json-doc { \"spawnInPlace\": \"alloplace://hostname:port\", \"onBehalfOf\": (client identity), \"query\": (query params as-is from the alloapp url) }. ``` The http server receiving this request should then spawn a process for this agent and have it connect to the `spawnInPlace` URL. See [the implementation task for opening appliances with URLs](https://github.com/alloverse/alloplace/issues/8). The plan is to provide a generic \"alloapp gateway\" node script that responds to requests like the one above which can be easily configured to spawn a process like the above, so that all an app developer needs to implement is a process that takes a place URL in ENV (or the whole json as above), and then asks the allonet API to connect to that URL. ## Assets Entities should have components representing assets such as: - mesh/model - textures - animations - static sounds They should reference these assets by sha1 hash. When a alloplace server sees a new hash in the description of an entity coming from an agent, it should ask that agent for that asset hash over the asset channel. The agent should then stream the asset to the server for caching and redelivery. When another agent then sees the references to the assets, it can thus then ask the alloplace for the corresponding asset, so that it can then later display it. Dynamic textures and audio will later be represented as webrtc streams, and thus not considered assets the same way. Placeserv then acts as an SFU. ", + "url": "/concepts/architecture", + "relUrl": "/concepts/architecture" + },"53": { + "doc": "Asset Protocol", + "title": "Asset Protocol", + "content": "# {{ page.title }} Assets are delivered between agents by using the placeserv as a distribution center. Channel 2 `CHANNEL_ASSETS` is used to deliver reliable messages in any direction. Messages can be requests, responses, informational or raw asset data. \"Assets\" in this context means static, unchanging data used by clients or other agents, such as textures, 3d models, sound files, etc. Basically, anything that would be distributed as resource files in an app or a game. There are no provisions for editing files, or keeping track of changes. While the asset system could be used to distribute arbitrary file systems; editing, listing and change notifications would have to be implemented as interactions. ## Identity Assets are always identified with the format: `asset:sha256:>` The hex digits are the sha-2 256 bit hash of the full file contents of the asset itself. This means that you can't have different versions of the same asset on different clients, because then they are in effect different assets. No filename, mime type or any other metadata is provided in the identifier. If this turns out to be essential, we could add it as additional fields, separating fields with colons. ## Distribution In general, the distribution protocol uses \"pull\" semantics from agents that need data. When an agent requests an asset from placeserv, it will first try to serve it from cache to the requesting agent. If none is found, it broadcasts a request to all connected agents to find who has it. Placeserv then retrieves the asset to placeserv's cache, and then serves the asset back to the requesting agent. The requesting agent might already have a good idea about who has the asset, and MAY include an entity id as a hint to which client SHOULD be asked first (whereafter it MUST ask all other agents to see if they have it). In addition, if an agent has an asset that it thinks is very likely to be needed soon, it MAY push that asset immediately to the placeserv to be stored in the cache. Once an asset is received, it MUST be checked against the hash in its identifier to verify its integrity, and discard it if the hash does not match. ## Caching Placeserv MUST function even completely without a cache. In the case of an asset response which doesn't fit on disk, or an asset response which indicates not cacheable, placeserv must stream this asset directly to the requesting agent, keeping just enough of it in RAM to do so, whereafter it can remove the asset from memory. ## Wire protocol On the wire, messages are: 1. `mid`, a 16-bit unsigned big-endian integer message type code. 2. `hlen`, a 16-bit unsigned big-endian integer header length value. 3. `header`, a utf8 json body of `hlen` bytes. 4. `message`, a raw bytestream of bytes, directly appended after `hlen` bytes of json and until the end of the packet. ### C>S>C Asset request Ask for an asset. The message can be: - agent to placeserv: Ask the place for an asset, in which case it will either respond with it from cache; or ask other agents for the asset and then forward it on. - placeserv to agent: Placeserv has been asked by another agent for an asset, and is now forwarding that request. ``` >>{ \"id\": \">\", \"range\": [start_byte_offset, number_of_bytes], \"published_by\": \">\" // optional } ``` - `id` is the ID of the asset - `range` is the byte range you want. Send `[0, 0]` for a head request. - `published_by` is the entity ID whose owner is likely to own the asset. This is an optional field and only used as a hint. Placeserv should ask this agent first, before asking other agents. ### C>S>C Asset response, transmission header If the receiver has the asset requested, it may respond affirmative with the metadata of the asset in a \"transmission header\" packet. It will then commence sending \"transmission chunks\". An agent can start sending this to a placeserv (or placeserv to an agent) unprompted in case it wishes to warm up the receiver's cache. Once we receive `start_byte_offset + number_of_bytes == total_length` the full asset has been received. The receiver should start confirming the hash of the asset before finally storing it in its cache and forwarding it to the application layer. ``` >>{ \"id\": \">\", \"range\": [start_byte_offset, number_of_bytes], \"total_length\": >, }> ``` ### C>S>C Asset response, failure header Sent in place of `mid:2` in case the receiver is unable to satisfy the request (e g it doesn't have the asset). ``` >>{ \"id\": \">\", \"error_reason\": \">\", \"error_code\": \">\", } ``` ", + "url": "/protocol-reference/asset-protocols", + "relUrl": "/protocol-reference/asset-protocols" + },"54": { + "doc": "Assets", + "title": "Assets", + "content": "# {{ page.title }} Coming soon {: .label .label-yellow } ", + "url": "/concepts/assets", + "relUrl": "/concepts/assets" + },"55": { + "doc": "Code of Conduct", + "title": "Code of Conduct", + "content": "# {{ page.title }} ## Contributor Covenant Code of Conduct ### Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ### Our Standards Examples of behavior that contributes to creating a positive environment include: - Using welcoming and inclusive language - Being respectful of differing viewpoints and experiences - Gracefully accepting constructive criticism - Focusing on what is best for the community - Showing empathy towards other community members Examples of unacceptable behavior by participants include: - The use of sexualized language or imagery and unwelcome sexual attention or advances - Trolling, insulting/derogatory comments, and personal or political attacks - Public or private harassment - Publishing others' private information, such as a physical or electronic address, without explicit permission - Other conduct which could reasonably be considered inappropriate in a professional setting ### Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ### Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ### Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at nevyn@alloverse.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ### Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq ", + "url": "/community/code-of-conduct.html", + "relUrl": "/community/code-of-conduct.html" + },"56": { + "doc": "Contributing to Alloverse", + "title": "Contributing to Alloverse", + "content": "# {{ page.title }} ## Development environment ### Alloplace server This is an Elixir process that acts very similarly to a dedicated game server. You run it, and it acts as a container/world simulator for all users and apps that connect to it. There is an always-on development server at [alloplace://nevyn.places.alloverse.com](alloplace://nevyn.places.alloverse.com). You can use it to try out your code so you don't have to run a server locally if all you're interested in is client development. If you DO want to do server development, see the [setup instructions in alloplace's README](https://github.com/alloverse/alloplace#setup) for setup and run instructions. Once it's running, you have a server on [alloplace://localhost](alloplace://localhost)! ### Allovisor client This is the \"game client\" that connects to the alloplace server. [See its build instructions in its README](https://github.com/alloverse/allovisor#compiling-and-developing-allovisor) It uses CI integration to get the latest version of \"allonet\", the network library used to talk to the Alloverse. It's all in the README how you set that up. ### Appliances See the [appliance dev guide](writing-apps). ### Allonet Allonet is the network layer. Unless you're doing deep protocol hacking, you shouldn't need to mess with it. It's built into allovisor and alloplace, and should work as-is. If you want to hack on it... Allonet is written in C and CMake. I recommend using Visual Studio Code, and installing the \"CMake-Tools\" package to build and run from the GUI. You can then either run `./build/allodummyclient` to try things out. If you want to try it in the real Allovisor, copy `liballonet.dylib` into the Unity project's assets, something like this: cp build/liballonet.dylib ../allovisor/Assets/liballonet.bundle ", + "url": "/community/contributing", + "relUrl": "/community/contributing" + },"57": { + "doc": "Coordinate System", + "title": "Coordinate System", + "content": "# {{ page.title }} The coordinate system in Alloverse has the following properties: 1. One unit is 1 meter 2. Coordinate system is [right-handed](https://www.evl.uic.edu/ralph/508S98/coordinates.html). This implies... 3. Negative X is left/west, positive X is right/east. 4. Negative Y is down, positive Y is up. 5. Negative Z is forward/north, positive Z is back/south. 6. Positive rotation is counterclockwise about the axis of rotation. 7. Rotations are always represented in radians. 8. Y=0 is floor level in model space 9. The neutral pose of all models, avatars, app UIs etc should should face towards positive Z, with \"right\" being positive X and \"up\" being positive Y. 10. For textures, UV 0,0 is bottom-left, with positive U towards the right, and positive V upwards. 11. The origin of an entity should be in its middle. ![Rotation about Y axis is counterclockwise](/assets/images/coordinate-system-XYZ.png) ## Representation Transforms are always represented using a 16-element transformation matrix. Such a 4x4 matrix is represented in data models with a column-major 16-element list of numbers. ", + "url": "/protocol-reference/coordinate-system", + "relUrl": "/protocol-reference/coordinate-system" + },"58": { + "doc": "Get Started (C#)", + "title": "Get Started (C#)", + "content": "# {{ page.title }} {: .no_toc } {: .text-delta } 1. TOC {:toc} ## Introduction For an overview of what Alloverse and alloapps are, please see the first chapters of the [Get Started (Lua)](/) guide. Note that Lua is the preferred alloapp language, and **C# language support is in beta**. ## Prerequisites To write Alloverse apps in C#, you'll need the following: * [The Alloverse app](https://www.alloverse.com/download/). * Either Visual Studio Community >= 2019 (on a Mac or Windows machine)... * Or a plain text editor for code (We recommend Visual Studio Code), together with a command line terminal. Personally, I'm more of a Linux/Mac with command line kind of person, so this guide will primarily be using the `dotnet`. I'll try to include the equivalent Visual Studio screenshots so that you can follow along without using a Terminal. ## Creating your project Let's create a new C# project: {% highlight terminal %} $ dotnet new console -n fancyapp $ cd fancyapp {% endhighlight %} Add AlloUI as a dependency: {% highlight terminal %} $ dotnet add package AlloUI {% endhighlight %} You remember how I said at the top that this is a beta? There's one really terrible hack you'll have to do until I figure out how to properly package native code in a nuget package. You have to manually download `liballonet.so`, and put it at `/home/nevyn/Dev/allonet/build/liballonet.so`. This unfortunately means that this'll only work on Linux for now. {% highlight terminal %} $ mkdir -p /home/nevyn/Dev/allonet/build/ $ curl -o /home/nevyn/Dev/allonet/build/liballonet.so https://alloverse-downloads-prod.s3.eu-north-1.amazonaws.com/allonet/3.0.63.g131e106/liballonet.so {% endhighlight %} ## Setting up the basics Open up `Program.cs`. The most basic setup for an alloapp is one which: 1. Creates an AlloClient and connects to the specified alloplace server, 2. and creates some basic UI elements, 3. and starts the runloop which will serve requests. Modify your file to look something like this, adjusting to taste; {% highlight csharp %} using System; using System.Diagnostics; using System.IO; using System.Collections; using System.Collections.Generic; using AlloUI; namespace fancyapp { class Program { // AlloUI.App manages your connection to the place App app; static void Main(string[] args) { Program sample = new Program(); // Let's use the first commandline argument as the place's URL sample.Run(args[0]); } void Run(string url) { // This is step 1. // Create a client and an app which manages the connection for us. app = new App(new AlloClient(), \"fancyapp\"); // Step 2 is to create our UI app.mainView = MakeMainUI(); // Step 3: connect and run. Run never returns until program // is stopped. app.Connect(url); app.Run(20); } View MakeMainUI() { // Simple UI with a cube and a button Cube cube = new Cube{ Bounds= new Bounds{ Size= new Size(1.0, 1.0, 0.10) }.Move(0, 1.5, -2), Color= new Color(0.9, 0.7, 0.9, 1) }; // Button is laid on top of cube Button button = cube.addSubview(new Button{ Bounds= new Bounds { Size= new Size(0.6, 0.13, 0.1) }.Move(0, 0, cube.Bounds.Size.Depth/2.0 + 0.05), }); button.Label.Text = \"Do the thing\"; // handle clicking the button button.Action += delegate(object sender, Button.ActionArgs args) { Console.WriteLine(\"Hello world!\"); }; button.Cube.Color = new Color(1,1,1,1); // make the cube moveable cube.IsGrabbable = true; return cube; } } } {% endhighlight %} ## Trying your app out That’s it! You should now be able to start your project and see it appear in an Alloplace. If you don’t have one already, you can use our sandbox [alloplace://sandbox.places.alloverse.com](alloplace://sandbox.places.alloverse.com/), or be ambitious and boot one on your own (`docker run -e ALLOPLACE_NAME=\"my place\" -p 21337:21337/udp -it alloverse/alloplace2`). I'm gonna do the former: {% highlight terminal %} $ dotnet run alloplace://sandbox.places.alloverse.com {% endhighlight %} If it all checks out, you should be able to jump into that place on your VR headset or computer and press the button it has created. [Download the Visor app](https://alloverse.com/download/) for your VR or desktop platform of choice, and then click “Connect”, “Sandbox” (or click the alloplace link of the place you’ve rented or started yourself). ![On the left, the UI of our app shown as a white rectangle with an orange button. On the left, a terminal showing the assist run command that instantiates the app; and the word Hello printed thrice.](/assets/images/hello-world-csharp.png \"Hello world running inside Alloverse\") Our app running in Sandbox place. I’ve clicked our simple app’s white button button three times, and the laws of causality held up, printing \"Hello\" thrice to our terminal. At this point, you could go off, do your own thing, read the documentation as you go. Or you could keep reading, and be guided through the development of a simple but functional todo list app, which will help establish the fundamentals and make it much easier for you to build real, complex apps. This is also a good point at which to remind you: if you get stuck, or have questions or feedback, please [hop on Discord](https://discord.gg/KhdMU6P6Uw) and give it to us straight. ## Surprise ending This is where one would expect the tutorial to _really_ get started, teaching the deeper concepts and doing something more advanced. But alas, the number of hours in a day are finite, and the docs are left unwritten. Maybe see it as a challenge? \"Left as an exercise to the reader\" and all that. Who knows, maybe you end up sending us a [docs improvement PR](https://github.com/alloverse/alloverse.github.io/compare)? ;) And again, if you have any questions, [hop on Discord](https://discord.gg/KhdMU6P6Uw)! ", + "url": "/csharp", + "relUrl": "/csharp" + },"59": { + "doc": "Identity", + "title": "Identity", + "content": "# {{ page.title }} Identity hasn't been completely fleshed out yet, but here's the general gist: - Alloverse is decentralized, so there is no central identity authority. - When a Visor is started for the first time, it generates a private+public key pair. The user is also prompted to fill in \"profile data\" such as name, email, profile picture, choice of avatar, etc. - Public key + profile data = \"Alloverse Passport\" - Visors can transfer passports to other visors over Bluetooth or Wifi. E g, if the user starts out on a Mac and later get a Quest, when they start the Quest app they're prompted to either create a passport or transfer one over. If they choose to transfer, the Mac app and Quest app will communicate and show UI to confirm the transfer on both sides. - Visors with the same Passport communicate to connect to the same place, and they control the same avatar, so that it's easy to switch between platforms and level of immersion. - Agents can identify each other using Diffie Hellman key exchange. - This means that an app \"logs in\" the users that are in the room by exchanging keys with them, and there's no need to type in any usernames or passwords. Apps automatically know who is in the room and can customize its contents based on that. - Users also identify themselves to each other, so that you can know that the person you talked to yesterday is the same person you are talking to today. This also lets you build a contact list. - Key exchange is done through Interactions that can be blocked on a Place level or at a Visor level, so that people who don't wish to be identified to other people or apps without authorizing it, won't be. - To back up your Passport, you can link it to your my.alloverse.com account, or another web service. ", + "url": "/protocol-reference/identity", + "relUrl": "/protocol-reference/identity" + },"60": { + "doc": "Components", + "title": "Components", + "content": "# {{ page.title }} {: .no_toc } For an overview of what a component is, please see [Terminology](/protocol-reference). These components are defined by placeserv. Third party developers may create any components they want. They can vote to make their own components official by [pinging the dev team on Discord](https://discord.gg/4KQPX4wuW5). {: .text-delta } 1. TOC {:toc} ## transform Defines the physical location and orientation of the entity relative to its parent entity if it has one; otherwise relative to the world origo. See [Coordinate System](protocol-reference/coordinate-system) for an extended description of how things are positioned and oriented in Alloverse. ```json-doc \"transform\": { \"matrix\": [1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.0,0.0,0.0,1.0] } ``` _note: In an early version of the protocol, transform was represented as a 3-element position vector and 3-element rotation vector with euler angle rotations._ ## geometry Defines the visual geometry of an entity. This should use assets in the future, but until we have assets, geometry is encoded in-line in entity description. **If type is `asset`**, you are providing an asset identifier that is a hash of the contents of the asset. You also need to implement the client asset callbacks in order to respond to asset requests in order to deliver the asset. ```json-doc \"geometry\": { \"type\": \"asset\", \"name\": \"asset:sha256:d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26\" } ``` **If type is `hardcoded-model`**, you're using one of the models hard-coded into the visor. `name` is the name of the model. ```json-doc \"geometry\": { \"type\": \"hardcoded-model\", \"name\": \"hand\" } ``` **If type is `inline`**, Well.. you're living in the past This is only recommended for debugging, and until we have geometry assets. - `vertices` is a required list of lists, each sub-list containing x, y, z coordinates for your vertices. - `normals` is an optional list of lists, each sub-list containing the x, y, z coords for the normal at the corresponding vertex. - `uvs` is an optional list of lists, each sub-list containing the u, v texture coordinates at the corresponding vertex. - `triangles` is a required list of lists. Each sub-list is three integers, which are indices into the above arrays, forming a triangle. ```json-doc \"geometry\": { \"type\": \"inline\", \"vertices\": [[1.0, 1.0, 1.0], [2.0, 2.0, 2.0], [3.0, 3.0, 3.0], [4.0, 4.0, 4.0]], \"normals\": [[1.0, 1.0, 1.0], [2.0, 2.0, 2.0], [3.0, 3.0, 3.0], [4.0, 4.0, 4.0]], \"uvs\": [[0.0, 0.0], [0.5, 1.0], [1.0, 0.0], [1.0, 1.0]], \"triangles\": [[0, 1, 2], [1, 2, 3]] } ``` `geometry` used to also contain `texture`, but that's been moved to `material.texture`. ## material Defines the surface appearance of the component being rendered. ```json-doc \"material\": { \"color\": [1.0, 1.0, 0.0, 1.0], \"shader_name\": \"plain\", \"texture\": \"asset:sha256:d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26\" } ``` - `color`: An array of R, G, B and A value to set as base color for the thing being rendered. Default is white. - `shader_name`: Optional ame of hard-coded shader to use for this object. Currently allows `plain` and `pbr`. Default is `plain`. - `texture`: optional texture asset. Default is none. ## skeleton Configures poses for bone nodes in a rigged mesh. Use this to manually pose/animate the skeleton/bones of an entity that has a rigged model as its `geometry`. ```json-doc \"skeleton\": { \"nodes\": { \"{name of node}\": { // key is name of node \"matrix\": [1,0,0,0, 0,1,0,0, ...]], \"alpha\": 1.0, }, } } ``` * `nodes`: A dictionary of nodes to pose. The key is the name of the node. The structure of each node dictionary: * `matrix`: a 4x4 matrix like in `transform` used to position and rotate the node * `alpha`: Mix this matrix with the node's default pose. 0.5 means using the half-way point between the two transforms, 1.0 means using only the incoming transform. ## text Defines a text renderer for this entity, drawing a text texture at `transform`. ```json-doc \"text\": { \"string\": \"hello world\", \"height\": 0.03, \"wrap\": 0, \"halign\": \"center\" } ``` - `height`: The height of the text. 1 unit = 1 meter. - `wrap`: The width in meters at which to wrap the text, if at all. - `halign`: Horizontal alignment; \"center\", \"left\" or \"right\". ## collider Defines the physical shape of an entity. ```json-doc \"collider\": { \"type\": \"box\", \"width\": 1, \"height\": 1, \"depth\": 1 } ``` ## relationships Specify the relationships between entities, in particular child entites' \"parent\" entity. If an entity has a parent, its transform should be concatenated with all its ancestors' transforms before being displayed. ```json-doc \"relationships\": { \"parent\": \"abc123\" } ``` ## intent Specify how the entity's owning agent's intent affects this entity. - `actuate_pose`: this named pose will be set as this entity's transform each frame. - `from_avatar` (optional): Instead of following the owning agent's intents, follow the agent who has this entity as its avatar. ```json-doc \"intent\": { \"actuate_pose\": \"hand/left\", \"from_avatar\": \"abc123\" } ``` ## grabbable Describes how an entity maybe grabbed/held, and then moved/dragged by a user. The actual grabbing is accomplished using intents. See the field `grab` under [intent](protocol-reference/intent). ```json-doc \"grabbable\": { \"actuate_on\": \"...\", \"translation_constraint\": [1, 1, 1], \"rotation_constraint\": [1, 1, 1], \"target_hand_transform\": [1, 0, 0, 0, 0, 1, .....], } ``` - **`actuate_on`**: Since the `grabbable` component is likely attached to a a handle rather than the entire object being movable, actuate_on indicates how far up this entity's ancestry to walk before deciding which entity to actually move. - Omitting this key indicates the entity itself should be moved within its local coordinate space. - Literal `$parent` means move the parent entity - Any entity ID must be an ancestor of this entity, and indicates exactly which entity to move. - **`translation_constraint`**: Only allow the indicated fraction of movement in the corresponding axis in the actuated entity's local coordinate space. E g, to only allow movement along the floor (no lifting), set the y fraction to 0: `\"translation_constraint\": [1, 0, 1]\". - **`rotation_constraint`**: Similarly, constrain rotation to the given fraction in the given euler axis in the actuated entity's local coordinate space. E g, to only allow rotation along Y (so that it always stays up-right), use: `\"rotation_constraint\": [0, 1, 0]`. - **`target_hand_transform`**: If omitted, the relationship between the hand and the target object is kept constant throughout the grab. If set, the relationship between the hand and the target is set to this 4x4 transformation matrix upon grabbing it. For example, set this to the identity matrix to make an object move immediately into the user's hand when grabbed. ## live_media The entity that holds a `live_media` component for a specific track is the entity that \"plays\" that track; e g for audio, audio will be played from the location of that entity. Please do not try to create live-media components manually. They must be allocated server-side so that the server can allocate a track stream in the network protocol. Instead, send [allocate_track](/protocol-reference/interactions#entity-wishes-to-transmit-live-media) to `place` to add a `live_media` component to your entity. - `track_id`: `CHANNEL_MEDIA` track number that corresponds to what this entity should play back - `type`: `audio` or `video` - `format`: what media format encoder/decoder to use. - `metadata`: a dict of type+format specific metadata about the format of the data. ### Audio For audio, the only valid format is `opus`. The valid `metadata` fields for opus audio are: - `sample_rate`: playback sample rate - `channel_layout`: \"mono\" supported for now. ### Video For video, the two valid formats are `mjpeg` and `h264`. * Pick `mjpeg` for video where a low framerate is okay but you want to make sure everybody always has the latest frame, such as for a whiteboard or drawing app. * Pick `h264` for high framerate video, or decorative video, such as camera, screenshare or a video frame. The valid `metadata` fields for video are: - `width`: Width in pixels of each video frame - `height`: Height in pixels of each video frame ### Example component: ```json-doc \"live_media\": { \"track_id\": 0, // filled in by server \"type\": \"audio\", \"format\": \"opus\" \"metadata\": { \"sample_rate\": 48000, \"channel_count\": 1, } } ``` Legacy format: ```json-doc \"live_media\": { \"track_id\": 0, // filled in by server \"sample_rate\": 48000, \"channel_count\": 1, \"format\": \"opus\" } ``` ## sound_effect Play a sound emanating from this entity, based on a sound asset. Supported file formats: * .ogg * .mp3 * .wav Visors will load the sound asset upon encountering it. It won't play until the `starts_at` field is set and server clock reaches that time. It is recommended that you _first_ create and publish this entity without the `starts_at` field so that visors cache it, and only later sets a starts_at time so that it's more likely to be loaded by the time it's played. * `asset`: ID of the asset to play. (required) * `starts_at`: The server clock time at which to start playing. Set to nil to just load but not play at this time. (optional, default nil) * `loop_count`: How many times should it loop? 0 means no looping (optional, default 0). * `offset`: Skip `n` seconds of audio into the file. (optional, default 0, not implemented yet) * `length`: Play only `n` seconds of audio from the file, skipping the rest of the file before ending or looping. (optional, default false, not implemented yet) * `volume`: Playback volume (optional, default full volume 1.0) * `finish_if_orphaned`: Keep playing the sound to finish even if the component or entity is removed ```json-doc \"sound-effect\": { \"asset\": \"asset:sha256:blabla\", \"starts_at\": 12345.005, \"loop_count\": 2, \"offset\": 3.0, \"length\": 5.56, \"volume\": 1.0, } ``` ## clock Only set on the entity `place`, this component defines the flow of time for a place. ```json-doc \"clock\": { \"time\": 123.0, // in seconds } ``` Its reference time is undefined. It is always seconds as a double. ## cursor Defines a custom cursor renderer, controlling the appearence of the cursor displayed when pointing at the entity. ```json-doc \"cursor\": { \"name\": \"brushCursor\", \"size\": 3, } ``` - `name`: The name of the custom cursor. There's currently only one defined; \"brushCursor\", which displays a white circle. - `size`: The brushCursor's radius, meant to match the size of the current brush size when interacting with a drawable surface. 1 unit = 1 centimeter. Default: \"3\". ## property_animations A list of property animations to play. ```json-doc \"property_animations\": { \"animations\": { \"abc123\": { ... } } } ``` `animations` contains key-value pairs of animation IDs and animation descriptors. You don't manually create this component; instead, please use these interactions: * [add_property_animation](/protocol-reference/interactions#add-property-animation) * [remove_property_animation](/protocol-reference/interactions#remove-property-animation) ... to modify the list of animations. Note that animations are automatically removed if they're non-repeating and their progress reaches 100%. Each animation descriptor has the following structure: ```json-doc { \"path\": \"transform.matrix.rotation.y\", \"from\": 0, \"to\": 3.14, \"start_at\": 10004.2, \"duration\": 0.5, \"easing\": \"quadInOut\", \"repeats\": true, \"autoreverses\": true } ``` * `path`: You describe the property to be animated by setting the path to the _key path_ of the property For example, to change the alpha field (fourth field) of the color property of the `material` component, use the path `material.color.3` (0-indexed). Required * Matrices also have some magical computed properties. You can access `rotation`, `scale` and `translation` of a matrix to directly set that attribute of the matrix. * You can also dive into the specific setting for the x, y or z axies of each of those. For example, to rotate around y, you can animate `transform.matrix.rotation.y`. In that case, the \"from\" and \"to\" values can be regular numbers. * `from`: The value to animate from. Can be a number, matrix (list of 16 numbers), vector (list of 3 numbers) or rotation (list of 4 numbers: angle, and the x y z of the axis). It MUST be the same kind of value as the property we're animating. Required. * `to`: The value to animate to. See `from`. Required. * `start_at`: The server time at which to start the animation. Required. * `duration`: Duration, in seconds. Required. * `easing`: Easing algorithm. Default `linear`. Allowed values: `linear`, `quadInOut`, `quadIn`, `quadOut`, .`bounceInOut`, `bounceIn`, `bounceOut`, `backInOut`, `backIn`, `backOut`, `sineInOut`, `sineIn`, `sineOut`, .`cubicInOut`, `cubicIn`, `cubicOut`, `quartInOut`, `quartIn`, `quartOut`, `quintInOut`, `quintIn`, .`quintOut`, `elasticInOut`, `elasticIn`, `elasticOut`, `circularInOut`, `circularIn`, `circularOut`, .`expInOut`, `expIn`, `expOut`. * `repeats`: Whether to play again from the start after animation finishes. Default `false`. * `autoreverses`: Whether every other repeated iteration should be in reverse. Default `false.` ## `service_discovery` Indicates that the entity provides some sort of service as an interaction API. ```json-doc { \"name\": \"servicename\", \"description\": \"Short developer-readable description of the service\", \"docs\": \"https://url/to/documentation\" } ``` For example, to find a service that lets you view image files, you might look for a service name `imageviewer`, and look into its documentation on how to ask it to display a specific file. ", + "url": "/components", + "relUrl": "/components" + },"61": { + "doc": "Licenses", + "title": "Licenses", + "content": "# {{ page.title }} ", + "url": "/licenses", + "relUrl": "/licenses" + },"62": { + "doc": "AlloUI lua", + "title": "AlloUI lua", + "content": "# {{ page.title }} Incomplete {: .label .label-yellow } ", + "url": "/classes/", + "relUrl": "/classes/" + },"63": { + "doc": "Concepts", + "title": "Concepts", + "content": "# {{ page.title }} Incomplete {: .label .label-yellow } ", + "url": "/concepts", + "relUrl": "/concepts" + },"64": { + "doc": "Index", + "title": "Index", + "content": "- [allonet.include.allonet.assetstore](modules/allonet.include.allonet.assetstore.html) - [allonet.include.allonet.client](modules/allonet.include.allonet.client.html) - [allonet.include.allonet.jobs](modules/allonet.include.allonet.jobs.html) - [allonet.include.allonet.state](modules/allonet.include.allonet.state.html) - [allonet.lib.tinyjpeg.tiny_jpeg](modules/allonet.lib.tinyjpeg.tiny_jpeg.html) - [allonet.src.alloclient_simple_api](modules/allonet.src.alloclient_simple_api.html) - [allonet.src.asset](modules/allonet.src.asset.html) - [allonet.src.asset](modules/allonet.src.asset.html) - [allonet.src.assetstore](modules/allonet.src.assetstore.html) - [allonet.src.client._client](modules/allonet.src.client._client.html) - [allonet.src.clientproxy](modules/allonet.src.clientproxy.html) - [allonet.src.delta](modules/allonet.src.delta.html) - [allonet.src.media.media](modules/allonet.src.media.media.html) - [allonet.src.media.video.libav](modules/allonet.src.media.video.libav.html) - [allonet.src.server](modules/allonet.src.server.html) - [allonet.src.standalone_server](modules/allonet.src.standalone_server.html) - [allonet.test.assetstore_test](modules/allonet.test.assetstore_test.html) - [App](classes/App.html) ## Methods - app:_init (client) - app:openPopupNearHand (popup, hand, distance, entity) - app:addWristWidget (avatarOrHand, widget, callback) - app:scheduleAction (delay, repeats, callback) - app:clientTime () - app:serverTime () - app:updateComponents (changes, removals) - [Asset](classes/Asset.html) ## Methods - asset:_init (data) - asset:read (offset, length) - asset:write (data, offset, totalSize) - asset:size () - asset:getImageWidthHeight () - asset:id (refresh) - asset:like_file () - [AssetManager](classes/AssetManager.html) ## Methods - assetmanager:_init (client) - assetmanager:add (asset, manage) - assetmanager:remove (asset) - assetmanager:get (name) - assetmanager:all () - assetmanager:count () - assetmanager:load (name, callback) - [AssetView](classes/AssetView.html) ## Methods - assetview:_init (asset, bounds) - [Base64Asset](classes/Base64Asset.html) ## Methods - base64asset:_init (base64) - [FileAsset](classes/FileAsset.html) ## Methods - fileasset:_init (path, load) - fileasset:path () - fileasset:size () - [LovrFileAsset](classes/LovrFileAsset.html) ## Methods - lovrfileasset:_init (path) - lovrfileasset:path () - lovrfileasset:size () - [Bounds](classes/Bounds.html) ## Methods - bounds:_init (a, b, c, w, h, d) - bounds:copy () - bounds:moveToOrigin () - bounds:rotate (angle, x, y, z) - bounds:move (x, y, z) - bounds:scale (x, y, z) - bounds:inset (w, h, d) - [Client](classes/Client.html) ## Methods - client:_init (url, name, client, updateStateAutomatically) - client:getEntity (function) - client:launchApp (string, Pose, table, function) - client:sendInteraction (Interaction, Function) - client:poll (timeout_ms) - [Color](classes/Color.html) - [Entity](classes/Entity.html) ## Methods - entity:getParent () - entity:getAncestor () - entity:getMatchingDescendant (The) - [alloui.lua.alloui.json](modules/alloui.lua.alloui.json.html) - [Pose](classes/Pose.html) ## Methods - pose:_init (a, b, c, d) - pose:copy () - pose:identity () - pose:set (other) - pose:rotate (angle, x, y, z) - pose:move (x, y, z) - pose:scale (x, y, z) - pose:concat (otherPoseOrTransform) - [PropertyAnimation](classes/PropertyAnimation.html) ## Methods - propertyanimation:setPath (path) - propertyanimation:setFrom (from) - propertyanimation:setTo (to) - propertyanimation:setStartAt (start_at) - propertyanimation:setDuration (duration) - propertyanimation:setEasing (easing) - propertyanimation:setRepeats (repeats) - propertyanimation:setAutoreverses (autoreverses) - propertyanimation:removeFromView (callback) - [Size](classes/Size.html) ## Methods - size:_init (width, height, depth) - size:copy () - size:inset (byWidth, byHeight, byDepth) - size:set (width, height, depth) - size:getEdge (vertical, horizontal, depthwise) - [alloui.lua.alloui.standard_animations](modules/alloui.lua.alloui.standard_animations.html) - [Button](classes/Button.html) ## Methods - button:_init (bounds, text) - button:setTexture (asset) - button:setColor (rgba) - [Cube](classes/Cube.html) ## Methods - cube:_init (bounds) - cube:setColor (rgba) - [FrameView](classes/FrameView.html) ## Methods - frameview:_init (bounds, thickness) - [GrabHandle](classes/GrabHandle.html) ## Methods - grabhandle:_init (bounds) - [Label](classes/Label.html) ## Methods - label:_init (o) - label:setText (text) - label:setWrap (wrap) - label:setHalign (halign) - label:setColor (color) - label:setFitToWidth (fitToWidth) - [ModelView](classes/ModelView.html) ## Methods - modelview:_init (bounds, asset) - [NavStack](classes/NavStack.html) ## Methods - navstack:_init (bounds) - navstack:bottom () - navstack:top () - navstack:push (view) - navstack:pop () - [Ninepatch](classes/Ninepatch.html) ## Methods - ninepatch:_init (bounds, inset, An, textureInset) - [ProxyIconView](classes/ProxyIconView.html) ## Methods - proxyiconview:_init (bounds, name, author, icon) - proxyiconview:onIconDropped (at_transform) - [ResizeHandle](classes/ResizeHandle.html) ## Methods - resizehandle:_init (bounds, translationConstraint, rotationConstraint) - [Slider](classes/Slider.html) ## Methods - slider:minValue (newValue) - slider:maxValue (newvalue) - slider:currentValue (newValue) - [Speaker](classes/Speaker.html) - [StackView](classes/StackView.html) ## Methods - stackview:_init (bounds, axis) - stackview:margin (newValue) - stackview:layout () - [Surface](classes/Surface.html) ## Methods - surface:_init (bounds) - [TabView](classes/TabView.html) ## Methods - tabview:_init (bounds, tabSpacing, inactiveColor, activeColor) - [TextField](classes/TextField.html) ## Methods - textfield:_init (o) - textfield:appendText (text) - [VideoSurface](classes/VideoSurface.html) ## Methods - videosurface:_init (bounds, resolution) - videosurface:setResolution (width, height) - videosurface:setVideoFormat (fmt) - videosurface:sendFrame (pixels, width, height, format, stride) - [View](classes/View.html) ## Methods - view:_init (bounds) - view:awake () - view:sleep () - view:isAwake () - view:doWhenAwake (todo) - view:setGrabbable (grabbable, grabOptions) - view:setPointable (pointable) - view:transformFromParent () - view:transformFromWorld () - view:convertPointFromView (point, other) - view:specification () - view:updateComponents (changes, removals) - view:markAsDirty (components) - view:setTransform (transform) - view:resetPoseFromServer () - view:setBounds (bounds) - view:moveBoundsToEdge (horizontal, vertical, depthwise) - view:addSubview (subview) - view:removeFromSuperview () - view:findView (vid) - view:playSound (asset, playOptions) - view:askToFocus (avatar) - view:defocus () - view:onGrabStarted (hand) - view:onGrabEnded (hand) - view:onPointerChanged (pointer) - view:onPointerEntered (pointer) - view:onPointerMoved (pointer) - view:onPointerExited (pointer) - view:onTouchDown (pointer) - view:onTouchUp (pointer) - view:onInteraction (inter, body, sender) - view:onFileDropped (filename, asset_id) - view:addPropertyAnimation (anim) - view:setTexture (asset) - view:setColor (rgba) - view:layout () ", + "url": "/doc/", + "relUrl": "/doc/" + },"65": { + "doc": "Modules", + "title": "Modules", + "content": "# {{ page.title }} Incomplete {: .label .label-yellow } ", + "url": "/modules/", + "relUrl": "/modules/" + },"66": { + "doc": "3D Interface Design Guidelines", + "title": "3D Interface Design Guidelines", + "content": "# {{ page.title }} XR is currently the wild west when it comes to interaction patterns. We're all learning what UX works in three dimensions, with different input devices and layouts. In the Alloverse, a multitude of apps are to coexist in shared spaces. Thus, interacting with one app should be similar to how you interact with another app, instead of each app designing their own interaction patterns; otherwise it will be a too fragmented and confusing experience that decreases productivity and enjoyment rather than increasing it. This document thus collects interaction guidelines, so that apps can behave in a straightforward, consistent and fun manner. It's very much a work in progress. If you are an interaction designer, we would love your help in designing this document. _TODO: each section should have instructionals for dual-stick, single-stick and hands._ ## Moving From the rule under \"interactive\", VR movement in the Alloverse doesn't use teleportation. Instead, movement happens with a static camera and an out-of-body experience. Hold down the A button, and use the dual sticks to move (left stick) and rotate (right stick). As you hold A, the camera stays in place while your avatar moves out in front of the camera, When you release A, the camera snaps into the head location of the avatar. ## Expressiveness Since the sticks are not dedicated to movement by default, they can be used for character expressiveness and interaction. ## Grabbing Direct manipulation is the most intuitive way to interact with a computer. You should: - touch, - grab, and - and drag things. You should avoid: - modal interactions, where you have to enter and exit modes to perform common actions. - indirection, where e g pushing a button to perform an action on an object away from the button, where you could have grabbed or pushed the original thing instead ## Pointing Point gesture Pointing at an entity reveals its widgets, which allow you to: - See who it is owned by - Ask its parent app to close ### Poking Entities are informed when they are pointed at, and can react to it. The user can also push the trigger button to \"poke\" the entity at the pointed location. This is how you would push buttons, ## Interactive In real life, any change between two states has some sort of transition. Nothing pops into existence in front of us unannounced; nothing disappears suddenly into nothingness. Your interface should be the same: every change should have a clear transition from its original state. This allows the user's mind to understand what is happening, and build a mental model of the interaction. Don't teleport; move. Don't swap meshes or textures; animate and transition. ## Interface elements ### Lists and scrolling Grabbable widget for scrolling ### Buttons Responds to poke ### Windows ", + "url": "/hig", + "relUrl": "/hig" + },"67": { + "doc": "Hosting an Alloverse app", + "title": "Hosting an Alloverse app", + "content": "# {{ page.title }} So! You've built an Alloverse app, and now you want to host it on the Internet so that other people can use it. This is very similar to hosting a web app: you put some code on a server on the Internet, and then other people can access that server, and run the code on that server to access your web app in their browser. The one thing that is a bit weird to get your head around is that an alloapp isn't accessed directly by the end user's browser! Instead, the APP talks to the PLACE, and then the PLACE updates its world representation and sends this new world to the USER's visor. ![alloui](/assets/images/alloui.png) When you're running an alloapp on your **local development machine**, you have used `./allo/assist run alloplace://sandbox.places.alloverse.com` or something similar to connect your app directly to a specific place. This is good for debugging, or for demoing something to someone once. However, it won't let other users in other Places launch your app, and also your app will stop running in the Place e g when your laptop goes to sleep. **In production**, you can run `./allo/assist serve` on a dedicated server to start a http gateway. When an alloplace accesses this gateway, it will start a new instance of your alloapp, and connect it to the alloplace that asked for it. This is how you put your app properly on the internet, and let other people launch it to their Alloverse Places. ## What's actually going on, underneath? 1. A user clicks an `alloapp:` URL on their computer or headset 2. If Alloverse Visor is already running on that device, and is connected to a place: 3. The Visor calls the interaction `launch_app` on the connected Place, asking it to launch the app on behalf of the user. 4. The Place extracts the http(s) URL portion, and calls it with the URL to get back to the current place + identity of the requesting user (see [url definition](/protocol-reference/url-definitions#alloapp) for full description). 5. The gateway launches a new instance of the app, and connects it to the calling place. ## Step-by-step best practice hosting In the future, there will be a Dockerfile in the standard alloapp template. For now, you can do something like this: 1. Put your code on a server somewhere. This server should have a nice DNS name and proper SSL certificates. 2. Using systemd or similar, configure the server to automatically run `./allo/assist serve` in the root of your project on boot 3. [Setup an nginx SSL termination proxy](https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-load-balancing-with-ssl-termination) in front of it, with a `proxy_pass` to `http://localhost:8000` (which is where the gateway is running). (this is technically optional, but recommended) 4. If you did step 3, make sure to add a firewall disallowing traffic to port 8000. You can now figure out the URL of your app. If your server is `example.com`, your gateway is now available over HTTPS at `https://example.com`; or if you didn't configure nginx or ssl, at `http://example.com:8000`. Take this URL, and prepend `alloapp:`, so you get something like: **`alloapp:https://example.com/`**. That's your app's URL! In the hopefully not too distant future, you'll be able to log onto [my.alloverse.com](https://my.alloverse.com) to register your app metadata and URL. This will then publish your app to the Marketplace inside Alloverse, so any user can access it. ", + "url": "/hosting", + "relUrl": "/hosting" + },"68": { + "doc": "Community", + "title": "Community", + "content": "# {{ page.title }} Incomplete {: .label .label-yellow } ", + "url": "/community", + "relUrl": "/community" + },"69": { + "doc": "Get Started (Lua)", + "title": "Get Started (Lua)", + "content": "# {{ page.title }} {: .no_toc } {: .text-delta } 1. TOC {:toc} ## What is Alloverse? Alloverse is an open platform for collaborative workspaces in 3D. It’s Gibson-style Cyberspace - but for day-to-day work and play with friends and colleagues. It’s a VR and AR platform for creating spaces, and for running real applications within those spaces, together with other people. In nerd terms, it's a VR/AR/3D \"window manager\" and collaborative workspace. For more information, please see the [Alloverse website](https://www.alloverse.com){:target=\"_blank\"}. * Your \"Place\" is where you decorate, run apps, invite people, and hang out. A \"place\" is a server. It's like a collaborative X11 server: It runs a world simulation server, a voip gateway, and all the backing data for 3d UIs for the running apps. (You can check out the [reference implementation on Github](https://github.com/alloverse/alloplace2)). * A \"visor\" is the GUI application you use to visit places and interact with your apps. It's sort of the VR equivalent of a web browser. It's [what you download from our website to get started](https://alloverse.com/download/). ([_its_ reference implementation is of course also on github](https://github.com/alloverse/allovisor).) * An \"app\" or \"alloapp\" is a process running on a server, which connects to a Place to show its user interface to people interacting with it. It's sort of like a web page or X11 process. We'll be building such an alloapp today. * The network and \"UI protocol\" is taken care of by the [allonet](https://github.com/alloverse/allonet) library, written in C and used by all the above projects. ## Developing an Alloverse App An Alloverse app is a server-side app that you run on your own server, similar to how you would host a web app on your own server. The difference is, when a user goes to your app on the web, it loads into that user’s web browser on their computer; but when a user goes to your alloapp in an Alloverse Place, the app loads into the Place for all users in that Place to use, and your code gets collaboration and VR super-powers for free. This tutorial will take you through creating an Alloverse app using the Lua programming language, since that is the language we’ve developed the most support for so far. You can build apps on Mac, Linux or Windows. On Windows, you’ll need a Unix shell, preferrably WSL2 (but mingw/msys2 could also work if you're lucky): [follow this WSL installation guide](https://learn.microsoft.com/en-us/windows/wsl/install) and install Ubuntu. In contrast to a web framework like Rails or Django, Alloverse doesn’t install any software onto your system. Instead, a project is completely self-contained within its project folder, and contains everything it needs to run. Note that building alloapps is done completely in text (through VSCode and Terminal), and there are currently no graphical editors (like the scene editor you might be used to from Unity or Unreal). ## Prerequisites To write your own Alloverse app, you'll need the following: * The [Alloverse Visor](https://www.alloverse.com/download/){:target=\"_blank\"} is the official application that serves as the window through which you can view and interact with the Alloverse. At a later stage you should try installing it on a VR headset, but for the purposes of this guide we recommend and assume you'll be using the desktop version. * A terminal app (preinstalled on Mac and Linux, separate install on Windows). * A plain text editor for code (We recommend [Visual Studio Code](https://code.visualstudio.com/download){:target=\"_blank\"}). * Git (Comes with Xcode on Mac. If you just type `git` into a terminal, it'll ask to install it for you even without Xcode). * [Git Large File Storage](https://git-lfs.com) * Only on Windows: WSL2 (or if you're up for some manual work, Cygwin or MingW) ## Running the Alloverse Visor Let's begin by opening the window to Alloverse by getting the Visor running and connected to a Place. Open the app you just downloaded, press the “Connect” button and enter “Sandbox” in the input field. Alternatively, if you're on a Mac, clicking [this link](alloplace://sandbox.places.alloverse.com/) will automatically do the above for you. That's it - you're now inside the Alloverse Sandbox Place, providing you a way to view and interact with the app you'll be developing in the next step. ## Creating your project Now, let's use the terminal to create a project folder, and ask AlloAssist to initialize a base project with all dependencies into it. From your terminal: {% highlight terminal %} $ mkdir allo-todo $ cd allo-todo $ git init $ /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/alloverse/alloapp-assist/master/setup.bash)\" {% endhighlight %} If all went well so far, you should now be able to run `./allo/assist help` to review all available commands. This might also be a good time to run `git commit -a`, so the next commit only contains your own changes. Anyway, the curl’d script will have created this project structure for you: - `lua` contains the Lua source code for your app - `lua/main.lua` contains your app! It barely does anything yet. But you can add more code to this file to keep going, and add more files into lua to modularize your code. - `images` contains images you want to use as textures on buttons, etc. - `allo` contains the Alloverse app framework. You should not edit anything in here, as an upgrade of the framework will overwrite your changes. - `allo/assist` is a script that helps you with tasks such as starting a server, installing dependencies, etc… - `allo/libs` contains compiled C dependencies as dynamic libraries and executables. These are `.gitignore`d to save space. If you check out your code on another computer, you can `./allo/assist fetch` to install them again, so you don't need to (and shouldn't) commit them. - `allo/boot.lua` sets up the runtime environment for your app. This code is generated, so it's not recommended to modify this file. ## Trying your app out You should now be able to make your app appear in an Alloplace! In the terminal, run the following command: {% highlight terminal %} $ ./allo/assist run alloplace://sandbox.places.alloverse.com {% endhighlight %} If everything checks out, go to the Alloverse Visor, where you should be able to see and interact with the app and its button. (If you've moved around in the place, you may need to look around to see it) ![On the left, the UI of our app shown as a white rectangle with an orange button. On the right, a terminal showing the assist run command that instantiates the app; and the word Hello printed thrice.](/assets/images/hello-world-1024x318.jpg \"Hello world running inside Alloverse\") *Our app running in Nevyn’s place. I’ve clicked our simple app’s orange button button three times, and the laws of causality held up, printing \"Hello\" thrice to our terminal.* At this point, you could go off, do your own thing, read the documentation as you go. Or you could keep reading, and be guided through the development of a simple but functional todo list app, which will help establish the fundamentals and make it much easier for you to build real, complex apps. If your app ever disappears, take a look around in the Alloverse to make sure you're not just looking in the wrong direction. If you still can't see it, it might have crashed. Check out the terminal from which you ran it - there should be error messages to help you figure out what went wrong. This is also a good point at which to remind you: if you get stuck, or have questions or feedback, please [hop on Discord](https://discord.gg/KhdMU6P6Uw){:target=\"_blank\"} and give it to us straight. ## Anatomy of Hello World in the Alloverse Let’s open up `lua/main.lua` and have a look at the code, to understand what's going on. If you're not much for theory, you may skip this section and get straight to [making an app](#building-your-app). {% highlight lua %} local client = Client( arg[2], \"allo-todo2\" ) local app = App(client) {% endhighlight %} Above, we're using a Client to connect this app to a Place. `arg[2]` is the URL of the place to connect to, which Assist sets up for you in boot.lua. App then manages the Client connection for you, and manages the lifetime of your app. {% highlight lua %} assets = { quit = ui.Asset.File(\"images/quit.png\"), } app.assetManager:add(assets) {% endhighlight %} Assets are files (images, glb models, videos, sounds, etc...) that you want to use in your app. They need to be published so that users' visors can download them before you can use them. We make `assets` global so you can use it throughout your app. {% highlight lua %} local mainView = ui.Surface(ui.Bounds(0, 1.2, -2, 1, 0.5, 0.01)) mainView.grabbable = true {% endhighlight %} Your application is represented by a hierarchy of views. If you're a web developer, you can think of it as nested elements in a DOM. If you come from Unity, it's similar to the GameObject hierarchy, with transforms being relative to parent GameObjects. If you're an oldschool Macintosh Toolbox developer, I'm sorry. `app.mainView` is the main UI for your app. You should set it up with your main user interface before connecting to the Place. `Bounds` is the position and size of your object: - The first three numbers defines the x, y and z positions (see: [coordinate space reference](/protocol-reference/coordinate-system){:target=\"_blank\"}). In this case, `0, 1.2, -2` means the `mainView` is centered horizontally 1.2 meters up from the floor and 2 meters into the Place, depth-wise. - The second triplet of numbers refers to the object's width, depth and height. In this case, `1, 0.5, 0.01` defines the object as being 1 meter wide, half a meter tall, and one centimeter deep. We also make the main view `grabbable`, so the user can move it around the Place. Alternatively, you can add a GrabHandle, which acts like the title bar of a desktop UI's window. {% highlight lua %} local button = ui.Button(ui.Bounds(0.0, 0.05, 0.05, 0.2, 0.2, 0.1)) mainView:addSubview(button) button.onActivated = function() print(\"Hello!\") end {% endhighlight %} The standard template has created a standard Button component for you, at 2 decimeters wide and tall. Its position of 5 centimeter down and forward is relative to its parent - in this case the `mainView`. The `onActivated` callback lets us run code when the button is pressed. This'll print \"hello\" to your local terminal when you run the app on your machine (even if you're running the visor somewhere else on the Internet)! {% highlight lua %} app.mainView = mainView app:connect() app:run() {% endhighlight %} Finally, the template has configured the app's `mainView` to use this dummy UI. Then, it connects to the Place we've been asked to run in, and finally hands over the runtime of the app to the UI framework so it keeps running until the user quits it. Now that we got the gist of how to compose an app like this, we can replace it with something useful. ## Building your app Let's make a todo list app! I'm a master artist, so I've painted this piece of art to represent our goal: ![Todo list app sketch](/assets/images/todo-sketch.jpeg) So we've got: - A list of items to check off, - A button to add an item - A dialog that pops up where you can name your item. Sounds great. Let's get started. Note: This is where we start coding for real. {: .label .label-green } Select everything from (and including) `local mainView = ...` down to `app.mainView = mainView` and delete it, and we'll write some new, fun code. Instead of having a bunch of loose views strewn around the code, I enjoy creating a class for each main container of UI. Some equivalent of a \"window\", or \"view controller\", or \"component\" if you will. Let's create a `TodosView`, which will display the list of items, and allow you to quit the app, and add new items. Copy the code block below, and paste it between `app.assetManager:add(assets)` and `app:connect()`. {% highlight lua %} class.TodosView(ui.Surface) function TodosView:_init(bounds) self:super(bounds) self.grabbable = true self.quitButton = self:addSubview(ui.Button(ui.Bounds{ size=ui.Size(0.12,0.12,0.05) })) self.quitButton:setDefaultTexture(assets.quit) self.quitButton.onActivated = function() app:quit() end self.addButton = self:addSubview(ui.Button(ui.Bounds{ size=ui.Size(bounds.size.width*0.8,0.1,0.05) })) self.addButton.label:setText(\"Add todo\") self.addButton.onActivated = function(hand) self:showNewTodoPopup(hand) end self.todoViews = {} self:layout() end {% endhighlight %} We're using [Penlight's `class` macro](https://stevedonovan.github.io/Penlight/api/libraries/pl.class.html){:target=\"_blank\"} to create classes. We inherit [ui.Surface](/doc/classes/Surface.html){:target=\"_blank\"}, which is like a [ui.View](/doc/classes/View.html){:target=\"_blank\"} except it also draws a background, so our app gets a backdrop to rest our controls onto. We create a constructor, where we set up initial state and controls. Here we want a quit [Button](/doc/classes/Button.html){:target=\"_blank\"}, and an add [Button](/doc/classes/Button.html){:target=\"_blank\"}. We immediately add them as subviews to the TodosView, so they show up in the view hierarchy. For the first button, we use one of our image assets as a texture, and for the other, we set the text on the label instead. AlloUI doesn't have a comprehensive layout system itself, so we'll call our own `layout` at opportune moments. Let's stub it out so we have something to start with. We'll also create an instance of it, and use it as our app's main view. Paste the following into your code, just below the `_init` function: {% highlight lua %} function TodosView:layout() self.quitButton.bounds:moveToOrigin():move( 0.52,0.25,0.025) self.addButton.bounds:moveToOrigin():move( 0, -0.15,0.025) end app.mainView = TodosView(ui.Bounds(0, 1.2, -2, 1, 0.5, 0.01)) {% endhighlight %} Let's restart your app to see your new code changes. Open the terminal where your app is running, and quit it with ctrl-C. Then, fire off a quick `./allo/assist run alloplace://sandbox.places.alloverse.com` in your terminal, and you'll be presented with this beauty in Alloverse: ![A white surface with a close button in the top right, and an 'add todo' button along the bottom](/assets/images/todo-progress-1.png) We've created a VR interface, how cool is that!? Just keep in mind that while the \"Add todo\" button is is visible, clicking it will cause the app to crash. So, let's attach some functionality to it: let's make it create that popup for inputting new todo items. Paste the following code block right underneath the `layout()` function: {% highlight lua %} function TodosView:showNewTodoPopup(hand) local popup = ui.Surface(ui.Bounds{size=ui.Size(1,0.5,0.05)}) local input = popup:addSubview(ui.TextField{ bounds= ui.Bounds{size=ui.Size(0.8,0.1,0.05)}:move(0, 0.15, 0.025) }) local done = function() self:addTodo(input.label.text) popup:removeFromSuperview() end input.onReturn = function() done() return false end input:askToFocus(hand) local addButton = popup:addSubview(ui.Button(ui.Bounds{size=ui.Size(popup.bounds.size.width*0.8,0.1,0.05)})) addButton.bounds:move(0, 0, 0.025) addButton.label:setText(\"Add\") addButton.onActivated = done local cancelButton = popup:addSubview(ui.Button(ui.Bounds{size=ui.Size(popup.bounds.size.width*0.8,0.1,0.05)})) cancelButton:setColor({0.4, 0.4, 0.3, 1.0}) cancelButton.bounds:move(0, -0.15, 0.025) cancelButton.label:setText(\"Cancel\") cancelButton.onActivated = function() popup:removeFromSuperview() end app:openPopupNearHand(popup, hand) end {% endhighlight %} Phew, that's a handful. Let's step through it. - `popup` is our new popup window. It's another surface, one meter by a half. - To it, we add a [TextField](/doc/classes/TextField.html){:target=\"_blank\"}! This is your standard issue text input view. Tapping it will give it focus, allowing you to type something in it with your keyboard. (If you would do this while using the Alloverse headset app, it will display a virtual keyboard for you to use. - We want to close the popup both when the return key is pressed, and when you manually tap the \"Add\" button, so let's create a callback we can use for both called `done`. - `onReturn` is used to react to return/enter key, and we can also use it to make sure a newline character isn't added to the text. - `showNewTodoPopup` has been called with a `hand`. That's the hand of the user that tapped the \"Add todo button\". It belongs to an avatar, so we can actually ask the avatar if it would pretty please focus this text field, so the user can begin typing in it directly? If you'd be so kind. - The `addButton` uses the same `done` callback as `onReturn` - `cancelButton` just closes the popup, no questions asked. - Finally, `app:openPopupNearHand` will display our new fancy popup 60 centimeters away from the user's hand, which is a convenient distance at which to do your job. Warning: incoming rant {: .label .label-yellow } The cool thing about this popup is that if you have multiple people in the room, they can all get their own input popup, so they can add their own items without interfering with each other. This is an important and unusual aspect of UI design and development: all your UI is real time collaborative, so you have to consider how your application behaves when multiple people use it at the same time. For example, if you had added the input field directly to the main view, only one user would've been able to add items at a time, and they'd likely have interfered with each other's work. By using a personal popup, users can work naturally collaboratively and in tandem. Relax: rant over. {: .label .label-green } Here's what this new fancy popup should look like once you tap the \"Add todo\" button: ![A white surface with a text field, an 'add' button, and a 'cancel' button.](/assets/images/todo-progress-2.png) Before we continue, we'll need another asset. Download ![](/assets/images/checkmark.png) [checkmark.png](/assets/images/checkmark.png) and put it in `images/`. Then we'll have to refer to it from code. At the top of your file, you're already loading the `quit` texture asset. Modify that block to also load and publish the `checkmark` texture, by making the code block look like this: {% highlight lua %} assets = { quit = ui.Asset.File(\"images/quit.png\"), checkmark = ui.Asset.File(\"images/checkmark.png\"), } {% endhighlight %} Cool. Cool cool cool. Let's make it actually possible to add todo items, yeah? Add these two functions below your existing ones: {% highlight lua %} function TodosView:addTodo(text) local todoView = ui.View(ui.Bounds{size=ui.Size(self.bounds.size.width*0.8,0.1,0.05)}) local checkButton = todoView:addSubview(ui.Button(ui.Bounds{size=ui.Size(0.1, 0.1, 0.05)})) checkButton.bounds:move(-self.bounds.size.width/2 + checkButton.bounds.size.width, 0, 0) checkButton:setDefaultTexture(assets.checkmark) checkButton.onActivated = function() self:removeTodo(todoView) end local label = todoView:addSubview(ui.Label{ bounds= todoView.bounds:copy():inset(0.1, 0.05, 0):move(0.05, 0,0), color= {0,0,0, 1}, halign= \"left\", text= text }) table.insert(self.todoViews, todoView) self:layout() self:addSubview(todoView) end function TodosView:removeTodo(todoView) local index = tablex.find(self.todoViews, todoView) table.remove(self.todoViews, index) todoView:removeFromSuperview() self:layout() end {% endhighlight %} This should start to look familiar. - `todoView` is the parent view of all the controls related to the todo list item. We store them in `self.todoViews` so we can layout them properly later. - `checkButton` is used to check off a completed item. We place it along the left edge, tell it to use our new fancy checkmark texture, and configure it to call an as-of-yet nonexistent `removeTodo` method. - `label` is the text label describing our item. Text is black (that's a list of Red, Green, Blue and Alpha, with components from 0.0 to 1.0), horizontally aligned to the left, with the text from the user. - We call `layout` so our new item is positioned correctly - And then we add it as a subview, yay! `removeTodo` just finds the given item in the list, and removes it from both the list and the UI, running a relayouting pass to adjust the other items' positions. That's awesome! We can now add and remove todo list items! Just one bummer: they all end up stacked on top of each other. We'll need to lay them out before this is usable. Let's replace our dummy `layout` with something better. Remove the existing contents of your `layout` function, and type in this: {% highlight lua %} function TodosView:layout() local height = #self.todoViews * 0.13 + 0.25 local pen = ui.Bounds{ size=self.addButton.bounds.size:copy(), pose=ui.Pose(0, -height/2, self.addButton.bounds.size.depth/2) } pen:move(0, 0.07, 0) self.addButton:setBounds(pen:copy()) pen:move(0, 0.15, 0) for i, v in ipairs(self.todoViews) do v:setBounds(pen:copy()) pen:move(0, 0.13, 0) end self.quitButton.bounds:moveToOrigin():move( 0.52, height/2, 0.025) self.quitButton:setBounds() self.bounds.size.height = height self:setBounds() end {% endhighlight %} Here's a pattern I've brought with me all the way back from building black-and-white Mac apps in the 80s: using a `pen` variable which represents a rectangle (or rather, a 3D box!) where we want to \"stamp out\" our UI, moving the pen as we walk through our items. - We want to adjust the height of our UI to exactly fit our items. Each item is 13 cm tall, and then there's 25 cm of padding for the \"Add todos\" button. - The add button's size is a perfect template for our pen. Let's start the pen at the bottom of the window and lay out controls bottom-to-top, and also move it out from the surface so that our elements sit ON TOP of the surface, instead of embedded in it. - Let's add 7 cm of initial padding - There. Stamp the pen's current state into the add button's bounds. - Add another 15 cm of padding. - Stamp the pen onto each todo item view, adding 13 cm of padding for each item. - Figure out the perfect new location for the quit button, and... - Set the height of the whole app to the one we calculated at the start, and update the bounds so it's reflected on the users' headsets. You know what? I think this is pretty stellar. This'll do nicely. If you dotted every i, your app should look something like this: ## Deploying your app So, you built your fancy VR app. Now you want to show it off, and deploy it so all the Alloverse users in the world can run it in their places, right? Well, you're in luck! Go ahead and learn about [hosting an Alloverse app](/hosting)! ## Celebration If you made it this far, go eat a cinnamon roll, you deserve it. It's on me. Really, just [ping me on Discord](https://discord.gg/KhdMU6P6Uw) and it's yours. We'd at least love to hear from you, and see your creations. Once you make your own apps, even if you're not down with cinnamon rolls, do let us know, so we can feature your app in our app browser, blog and tweet about it, etc etc. ## Advanced Concepts ### Running your own Place server If you're feeling ambitious, you can boot a Place of your own using the `docker run -e ALLOPLACE_NAME=\"my place\" -p 21337:21337/udp -it alloverse/alloplace2` command. In the Alloverse connect input, enter the name of the place you just created. ### Building something more advanced * [How to build a VR retro arcade](https://alloverse.com/2022/02/03/how-to-make-a-retro-arcade-in-a-week-101/) on our blog steps you through building a SNES emulator in VR. ", + "url": "/", + "relUrl": "/" + },"70": { + "doc": "Protocol Reference", + "title": "Protocol Reference", + "content": "# {{ page.title }} # Terminology Please begin by reading the [architecture documentation](/concepts/architecture), as it explains how all these components fit together. To see how these messages actually sent over the network, see [Wire Protocol](/protocol-reference/wire-protocol). This document also specifies the differences between the specification and the current implementation. ## Agent An agent is code that can spawn entities, and communicates to a place on behalf of the entities it owns. Thus, all these are agents: - The place itself (referenced in requests with \"place\" magic entity id) - any visor (represented as the allonet connection to the place) - any app (also represented as its allonet connection) Every connected agent has to spawn its \"avatar\" entity as part of its `ANNOUNCE` message, so that it has a representation in a place and can be communicated with (or terminated, in the case of apps). When an agent disconnects from a place, all its entities are removed from the place. ## Agent identity An agent's `ANNOUNCE` message contains its identity: display name, profile URL, and a certificate/public key that can be used to identify the same user/app across connections and places without a central identity authority server. Identity is currently expressed as the following JSON blob: ```json-doc { \"display_name\": \"annie\" } ``` ## Entity An entity is the manifestation of an agent in a place. The only fixed information in an entity is its `id`. Everything else is specified as a set of components. JSON specification: ```json-doc { \"id\": \"1234\", \"components\": { \"transform\": // every component has a string key { // and an object value // the keys and values should be consistent with // with the specification for that key. See \"Component\" } } } ``` ## Component A component describes an aspect of an entity, such as: - `transform`: its position, rotation and size - `mesh`: description of its physical geometry - etc... Alloverse defines **a set of official [components](/components)**. App developers are free to invent their own components, which is useful for app-to-app communication (though a standard Visor will not be able to interpret them). ## Intent The \"intent\" blob is used every heart-beat to indicate how the agent intends that its avatar (and other owned entities) should move and behave in real-time this frame. It only covers basic movement: more complex behavior is covered by \"interactions\". It's sent over the unreliable channel, so it should be repeated every frame as long as it's relevant. The blob is also used to send housekeeping information such as acknowledging receipt of state diffs. See [Intent](/protocol-reference/intent). ## Interaction An on-demand message either announcing information, or requesting something from one entity to another (sent by the requesting entity's agent, and handled by the receiving entity's agent). Alloverse defines **a set of official [Interactions](/protocol-reference/interactions)**. App developers are free to invent their own interactions, which is useful for app-to-app communication (though a standard Visor will not be able to interpret them). # Types of communication ## Entity intent Agent to place per-frame message. See [Intent](/protocol-reference/intent). ## Entity to entity interaction (request/response/pubsub) Sent from agent, to place, then forwarded to the designated agent, over the reliable channel on demand. ```json-doc [ \"interaction\", \"{oneway|request|response|publication}\" \"{source entity ID}\", \"{destination entity ID or emptystring if publication}\", \"{request ID or empty string if single-way}\", // interaction body goes here ] ``` The agent sending the request must own the source entity. ### Requests and responses If the second field is set to \"request\" and a request ID is set, the recipient can respond to the interaction by setting \"response\" and filling in the same request ID, and the alloplace server will route the message correctly. A response must be sent to the entity that sent the request. Sending a response to a an entity that didn't request it may lead to force disconnection. The client sets its own request IDs. These must be unique for each request this session for this agent. An UUID or monotonically increasing integer as string should do. ### Publication and subscription If the second field is \"publication\" and no destination entity is filled in, it's a publication that anyone can subscribe to. This is useful for apps to broadcast information that is instantaneous rather than a property of an entity (in which case it would have been a property of a component of an entity). Agents can subscribe to publications by providing a \"match pattern\" which is an Elixir guard expression. This lets agents set very fine grained subscriptions to exactly what interactions it wants to receive. If nobody is subscribing to a matching pattern of the given publication, the message is filtered out by the alloplace server. Behavior is undefined if you provide a request id in a publication. Future versions may allow publications to have responses. ### Oneway The message is directed to a single entity/client, and you can't respond to it. `request_id` should be empty. ### Access control Access control is defined on the interaction level. The alloplace server can be fed with Elixir guard expressions the same way that subscriptions work, and an \"allow\" or \"deny\" flag, which then becomes the \"Access Control List\" (ACL) for interactions in the place. Since announce is an interaction, an interaction ACL can be used to allow/deny agents from joining a place. Likewise, since changing the ACL is also an interaction, you can use an ACL to control who may modify the ACL. In other words, anything except intents and place state updates can be filtered using interaction ACLs. Interaction ACLs guard on the entire interaction message, and not just the payload body. So for example, the following rule would disallow users named \"harry\" from joining a room: ```json-doc [ \"deny\", \"\"\"[ \"interaction\", // match exactly on provided value for first field \"request\", SourceEntity, // bare words become variables \"place\", _, // underscore means unused variable = ignored value [ \"announce\", [\"identity\", Identity], _ ] ] where Identity[\"name\"] == \"harry\" \"\"\" ] ``` Note that the rule itself is an Elixir string, not a JSON expression. If an interaction is sent by an agent but is disallowed by an ACL rule, the following message is sent in response: ```json-doc [ \"interaction_denied\", // original interaction goes here, // rule that caused denial goes here ] ``` ## Place to agent state update Sent every heart-beat on the unreliable channel 0 to let agents know what the world looks like. See [State Diffs](/protocol-reference/state-diffs) for full format and explanation, and [Entity](#entity) to understand the things the state contains. # Official components Please see the [list of official components](/components). These are defined by alloplace, and define how an agent and entity interact with a place. # Official interactions Please see the [list of official interactions](/protocol-reference/interactions). These are defined by alloplace, and define how an agent and entity interact with a place. # HTTP Endpoints ## Alloapp Gateway HTTP service that takes a connection request, repackages as env vars, and boots the requested process. Node express. - `ALLOVERSE_PLACE_URL` - `ALLOVERSE_REQUESTER_IDENTITY` - `ALLOVERSE_URL_PARAMS` ", + "url": "/protocol-reference", + "relUrl": "/protocol-reference" + },"71": { + "doc": "Examples", + "title": "Examples", + "content": "# {{ page.title }} Incomplete {: .label .label-yellow } ", + "url": "/examples", + "relUrl": "/examples" + },"72": { + "doc": "Intent", + "title": "Intent", + "content": "# {{ page.title }} Sent from agent to place over unreliable channel 0 every heartbeat to indicate movement of clients. This intent is then actuated onto the client state both by client-side interpolation and on the server at the server heart rate. Format of the packet on-wire today: ```json-doc { \"cmd\": \"intent\", \"intent\": { \"zmovement\": 0, // 1 = maximum speed forwards \"xmovement\": 0, // 1 = maximum speed strafe right \"yaw\": 0, // absolute rotation around x in radians \"pitch\": 0, // absolute rotation around y in radians \"poses\": { \"head\": { \"matrix\": [m11, m12, ...m44], }, \"hand/left\": { \"matrix\": [m11, m12, ...m44], \"skeleton\": [ [m11, m12, ...m44], [m11, m12, ...m44], ... ], \"grab\": { // nil or description of grab //entity id of entity being grabbed \"entity\": \"asdf\", // to keep hand-to-entity spatial relationship constant during grab \"grabber_from_entity_transform\": [m11, m12, ...m44] } }, \"hand/right\": {same as hand/left} }, \"ack_state_rev\": 1234 } } ``` For the format of the matrix in `poses.*.matrix`, see [coordinate system](coordinate-system). For `hand*.skeleton`: It's an array of matrices, each describing the pose of a node of the hand. There are 26 nodes, with each index as defined by OpenXR hand tracking. You can see a list of indexes (and node parents) in [lovr's documentation](https://lovr.org/docs/lovr.headset.getSkeleton) (with each index offset by 1 because lua, of course). To understand `ack_state_rev`, see (state.md)[state.md]. Planned version of the packet: ```json-doc { \"intents\": { \"{entity id of avatar}\": { (same as under \"intent\" in today's version) }, \"{id of other owned entity}\": { // same as above } }, \"ack-state-rev\": 73892 // sequence number of state diff // we're acknowledging } ``` ", + "url": "/protocol-reference/intent", + "relUrl": "/protocol-reference/intent" + },"73": { + "doc": "Interactions", + "title": "Interactions", + "content": "# {{ page.title }} These interactions are defined by alloserv. Third party developers may create any interactions they want. They can vote to make their own interactions official by opening an issue on this repo. 1. TOC {:toc} ## Authentication and identity ### Agent announce After an agent connects, before it can interact with the place it must announce itself and spawn its avatar entity. Failure to announce will lead to force disconnect. - Receiver: `place` - Type: `request` - Request body: ```json-doc [ \"announce\", \"version\", 1, \"identity\", { // identity body goes here }, \"spawn_avatar\", { // same as \"spawn_entity\" key in \"Agent requests to spawn entity\" } ] ``` - Response: ```json-doc [ \"announce\", \"{ID of avatar entity}\", \"{name of place}\" ] ``` ### Modify ACL TBD ## Modifying the world ### Spawn entity - Receiver: `place` - Type: `request` - Request body: ```json-doc [ \"spawn_entity\", { // list of initial values for components for new entity goes here \"children\": [ // list of new child entities to create; same body as for \"spawn_entity\". // These will automatically get a \"relationships\" component set up referencing // the parent entity. { // list of initial values for components for child of new entity goes here }, ... ] } ] ``` - Response: ```json-doc [ \"spawn_entity\", \"{ID of entity if spawned}\" ] ``` ### Remove entity - Receiver: `place` - Type: `request` - Request body: ```json-doc [ \"remove_entity\", \"{ID of entity to remove}\", \"{'reparent' or 'cascade'}\" ] ``` - Reparent: If the removed entity has children, they will be reparented to root - Cascade: If the removed entity has children, they will also be removed. - Response: ```json-doc [ \"remove_entity\", \"ok\" ] ``` ### Change/add/remove component(s) in entity - Receiver: `place` - Type: `request` - Request body: ```json-doc [ \"change_components\", \"{entity ID}\", \"add_or_change\", { // object with new values for components (regardless of if // component already exists on entity) } \"remove\", [ // keys of components to remove ] ] ``` Response: ```json-doc [ \"change_components\", \"ok\" ] ``` A default ACL rule is set so that you must own the entity whose component you're changing, but this rule can be changed. ### Launch app - Receiver: `place` - Type: `request` - Request body: ```json-doc [ \"launch_app\", \"{app URL}\", { launch parameters as arbitrary JSON object } ] ``` Response: ```json-doc [ \"launch_app\", \"ok\", \"{avatar id}\" ] ``` or ```json-doc [ \"launch_app\", \"error\", \"{human-readable error string\" ] ``` Ask the Place to launch an app on behalf of the sending entity. The Place will establish a connection to the requested app if possible, launch it to that Place with the given arguments and the identity of the calling client, and then return the avatar ID if all that succeeded. (The avatar of an app is the \"main UI\" entity of the app.) ## User interface interactions ### Entity points at another entity An entity, most likely the avatar of a user, is pointing with their finger at another entity. This is used as a precursor to actually interacting with it (\"poking it\"). The interaction describes two points in world space: the tip of the finger, and the intersection point between the ray from the finger and the nearest entity, so that the entity can know _where_ on itself someone is pointing. - Receiver: The pointed-at entity - Type: `one-way` - Body: ```json-doc [ \"point\", [1.0, 2.0, 3.0], // finger tip in world space coordinates [4.0, 5.0, 6.0], // intersection point in world space coordinates ] ``` If the ray cast from the user's finger veers off the last pointed-at entity, one last message is sent to indicate that the user has stopped pointing at it. This is useful for removing highlight effect, etc. ```json-doc [ \"point-exit\" ] ``` ### Entity pokes Once an entity is pointing at another entity, it can ask to \"physically\" interact with it, by turning the pointing into a poke. The poke doesn't contain vector information -- it's up to the receiver to correlate with pointing events, as those will be streaming a continuously updating location, while poking is a request-response which the receiver can reject. Such a rejection should be visualized, so that the sender's user can understand if and why poking failed. - Receiver: The pointed-at entity - Type: `request` - Request body: ```json-doc [ \"poke\", {true|false} // whether poking started (true) or stopped (false) ] ``` - Success response: ```json-doc [ \"poke\", \"ok\" ] ``` - Failure response: ```json-doc [ \"poke\", \"failed\", \"{string explaining why, presentable to user}\" ] ``` ### Entity grabs Another action an entity can do when pointing at another entity, is to \"grab\" it. The below interaction is sent from the visor to the grabbed entity, but the actual moving of the grabbed thing is performed with a field in the intent struct, and the movement is performed server-side. The purpose of this event is just to let the entity know that it will be moved by the server between the start and stop event, and the receiving app doesn't have to/can't do any movement on its own in response. - Receiver: The pointed-at entity - Type: `one-way` - Request body: ```json-doc [ \"grabbing\", {true|false} // whether grabbing started (true) or stopped (false) ] ``` ### Add property animation Ask to add an animation to an entity. See the documentation for animation descriptor in [property_animations](/components#property_animations) - Receiver: The animated entity - Type: `request` - Request body: ```json-doc [ \"add_property_animation\", { animation descriptor } ] ``` - Success response: ```json-doc [ \"add_property_animation\", \"ok\", \"abc123\" // ID of this animation ] ``` - Failure response: ```json-doc [ \"add_property_animation\", \"failed\", \"{string explaining why, presentable to user}\" ] ``` ### Remove property animation Ask to remove an existing animation by ID. ```json-doc [ \"remove_property_animation\", \"abc123\" ] ``` - Success response: ```json-doc [ \"remove_property_animation\", \"ok\", \"abc123\" // ID of this animation that was removed ] ``` - Failure response: ```json-doc [ \"remove_property_animation\", \"failed\", \"{string explaining why, presentable to user}\" ] ``` ## Protocol level messages ### Entity wishes to transmit live media Before an entity can transmit streamed audio, video or geometry, a track must be created along which to send that data. This interaction will add a [live_media](/components#live_media) component to the sender's entity. See the [live_media](/components#live_media) compponent documentation for valid media types, media formats and metadata payloads. - Receiver: `place` - Type: `request` - Request body: ```json-doc [ \"allocate_track\", \"audio\", # media type \"opus\", # media format { metadata ... } ] ``` - Legacy request body: ```json-doc [ \"allocate_track\", \"audio\", # media type 48000, # sample rate 1, # channel count \"opus\" # media format ] ``` - Success response: ```json-doc [ \"allocate_track\", \"ok\", 3 # track_id ] ``` - Failure response: ```json-doc [ \"allocate_track\", \"failed\", \"{string explaining why, presentable to user}\" ] ``` ### TBD: Subscribe/unsubscribe - Receiver: `place` - Type: `request` - Request body for subscribe: ```json-doc [ \"subscribe\", \"\"\"{guard pattern}\"\"\" ] ``` - Response: ```json-doc [ \"subscribe\", \"{subscription ID}\" ] ``` - Unsubscribe request body: ```json-doc [ \"unsubscribe\", \"{subscription ID}\" ] ``` - Response: ```json-doc [ \"unsubscribe\", \"{'ok'|'not_subscribed'}\" ] ``` - Example: ```json-doc [ \"interaction\", \"request\", \"1234\", \"place\", // place is the subscription gateway \"567\", [ \"subscribe\", \"\"\"[ \"new_tweet\", TweetSender, TweetBody ] where TweetSender == \"nevyn\" \"\"\" ] ``` In this scenario the place contains an app that publishes new tweets as interactions to the room. This interaction will ask the place to subscribe to all interaction publications which start with the word \"new_tweet\" followed by two fields. The guard clause asks that the sender must be \"nevyn\". If the guard matches, the publication interaction will be forwarded by the place from the sending agent to the subscribing agent. ", + "url": "/protocol-reference/interactions", + "relUrl": "/protocol-reference/interactions" + },"74": { + "doc": "Licenses used by Alloverse", + "title": "Licenses used by Alloverse", + "content": "# {{ page.title }} Alloverse is open source. You can read about [Alloverse's license in its LICENSE file](https://github.com/alloverse/docs/blob/master/LICENSE). In addition, Alloverse in turn uses a number of open source projects to work. The licenses of these projects are listed below. 1. TOC {:toc} ## cJSON (used by allonet and more) Copyright (c) 2009-2017 Dave Gamble and cJSON contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## CPML (used by alloui) CPML is Copyright (c) 2016 Colby Klein . CPML is Copyright (c) 2016 Landon Manning . Code in vec3.lua is derived from hump.vector. (c) 2010-2013 Matthias Richter. MIT. Portions of mat4.lua are from LuaMatrix, (c) 2010 Michael Lutz. MIT. Code in simplex.lua is (c) 2011 Stefan Gustavson. MIT. Code in bound2.lua and bound3.lua are (c) 2018 Andi McClure. MIT. Code in quat.lua is from Andrew Stacey and covered under the CC0 license. Code in octree.lua is derived from UnityOctree. (c) 2014 Nition. BSD-2-Clause. ### The MIT License (MIT) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ### The BSD License (BSD-2-Clause) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## enet (used by allonet) Copyright (c) 2002-2016 Lee Salzman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## elixir-cmake (used by alloplace) Copyright (c) 2018 Aramis Group, LLC dba code lever MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## elixir-uuid (used by alloplace) Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. \"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. \"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. \"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. \"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License. \"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. \"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. \"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). \"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. \"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\" \"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets \"{}\" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same \"printed page\" as the copyright notice for easier identification within third-party archives. Copyright {yyyy} {name of copyright owner} Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ## graphmath (used by alloplace) This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to ## jason (used by alloplace) Copyright 2017 Michał Muskała Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ## lovr (used by allovisor) Copyright (c) 2020 Bjorn Swenson and other LÖVR contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## lua (used by many) Copyright © 1994–2019 Lua.org, PUC-Rio. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## Oculus SDK (used by lovr-oculus-mobile-alloverse) Oculus Software Development Kit License Agreement Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. The text of this may be found at: https://developer.oculus.com/licenses/sdk-3.5/ In order to obtain and use the Oculus Software Development Kit for mobile or for PC, You must first agree to the terms of this License. If you agree to the terms of this License, you may use the Oculus Software Development Kit. If you do not agree to the terms of this License, then you may not use the Oculus Software Development Kit. OCULUS SDK LICENSE 1. Subject to the terms and conditions of this License Agreement (the \"License\"), Facebook Technologies, LLC formerly known as Oculus VR, LLC (\"Oculus\") hereby grants to you a worldwide, non-exclusive, no-charge, royalty-free, sublicenseable copyright license to use, reproduce and redistribute (subject to restrictions below) the software contained in this Oculus Software Development Kit for PC and/or mobile (\"Oculus SDK\"), including, but not limited to, the samples, headers, LibOVR and VRLib headers, LibOVR and VRLib source and, subject to your compliance with Section 3, the headers, libraries and APIs to enable the Platform Services. This License is subject to the following terms and conditions: 1.1 This license grants you the non-exclusive license and right to use (i) the Oculus SDK to make engines, tools, applications, content, games and demos (collectively and generally referred to as \"Developer Content\") for use on the Oculus approved hardware and software products (\"Oculus Approved Products\") and which may incorporate the Oculus SDK in whole or in part in binary or object code; and (ii) the headers, libraries, APIs and other tools made available by Oculus to enable the use of Platform Services with your Developer Content. 1.2 For the sake of clarification, when you use the Oculus SDK in or with Developer Content, you retain all rights to your Developer Content, and you have no obligations to share or license Developer Content (including your source and object code) to Oculus or any third parties; provided, however, Oculus retains all rights to the Oculus SDK and the headers, libraries and APIs to the Platform Services and other tools made available by Oculus, including those that may be incorporated into your Developer Content. 1.3 You agree that as a condition of this License you will design and distribute your Developer Content to ensure that your Developer Content and any software required to use your Developer Content does not, and you will not, alter or interfere with the normal operation, behavior or functionality of the Oculus hardware or software or Oculus Approved Products, including: (i) the behavior of the \"Oculus button\" and \"XBox button\" implemented by the Oculus system software; (ii) any on-screen messages or information; (iii) the behavior of the proximity sensor in the Oculus hardware implemented by the Oculus system software; (iv) Oculus hardware or software security features; (v) end user's settings; or (vi) the Oculus Flash Screen Warnings. You also agree not to commit any act intended to interfere with the normal operation of the Oculus hardware or software or Oculus Approved Products, or provide software to Oculus users or developers that would induce breach of any Oculus agreements or that contains malware, viruses, hacks, bots, Trojan horses, or other malicious code. 1.4 You may not use the Oculus SDK for any purpose not expressly permitted by this License. You may not (except as and only to the extent any following restriction is prohibited by applicable law): (a) decompile; (b) reverse engineer; (c) disassemble; (d) attempt to derive the source code of the Oculus SDK or any part of the Oculus SDK, or any other software or firmware provided to you by Oculus REDISTRIBUTION 2. Subject to the terms and conditions of this License, your license to redistribute and sublicense the Oculus SDK is also expressly made subject to the following conditions: 2.1 You may sublicense and redistribute the source, binary, or object code of the Oculus SDK in whole for no charge or as part of a for-charge piece of Developer Content; provided, however, you may only license, sublicense or redistribute the source, binary or object code of the Oculus SDK in its entirety. The Oculus SDK (including, but not limited to LibOVR and VRLib), and any Developer Content that includes any portion of the Oculus SDK, may only be used with Oculus Approved Products and may not be used, licensed, or sublicensed to interface with software or hardware or other commercial headsets, mobile tablets or phones that are not authorized and approved by Oculus; 2.2 You must include with all such redistributed or sublicensed Oculus SDK code the following copyright notice: \"Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved.\" 2.3 You must give any other recipients of the Oculus SDK a copy of this License as such recipients, licensees or sublicensees may only use the Oculus SDK subject to the terms of this License and such recipient's, licensee's or sublicensee's agreement to and acceptance of this License with Oculus; and 2.4 The Oculus SDK includes a \"LICENSE\" text file (the \"License Notice\"), and any Oculus SDK distribution that you distribute must include a copy of this License with the License Notice. OCULUS PLATFORM SERVICES 3. Oculus makes the headers, libraries and APIs, software, and other tools made available by Oculus to enable Platform Services in connection with your Developer Content. You agree not to use any API, code or other tools, instruction or service provided by Oculus to enable or use a Platform Service other than in compliance with these terms. For more information go to https://developer.oculus.com. - \"Oculus Platform Framework\" means the suite of Oculus platform services, including but not limited to the Oculus file distribution and update system (enabling distribution and updates of Developer Content by Oculus, including through generated activation Keys), entitlement system, and account authentication, which list may be changed from time to time in Oculus' sole discretion. - \"Application Services\" means services provided by Oculus associated with the Platform, including but not limited to in-app purchasing, multiplayer matchmaking, friends, leader boards, achievements, rooms, voice over IP and cloud saves, which list may be changed from time to time in Oculus' sole discretion. - \"Platform\" means the Oculus virtual reality platform, including but not limited to the user experience, user interface, store, and social features, usable on Oculus approved hardware or any third-party device or operating system, including but not limited to iOS, Android, Windows, OS X, Linux, and Windows Mobile. - \"Platform Services\" means the Oculus Platform Framework and the Application Services. 3.1 Oculus Platform Services. Oculus makes certain Platform Services available to you to include and enable in your Developer Content. Developer Content that enables or includes any Platform Service must implement the Oculus Platform Framework with that Developer Content. Once your Developer Content has been authorized for use of the Platform Services, you are not required to update your Developer Content to include new Platform Services Oculus may make available as part of the Oculus Platform Framework. 3.2 Limited Authorization. You hereby grant Oculus the limited authorization reasonably necessary for Oculus's exercise of its rights and performance of its obligations under this Section 3. You agree that Oculus may use its contractors and affiliates for the purposes of exercising its rights and licenses set forth in this Section 3. 3.3. Internal Use. You agree that Oculus may grant its employees and internal contractors the right to use, perform and display the Developer Content you provide to Oculus for testing, evaluation and approval purposes, which shall be on a royalty-free basis. 3.4 Key Provision and Redemption. If you request that Oculus generate activation keys for your Developer Content on the Platform (\"Keys\") and Oculus agrees, you hereby grant Oculus (i) the right to generate Keys for you and (ii) a license to make available, reproduce, distribute, perform, and display the Developer Content to end users who have submitted a Key to Oculus. Oculus agrees to authenticate and make Developer Content available to any end user supplying a valid Key (unless the Developer Content has been removed or withdrawn). 3.5 Platform Services Requirements. You will not make any use of any API, software, code or other item or information supplied by Oculus in connection with the Platform Services other than to enhance the functionality of your Developer Content. In particular, you must not (nor enable others to): (i) defame, abuse, harass, stalk, or threaten others, or to promote or facilitate any prohibited or illegal activities; (ii) enable any functionality in your Developer Content that would generate excessive traffic over the Oculus network or servers that would negatively impact other users' experience, or otherwise interfere with or restrict the operation of the Platform Services, or Oculus's servers or networks providing the Platform Services; or (iii) remove, obscure, or alter any Oculus license terms, policies or terms of service or any links to or notices thereto. You may not sublicense any software, firmware or other item or information supplied by Oculus in connection with the Platform Service for use by a third party, unless expressly authorized by Oculus to do so. You agree not to use (or encourage the use of) the Platform Services for mission critical, life saving or ultra-hazardous activities. Oculus may suspend operation of or remove any Developer Content that does not comply with the restrictions in this License. You will not use the Oculus Avatar associated with the Oculus ID of any end user in your Developer Content without the express permission of that end user unless, (i) that end user is actively engaged with your Developer Content or (ii) that end user remains part of an active session of your Developer Content with whom other end users are interacting, whether or not that end user is then online. GENERAL PROVISIONS 4. Additional Materials 4.1 Oculus may include in this Oculus SDK additional content (e.g., samples) for demonstration, references or other specific purposes. Such content will be clearly marked in the Oculus SDK and is subject to any included terms and conditions. 4.2 Your use of third-party materials included in the Oculus SDK may be subject to other terms and conditions typically found in separate third-party license agreements or \"READ ME\" files included with such third-party materials. To the extent such other terms and conditions conflict with the terms and conditions of this License, the former will control with respect to the applicable third-party materials. 5. THE OCULUS SDK AND ANY COMPONENT THEREOF, THE OCULUS HEADERS, LIBRARIES AND APIS, AND THE PLATFORM SERVICES FROM OCULUS AND ITS CONTRIBUTORS ARE PROVIDED \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OCULUS AS THE COPYRIGHT OWNER OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS OCULUS SDK, THE OCULUS HEADERS, LIBRARIES AND APIS OR THE PLATFORM SERVICES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOME JURISDICTIONS DO NOT PERMIT THE EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES, SO YOU MAY HAVE ADDITIONAL RIGHTS. 6. This License does not grant permission to use the trade names, trademarks, service marks, or product names of Oculus, except as required for reasonable and customary use in describing the origin of the Oculus SDK, and reproducing the content of the License Notice file. Oculus reserves all rights not expressly granted to you under this License. Neither the name of Facebook Technologies, LLC, Oculus VR, LLC, Oculus, nor the names of Oculus's contributors, licensors, employees, or contractors, may be used to endorse or promote products developed using the Oculus SDK without specific prior written permission of Oculus. 7. You are responsible for ensuring that your use of the Oculus SDK and your Developer Content, including enabled Platform Services, complies with all applicable laws (including privacy laws) wherever your Developer Content is made available. You acknowledge and agree that you are solely responsible for any health and safety issues arising from your Developer Content. You will not collect end users' content or information, or otherwise access any Oculus site, using automated means (such as harvesting bots, robots, spiders, or scrapers) without Oculus' prior permission. 8. Your acceptance of the terms and conditions of this License in and of itself and for all Developer Content created as of March 28, 2016, may be evidenced by any of the following: your usage of the Oculus SDK, or acceptance of the license agreement. As this License is updated for future releases of the Oculus SDK, you agree to abide by and meet all requirements of future updates of this License for those future Oculus SDK releases, with acceptance evidenced by usage of the Oculus SDK or any element thereof and the future updates of this License will apply for that future Developer Content that may be developed for or with that future Oculus SDK or any element thereof (i.e., you cannot sidestep out of the requirements of future updates of the License by developing against an older release of the Oculus SDK or License). 9. Oculus reserves the right to terminate this License and all your rights hereunder immediately in the event you materially breach this License. 10. Furthermore, Oculus also reserves the right to cancel or terminate this License for any of the following reasons: a. Intellectual property infringement by you with Developer Content created by you that is used with or by the Oculus SDK, or any of the Platform Services; b. Developer Content (including enabling Platform Services) that violates applicable law; c. Health and safety issues associated with your Developer Content; d. Failure to comply with or use properly the Oculus Flash Screen Warnings; e. Use of the Oculus SDK with a commercial product other than an Oculus Approved Product; f. Failure to provide required notices as set forth above; and g. Failure to observe the restrictions in Section 3.5. 11. You agree to fully indemnify Oculus from any and all losses, costs, damages and expenses (including reasonable attorney's fees) arising out of your Developer Content or any matter set forth in Sections 6, 7 and 10(a) through (g). 12. Oculus may discontinue or change functionality of the Platform Services at any time, and your continued use of the Platform Services or use of any modified or additional Platform Services is conditioned upon your adherence to the terms of this License, as modified by Oculus from time to time. 13. In the event any provision of this License is determined to be invalid, prohibited or unenforceable by a court or other body of competent jurisdiction, this License shall be construed as if such invalid, prohibited or unenforceable provision has been more narrowly drawn so as not to be invalid, prohibited or unenforceable. 14. You may not assign any rights or obligations under this License without the advance written consent of Oculus, which may be withheld in its sole discretion. Oculus may assign its rights or obligations under this License in its sole discretion. 15. Failure of either party at any time to enforce any of the provisions of this License will not be construed as a waiver of such provisions or in any way affect the validity of this License or parts thereof. 16. Your remedies under this License shall be limited to the right to collect money damages, if any, and you hereby waive your right to injunctive or other equitable relief. 17. You will comply, and will not cause Oculus to not comply (by for example, providing Developer Content to Oculus under this Agreement for which required export clearances have not been obtained), with all applicable export control laws of the United States and any other applicable governmental authority, including without limitation, the U.S. Export Administration Regulations. You agree that this License and the Oculus SDK and accompanying documentation are Oculus's confidential information (and is not publicly available), and you will not use it, disclose it or make it available to others except in accordance with the terms of this License. 18. This License shall be governed by the laws of the State of California, without giving effect to conflict of laws provisions or principles thereof. The parties agree that, except as provided below, all disputes relating to this License shall be resolved by binding non-appearance-based arbitration before a single neutral arbitrator in San Francisco, California. The arbitration will be conducted in the English language by a single arbitrator who is an attorney-at- law with at least fifteen (15) years' experience in consumer and technology transactions and who is also a member of the JAMS roster of arbitrators. If You and Oculus cannot agree on a mutually acceptable arbitrator within thirty (30) days after the arbitration is initiated, then JAMS will pick a neutral arbitrator who meets such qualifications. The arbitration shall be conducted in accordance with the rules and procedures of JAMS then in effect, and the judgment of the arbitrator shall be final and capable of entry in any court of competent jurisdiction. The parties undertake to keep confidential all awards in their arbitration, together with all materials in the proceedings created for the purpose of the arbitration and all other documents produced by another party in the proceedings not otherwise in the public domain, save and to the extent that disclosure may be required of a party by legal duty, to protect or pursue a legal right or to enforce or challenge an award in legal proceedings before a court or other judicial authority. You and Oculus agree the following may be submitted to a court of competent jurisdiction located within San Francisco, California and further agree to submit to the personal jurisdiction of the courts located within San Francisco, California in connection with (a) any entrance of an arbitrator's judgment or decision, (b) any dispute with respect to the arbitration process or procedure, (c) Oculus' exercise of any of its equitable rights or remedies or (d) any claims regarding the ownership, validity, enforceability and/or infringement of any intellectual property rights. ## opus (used by allonet) Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, Jean-Marc Valin, Timothy B. Terriberry, CSIRO, Gregory Maxwell, Mark Borgerding, Erik de Castro Lopo Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of Internet Society, IETF or IETF Trust, nor the names of specific contributors, may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Opus is subject to the royalty-free patent licenses which are specified at: Xiph.Org Foundation: https://datatracker.ietf.org/ipr/1524/ Microsoft Corporation: https://datatracker.ietf.org/ipr/1914/ Broadcom Corporation: https://datatracker.ietf.org/ipr/1526/ ## penlight (used by many) Copyright (C) 2009-2016 Steve Donovan, David Manura. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## phoenix (used by web) Copyright (c) 2014 Chris McCord Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## poison (used by alloplace) Creative Commons Legal Code CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN \"AS-IS\" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an \"owner\") of an original work of authorship and/or a database (each, a \"Work\"). Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works (\"Commons\") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the \"Affirmer\"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights (\"Copyright and Related Rights\"). Copyright and Related Rights include, but are not limited to, the following: i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; ii. moral rights retained by the original author(s) and/or performer(s); iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; v. rights protecting the extraction, dissemination, use and reuse of data in a Work; vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the \"Waiver\"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the \"License\"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 4. Limitations and Disclaimers. a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. ## Unity unit testing (used by allonet) The MIT License (MIT) Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## FFMPEG/libavcodec (used by allonet) GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the \"Lesser\" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a \"work based on the library\" and a \"work that uses the library\". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called \"this License\"). Each licensee is addressed as \"you\". A \"library\" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The \"Library\", below, refers to any such software library or work which has been distributed under these terms. A \"work based on the Library\" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term \"modification\".) \"Source code\" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a \"work that uses the Library\". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a \"work that uses the Library\" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a \"work that uses the library\". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a \"work that uses the Library\" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a \"work that uses the Library\" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable \"work that uses the Library\", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the \"work that uses the Library\" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and \"any later version\", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the \"copyright\" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a \"copyright disclaimer\" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! ", + "url": "/licenses/licenses", + "relUrl": "/licenses/licenses" + },"75": { + "doc": "Points, Pokes and Grabs", + "title": "Points, Pokes and Grabs", + "content": "# {{ page.title }} Coming soon {: .label .label-yellow } ", + "url": "/concepts/points-pokes-and-grabs", + "relUrl": "/concepts/points-pokes-and-grabs" + },"76": { + "doc": "State Diffs", + "title": "State Diffs", + "content": "# {{ page.title }} Every server heart-beat, the server sends the world state to all connected agents on unreliable channel 0. ## State representation The world representation is stored as a big JSON document like so: ```json-doc { \"entities\": { \"abc123\": { \"id\": \"abc123\", \"components\": { ... } } }, \"revision\": 1234 } ``` - `entities`: A dictionary from entity ID to [entity description](/protocol-reference/#entity). - `revision`: An integer ID for this specific revision of the world. Monotonically increases until it reaches the biggest sequential integer that a 64-bit IEEE double can represent, which is 2^53, whereafter it will wrap around back to 0. (damn JSON). ## Deltas Sending this document in its entirety every server heart-beat would be needlessly wasteful, so instead only the difference to a previous known-good state is sent. An agent acknowledges successful receival of world state by setting `ack_state_rev` in [`intent`](intent) to the received world state, whereafter the server will diff against that revision instead. Note that it takes time for this ACK to be received, so you might continue to receive diffs against an older version; so you need to keep a history of previous states to apply diffs to. The packet on channel 0 received in the client can take three forms: ### Format 1: `set` If the server is unable to diff, it will just send the full world state document. ```json-doc { \"patch_style\": \"set\", \"entities\": ..., \"revision\": 1234 } ``` Note that `patch_style` is not part of the document, and should be removed before the document is stored to history. ### Format 2: `apply` Indicates that the payload is an [RFC 6902](https://tools.ietf.org/html/rfc6902) JSON Patch. ```json-doc { \"patch_style\": \"apply\", \"patch_from\": 1233, \"patches\": [ ... /*RFC 6902 patches*/ ] } ``` - `patch_from` indicates the revision to apply the patches to - `patches` is a JSON list of RFC 6902 patches to apply to said revision from history The patches should be applied and the resulting document stored to history. If the referenced `from` revision is not available or history, or if patching fails, you should set intent's `ack_state_rev` back to 0 to request a full `set` state. **Note**: This format seems to almost always be less efficient than RFC 7386, so its support is likely to be removed. ### Format 3: `merge` Indicates that the payload is an [RFC 7386](https://tools.ietf.org/html/rfc7396) JSON Merge Patch. ```json-doc { \"patch_style\": \"merge\", \"patch_from\": 1233, ... // rest of document is an RFC 7386 payload } ``` - Note that `patch_style` and `patch_from` must be removed from the document before it's a valid RFC 7386 merge patch. - `patch_from` indicates the revision to apply the patches to The merge patch should be applied and the resulting document stored to history. If the referenced `from` revision is not available or history, or if patching fails, you should set intent's `ack_state_rev` back to 0 to request a full `set` state. # Older versions Version 1 sent the complete world-state as is, and with entities as an array rather than an object. It looked like this: ```json-doc entities: [ // list of all entities; see Entities above for structure ], revision: 1234 // monotonically increasing integer (will roll over to 0 after INT64_MAX!) ``` ", + "url": "/protocol-reference/state-diffs", + "relUrl": "/protocol-reference/state-diffs" + },"77": { + "doc": "URL Definitions", + "title": "URL Definitions", + "content": "# {{ page.title }} URLs are used to identify and locate various resources in Alloverse. This document should be a full list of such URLs and their format. ## Alloplace There is currently one format for locating an alloplace server: `alloplace://{host}:{port}` - `host`: Hostname or IP of machine that is running the `alloplace` service - `port`: This is the enet UDP endpoint for the listen socket. Optional: default value is 21337. Such an URL should be fed into `alloclient_connect` or its high-level equivalents, and `allonet` will take care of parsing and connecting to the server at that URL. ### Virtual hosting (unimplemented) The downside of this scheme is that it doesn't allow for virtual hosting: with the same domain name for the same IP, you'll end up at the same placeserv unless you include a custom port in the URL, which is ugly. One solution is to use a HTTPS gateway which returns the real alloplace URL given a URL of this form: `alloplacegw:http(s)://{host}:{port}/{path}` Another solution is to have a \"load balancer\" allplace socket which forwards to an internal instance. This solution can use the original `alloplace://` url schema. ## Alloapp An alloapp is launched with an URL in this format: `alloapp:http(s)://{host}:{port}/{path}?{params}` This is a HTTP(S) gateway endpoint which is basically a \"CGI launcher\". Upon POST, it'll launch an instance of the app and connect it to the requested alloplace. Please [read more over on the topic of hosting](/hosting). You can launch this gateway by calling `./allo/assist serve` inside an alloapp. When an alloplace accesses the above URL, it will fill in these HTTP headers: * `x-alloverse-server`: The `alloplace:` url of the place that the new app instance shouild connect to * `x-alloverse-launched-by`: The identity blob of the user who requested the app launch ", + "url": "/protocol-reference/url-definitions", + "relUrl": "/protocol-reference/url-definitions" + },"78": { + "doc": "Wire Protocol", + "title": "Wire Protocol", + "content": "# {{ page.title }} What are the actual bytes travelling on the wire? They all seem to be json payload followed by a newline character... ## S->C State stream - Channel: 0 (\"CHANNEL_STATEDIFFS\") - Kind: Unreliable - Payload specification: [State](state-diffs) ``` >\\n ``` ## C->S Intent - Channel: 0 (\"CHANNEL_STATEDIFFS\") - Kind: Unreliable - Payload specification: [Intent](intent) ``` >\\n ``` ## S->C Interaction - Channel: 1 (\"CHANNEL_COMMANDS\") - Kind: Reliable - Payload specification: [Entity to entity interaction](/protocol-reference/#entity-to-entity-interaction-requestresponsepubsub) ``` >\\n ``` Version 0 implements this packet as: ```json-doc { \"cmd\": \"interact\", \"interact\": { \"from_entity\": \"...\", \"to_entity\": \"...\", \"cmd\": \"...\" } }\\n ``` ## C->S Interaction - Channel: 1 (\"CHANNEL_COMMANDS\") - Kind: Reliable - Payload specification: [Entity to entity interaction](/protocol-reference/#entity-to-entity-interaction-requestresponsepubsub) ``` >\\n ``` ## C->S->C Media track packet - Channel: 3 (\"CHANNEL_MEDIA\") - Kind: Unreliable - Related interaction: [allocate_track](/protocol-reference/interactions#entity-wishes-to-transmit-live-media) ``` >> ``` Note that in older versions of the protocol, even audio/media packets had that stupid newline at the end. ## C->S->C Clock sync packet - Channel: 4 (\"CHANNEL_CLOCK\") - Kind: Unreliable - Payload: ```json-doc { \"client_clock\": 123.0, \"server_clock\": 456.0 }\\n ``` This packet is sent from the client once a second with only the `client_clock` field set to its local monotonic clock time. It is immediately bounced back from the server, with its `server_clock` set. The client can thus calculate its round-trip latency (`now() - response[\"client_clock\"]`), and delta between its clock and the server clock. Using all this information, it can then extrapolate the world time and update `place`'s [`clock`](https://github.com/alloverse/docs/blob/master/specifications/components.md#clock) component. ## Unspecified - C->S asset request/response - S->C asset request/response - S->C asset force delivery ", + "url": "/protocol-reference/wire-protocol", + "relUrl": "/protocol-reference/wire-protocol" + },"79": { + "doc": "Writing apps with AlloUI", + "title": "Writing apps with AlloUI", + "content": "# {{ page.title }} Coming soon {: .label .label-yellow } ", + "url": "/concepts/writing-apps-with-alloUI", + "relUrl": "/concepts/writing-apps-with-alloUI" + } +} \ No newline at end of file diff --git a/assets/js/vendor/lunr.min.js b/assets/js/vendor/lunr.min.js new file mode 100644 index 0000000..34b279d --- /dev/null +++ b/assets/js/vendor/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6 + * Copyright (C) 2019 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.6",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/classes/index.html b/classes/index.html new file mode 100644 index 0000000..d5c8671 --- /dev/null +++ b/classes/index.html @@ -0,0 +1 @@ + AlloUI lua - Alloverse Documentation AlloUI lua | Alloverse Documentation Link Search Menu Expand Document diff --git a/community.html b/community.html new file mode 100644 index 0000000..3af8895 --- /dev/null +++ b/community.html @@ -0,0 +1 @@ + Community - Alloverse Documentation Community | Alloverse Documentation Link Search Menu Expand Document

Community

Incomplete


Table of contents

diff --git a/community/code-of-conduct.html b/community/code-of-conduct.html new file mode 100644 index 0000000..40a0890 --- /dev/null +++ b/community/code-of-conduct.html @@ -0,0 +1 @@ + Code of Conduct - Alloverse Documentation Code of Conduct | Alloverse Documentation Link Search Menu Expand Document

Code of Conduct

Contributor Covenant Code of Conduct

Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

Our Standards

Examples of behavior that contributes to creating a positive environment include:

  • Using welcoming and inclusive language
  • Being respectful of differing viewpoints and experiences
  • Gracefully accepting constructive criticism
  • Focusing on what is best for the community
  • Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

  • The use of sexualized language or imagery and unwelcome sexual attention or advances
  • Trolling, insulting/derogatory comments, and personal or political attacks
  • Public or private harassment
  • Publishing others’ private information, such as a physical or electronic address, without explicit permission
  • Other conduct which could reasonably be considered inappropriate in a professional setting

Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at nevyn@alloverse.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.

Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq

diff --git a/community/contributing.html b/community/contributing.html new file mode 100644 index 0000000..b3af5df --- /dev/null +++ b/community/contributing.html @@ -0,0 +1,2 @@ + Contributing to Alloverse - Alloverse Documentation Contributing to Alloverse | Alloverse Documentation Link Search Menu Expand Document

Contributing to Alloverse

Development environment

Alloplace server

This is an Elixir process that acts very similarly to a dedicated game server. You run it, and it acts as a container/world simulator for all users and apps that connect to it.

There is an always-on development server at alloplace://nevyn.places.alloverse.com. You can use it to try out your code so you don’t have to run a server locally if all you’re interested in is client development.

If you DO want to do server development, see the setup instructions in alloplace’s README for setup and run instructions.

Once it’s running, you have a server on alloplace://localhost!

Allovisor client

This is the “game client” that connects to the alloplace server.

See its build instructions in its README

It uses CI integration to get the latest version of “allonet”, the network library used to talk to the Alloverse. It’s all in the README how you set that up.

Appliances

See the appliance dev guide.

Allonet

Allonet is the network layer. Unless you’re doing deep protocol hacking, you shouldn’t need to mess with it. It’s built into allovisor and alloplace, and should work as-is.

If you want to hack on it…

Allonet is written in C and CMake. I recommend using Visual Studio Code, and installing the “CMake-Tools” package to build and run from the GUI.

You can then either run ./build/allodummyclient to try things out. If you want to try it in the real Allovisor, copy liballonet.dylib into the Unity project’s assets, something like this:

cp build/liballonet.dylib ../allovisor/Assets/liballonet.bundle
+
diff --git a/components.html b/components.html new file mode 100644 index 0000000..69d3271 --- /dev/null +++ b/components.html @@ -0,0 +1,108 @@ + Components - Alloverse Documentation Components | Alloverse Documentation Link Search Menu Expand Document

Components

For an overview of what a component is, please see Terminology.

These components are defined by placeserv. Third party developers may create any components they want. They can vote to make their own components official by pinging the dev team on Discord.

Table of contents
  1. transform
  2. geometry
  3. material
  4. skeleton
  5. text
  6. collider
  7. relationships
  8. intent
  9. grabbable
  10. live_media
    1. Audio
    2. Video
    3. Example component:
  11. sound_effect
  12. clock
  13. cursor
  14. property_animations
  15. service_discovery

transform

Defines the physical location and orientation of the entity relative to its parent entity if it has one; otherwise relative to the world origo. See Coordinate System for an extended description of how things are positioned and oriented in Alloverse.

"transform": {
+  "matrix": [1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.0,0.0,0.0,1.0]
+}
+

note: In an early version of the protocol, transform was represented as a 3-element position vector and 3-element rotation vector with euler angle rotations.

geometry

Defines the visual geometry of an entity. This should use assets in the future, but until we have assets, geometry is encoded in-line in entity description.

If type is asset, you are providing an asset identifier that is a hash of the contents of the asset.

You also need to implement the client asset callbacks in order to respond to asset requests in order to deliver the asset.

"geometry": {
+  "type": "asset",
+  "name": "asset:sha256:d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26"
+}
+

If type is hardcoded-model, you’re using one of the models hard-coded into the visor. name is the name of the model.

"geometry": {
+  "type": "hardcoded-model",
+  "name": "hand"
+}
+

If type is inline, Well.. you’re living in the past This is only recommended for debugging, and until we have geometry assets.

  • vertices is a required list of lists, each sub-list containing x, y, z coordinates for your vertices.
  • normals is an optional list of lists, each sub-list containing the x, y, z coords for the normal at the corresponding vertex.
  • uvs is an optional list of lists, each sub-list containing the u, v texture coordinates at the corresponding vertex.
  • triangles is a required list of lists. Each sub-list is three integers, which are indices into the above arrays, forming a triangle.
"geometry": {
+  "type": "inline",
+  "vertices": [[1.0, 1.0, 1.0], [2.0, 2.0, 2.0], [3.0, 3.0, 3.0], [4.0, 4.0, 4.0]],
+  "normals": [[1.0, 1.0, 1.0], [2.0, 2.0, 2.0], [3.0, 3.0, 3.0], [4.0, 4.0, 4.0]],
+  "uvs": [[0.0, 0.0], [0.5, 1.0], [1.0, 0.0], [1.0, 1.0]],
+  "triangles": [[0, 1, 2], [1, 2, 3]]
+}
+

geometry used to also contain texture, but that’s been moved to material.texture.

material

Defines the surface appearance of the component being rendered.

"material": {
+  "color": [1.0, 1.0, 0.0, 1.0],
+  "shader_name": "plain",
+  "texture": "asset:sha256:d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26"
+}
+
  • color: An array of R, G, B and A value to set as base color for the thing being rendered. Default is white.
  • shader_name: Optional ame of hard-coded shader to use for this object. Currently allows plain and pbr. Default is plain.
  • texture: optional texture asset. Default is none.

skeleton

Configures poses for bone nodes in a rigged mesh. Use this to manually pose/animate the skeleton/bones of an entity that has a rigged model as its geometry.

"skeleton": {
+  "nodes": {
+    "{name of node}": { // key is name of node
+      "matrix": [1,0,0,0, 0,1,0,0, ...]],
+      "alpha": 1.0,
+    },
+  }
+}
+
  • nodes: A dictionary of nodes to pose. The key is the name of the node.

The structure of each node dictionary:

  • matrix: a 4x4 matrix like in transform used to position and rotate the node
  • alpha: Mix this matrix with the node’s default pose. 0.5 means using the half-way point between the two transforms, 1.0 means using only the incoming transform.

text

Defines a text renderer for this entity, drawing a text texture at transform.

"text": {
+  "string": "hello world",
+  "height": 0.03,
+  "wrap": 0,
+  "halign": "center"
+}
+
  • height: The height of the text. 1 unit = 1 meter.
  • wrap: The width in meters at which to wrap the text, if at all.
  • halign: Horizontal alignment; “center”, “left” or “right”.

collider

Defines the physical shape of an entity.

"collider": {
+  "type": "box",
+  "width": 1,
+  "height": 1,
+  "depth": 1
+}
+

relationships

Specify the relationships between entities, in particular child entites’ “parent” entity. If an entity has a parent, its transform should be concatenated with all its ancestors’ transforms before being displayed.

"relationships": {
+  "parent": "abc123"
+}
+

intent

Specify how the entity’s owning agent’s intent affects this entity.

  • actuate_pose: this named pose will be set as this entity’s transform each frame.
  • from_avatar (optional): Instead of following the owning agent’s intents, follow the agent who has this entity as its avatar.
"intent": {
+  "actuate_pose": "hand/left",
+  "from_avatar": "abc123"
+}
+

grabbable

Describes how an entity maybe grabbed/held, and then moved/dragged by a user.

The actual grabbing is accomplished using intents. See the field grab under intent.

"grabbable": {
+  "actuate_on": "...",
+
+  "translation_constraint": [1, 1, 1],
+  "rotation_constraint": [1, 1, 1],
+  "target_hand_transform": [1, 0, 0, 0, 0, 1, .....],
+}
+
  • actuate_on: Since the grabbable component is likely attached to a a handle rather than the entire object being movable, actuate_on indicates how far up this entity’s ancestry to walk before deciding which entity to actually move.
    • Omitting this key indicates the entity itself should be moved within its local coordinate space.
    • Literal $parent means move the parent entity
    • Any entity ID must be an ancestor of this entity, and indicates exactly which entity to move.
  • translation_constraint: Only allow the indicated fraction of movement in the corresponding axis in the actuated entity’s local coordinate space. E g, to only allow movement along the floor (no lifting), set the y fraction to 0: `“translation_constraint”: [1, 0, 1]”.
  • rotation_constraint: Similarly, constrain rotation to the given fraction in the given euler axis in the actuated entity’s local coordinate space. E g, to only allow rotation along Y (so that it always stays up-right), use: "rotation_constraint": [0, 1, 0].
  • target_hand_transform: If omitted, the relationship between the hand and the target object is kept constant throughout the grab. If set, the relationship between the hand and the target is set to this 4x4 transformation matrix upon grabbing it. For example, set this to the identity matrix to make an object move immediately into the user’s hand when grabbed.

live_media

The entity that holds a live_media component for a specific track is the entity that “plays” that track; e g for audio, audio will be played from the location of that entity.

Please do not try to create live-media components manually. They must be allocated server-side so that the server can allocate a track stream in the network protocol. Instead, send allocate_track to place to add a live_media component to your entity.

  • track_id: CHANNEL_MEDIA track number that corresponds to what this entity should play back
  • type: audio or video
  • format: what media format encoder/decoder to use.
  • metadata: a dict of type+format specific metadata about the format of the data.

Audio

For audio, the only valid format is opus. The valid metadata fields for opus audio are:

  • sample_rate: playback sample rate
  • channel_layout: “mono” supported for now.

Video

For video, the two valid formats are mjpeg and h264.

  • Pick mjpeg for video where a low framerate is okay but you want to make sure everybody always has the latest frame, such as for a whiteboard or drawing app.
  • Pick h264 for high framerate video, or decorative video, such as camera, screenshare or a video frame.

The valid metadata fields for video are:

  • width: Width in pixels of each video frame
  • height: Height in pixels of each video frame

Example component:

"live_media": {
+  "track_id": 0, // filled in by server
+  "type": "audio",
+  "format": "opus"
+  "metadata": {
+    "sample_rate": 48000,
+    "channel_count": 1,
+  }
+}
+

Legacy format:

"live_media": {
+  "track_id": 0, // filled in by server
+  "sample_rate": 48000,
+  "channel_count": 1,
+  "format": "opus"
+}
+

sound_effect

Play a sound emanating from this entity, based on a sound asset.

Supported file formats:

  • .ogg
  • .mp3
  • .wav

Visors will load the sound asset upon encountering it. It won’t play until the starts_at field is set and server clock reaches that time.

It is recommended that you first create and publish this entity without the starts_at field so that visors cache it, and only later sets a starts_at time so that it’s more likely to be loaded by the time it’s played.

  • asset: ID of the asset to play. (required)
  • starts_at: The server clock time at which to start playing. Set to nil to just load but not play at this time. (optional, default nil)
  • loop_count: How many times should it loop? 0 means no looping (optional, default 0).
  • offset: Skip n seconds of audio into the file. (optional, default 0, not implemented yet)
  • length: Play only n seconds of audio from the file, skipping the rest of the file before ending or looping. (optional, default false, not implemented yet)
  • volume: Playback volume (optional, default full volume 1.0)
  • finish_if_orphaned: Keep playing the sound to finish even if the component or entity is removed
"sound-effect": {
+  "asset": "asset:sha256:blabla",
+  "starts_at": 12345.005,
+  "loop_count": 2,
+  "offset": 3.0,
+  "length": 5.56,
+  "volume": 1.0,
+}
+

clock

Only set on the entity place, this component defines the flow of time for a place.

"clock": {
+  "time": 123.0, // in seconds
+}
+

Its reference time is undefined. It is always seconds as a double.

cursor

Defines a custom cursor renderer, controlling the appearence of the cursor displayed when pointing at the entity.

"cursor": {
+  "name": "brushCursor",
+  "size": 3,
+}
+
  • name: The name of the custom cursor. There’s currently only one defined; “brushCursor”, which displays a white circle.
  • size: The brushCursor’s radius, meant to match the size of the current brush size when interacting with a drawable surface. 1 unit = 1 centimeter. Default: “3”.

property_animations

A list of property animations to play.

"property_animations": {
+  "animations": {
+    "abc123": { ... }
+  }
+}
+

animations contains key-value pairs of animation IDs and animation descriptors. You don’t manually create this component; instead, please use these interactions:

… to modify the list of animations. Note that animations are automatically removed if they’re non-repeating and their progress reaches 100%.

Each animation descriptor has the following structure:

{
+  "path": "transform.matrix.rotation.y",
+  "from": 0,
+  "to": 3.14,
+  "start_at": 10004.2,
+  "duration": 0.5,
+  "easing": "quadInOut",
+  "repeats": true,
+  "autoreverses": true
+}
+
  • path: You describe the property to be animated by setting the path to the key path of the property For example, to change the alpha field (fourth field) of the color property of the material component, use the path material.color.3 (0-indexed). Required
    • Matrices also have some magical computed properties. You can access rotation, scale and translation of a matrix to directly set that attribute of the matrix.
    • You can also dive into the specific setting for the x, y or z axies of each of those. For example, to rotate around y, you can animate transform.matrix.rotation.y. In that case, the “from” and “to” values can be regular numbers.
  • from: The value to animate from. Can be a number, matrix (list of 16 numbers), vector (list of 3 numbers) or rotation (list of 4 numbers: angle, and the x y z of the axis). It MUST be the same kind of value as the property we’re animating. Required.
  • to: The value to animate to. See from. Required.
  • start_at: The server time at which to start the animation. Required.
  • duration: Duration, in seconds. Required.
  • easing: Easing algorithm. Default linear. Allowed values: linear, quadInOut, quadIn, quadOut, .bounceInOut, bounceIn, bounceOut, backInOut, backIn, backOut, sineInOut, sineIn, sineOut, .cubicInOut, cubicIn, cubicOut, quartInOut, quartIn, quartOut, quintInOut, quintIn, .quintOut, elasticInOut, elasticIn, elasticOut, circularInOut, circularIn, circularOut, .expInOut, expIn, expOut.
  • repeats: Whether to play again from the start after animation finishes. Default false.
  • autoreverses: Whether every other repeated iteration should be in reverse. Default false.

service_discovery

Indicates that the entity provides some sort of service as an interaction API.

{
+  "name": "servicename",
+  "description": "Short developer-readable description of the service",
+  "docs": "https://url/to/documentation"
+}
+

For example, to find a service that lets you view image files, you might look for a service name imageviewer, and look into its documentation on how to ask it to display a specific file.

diff --git a/concepts.html b/concepts.html new file mode 100644 index 0000000..585c7d3 --- /dev/null +++ b/concepts.html @@ -0,0 +1 @@ + Concepts - Alloverse Documentation Concepts | Alloverse Documentation Link Search Menu Expand Document

Concepts

Incomplete


Table of contents

diff --git a/concepts/animating-views.html b/concepts/animating-views.html new file mode 100644 index 0000000..659adb9 --- /dev/null +++ b/concepts/animating-views.html @@ -0,0 +1 @@ + Animating Views - Alloverse Documentation Animating Views | Alloverse Documentation Link Search Menu Expand Document

Animating Views

Coming soon

diff --git a/concepts/architecture.html b/concepts/architecture.html new file mode 100644 index 0000000..9ba8106 --- /dev/null +++ b/concepts/architecture.html @@ -0,0 +1,6 @@ + Architecture - Alloverse Documentation Architecture | Alloverse Documentation Link Search Menu Expand Document

Architecture

This document explains the various concepts. For exact protocol specifications, see the Protocol Reference.

Basic premises

  • Your “place” is where you decorate, run apps, invite people, and hang out. It’s like a collaborative X11 server: It runs a world simulation server, a voip gateway, and all the backing data for 3d UIs for the running apps.
  • A “visor” is the GUI application you use to visit places and interact with your apps.
  • An “appliance” is a process running on your computer, or on a computer on the Internet. Like opening a web page (or launching a remote X11 process), this app can then show its interface and be interacted with inside your place.

A place, a user/visor and appliances are all actors using the same network protocol and RPC mechanics, implemented in the allonet library.

allonet

Streams:

  • The “state stream” sends the place’s representation once every server heartbeat. Right now, it sends the entire state, but the plan is to send only a diff from the last-acknowledged-state for each client. It’s a JSON object of Entities and their properties.
  • The “intent stream” sends the client or appliance’s movement intents and related data on every heartbeat. It’s a JSON object with relative movement intents and absolute orientation requests; details on controller position, orientation and state; and an ack of the last successfully received state.
  • Interactions are JSON lists, with a sender entity and receiver entity.
  • Asset distribution
  • Media streams are unreliable data streams, e g audio (for voice chat), video/textures (screen sharing etc) and geometry (for advanced appliance representations).

Allonet multiplexes these over UDP using enet. The plan is to wrap this in TLS.

An alternative plan has been to use WebRTC as the transport for free TLS, ICE, udp punch-through, etc. We might still do that in the future, if a nice open source library appears.

Entities and the place state

Entities are things in the world, represented in a scene graph. An entity has only an “id” and a list of components. There is a list of specifications for official components. Apps may invent additional components without them having to be part of the standard.

Interactions and access control

Interactions are the way entities can communicate, including how the visor talks to the place itself (by sending to entity id place). It’s a json list for now, and the idea is for it to be a pub-sub request-response protocol vaguley inspired by Peter J Robinson et al’s Pedro protocol.

The documentation has a list of specifications for official interactions, but again, apps and visors can invent their own beyond the specification.

The alloplace server becomes the Pedro gateway, and can thus manage access control lists, defined as guard expressions on the expression itself, the sender and the receiver. See the implementation task for more information.

These ACLs can then control everything needed:

  • An ACL on the “announce” packet allows place owners to restrict access to specific users
  • An ACL on the “spawn” packet allows place owners to permit only specific users and appliances to manifest in the place
  • An ACL on the “acl-modify” packet allows place owners to restrict access to the ACL itself to moderators/owners only.

This should be exposed in the visor as much more user friendly than the bullet list above makes it seem…

The three components

Alloplace

The alloplace server holds all the state and takes care of all the logic. It is the world state, RPC and media transit hub.

  • runs a game loop, with physics simulation, intent interpretation, etc.
  • pulses diffs to any actors that want it (primarily visors),
  • is RPC router between actors (place, visors and apps), including app<>app
  • does ACL permission checks on all RPC
  • simulates the physical bodies in the place
  • Manages at least one physical+visual body for each actor,
  • Allows actors to create additional entities

Visor

I’d love to support different visors: VR, AR desktop 3D and touch. For now, the focus is on the VR visor in Lovr.

alloplace://(enet endpoint)... URLs can be opened to make a visor open a place.

A visor should provide some sort of client identity. The idea for now is for each client to provide a public certificate with a name bound to it, so you can at least know when the same client appears again. Would love an architecture idea for a distributed identity plan (web of trust?).

If we end up going with webrtc, the enet endpoint should be replaced with a https endpoint that takes a POST of the SDP for an OFFER, and responds with the ANSWER.

Appliances

Appliances are written in any language and interact with the allonet library acting as a “UIKit” for XR UI.

alloui

While appliances can use the allonet API directly, it uses low-level primitives that are not great for building 3D UIs. The plan is to create an “Allo UI” UI kit API on top of allonet that spawns entities, shares textures etc as necessary to provide the UX and UI interactions that Alloverse standardizes on, providing an intuitive and uniform experience across appliances without every application developer having to think of their own interaction patterns.

If a user opens an alloapp+http(s)://..., it should be opened by the visor. The visor should then send an interaction to the alloplace server, asking it to spawn the given appliance.

The alloplace server should then make the http(s) call to the given URL with a connection instruction json blob:

    {
+      "spawnInPlace": "alloplace://hostname:port",
+      "onBehalfOf": (client identity),
+      "query": (query params as-is from the alloapp url)
+    }.
+

The http server receiving this request should then spawn a process for this agent and have it connect to the spawnInPlace URL. See the implementation task for opening appliances with URLs.

The plan is to provide a generic “alloapp gateway” node script that responds to requests like the one above which can be easily configured to spawn a process like the above, so that all an app developer needs to implement is a process that takes a place URL in ENV (or the whole json as above), and then asks the allonet API to connect to that URL.

Assets

Entities should have components representing assets such as:

  • mesh/model
  • textures
  • animations
  • static sounds

They should reference these assets by sha1 hash. When a alloplace server sees a new hash in the description of an entity coming from an agent, it should ask that agent for that asset hash over the asset channel. The agent should then stream the asset to the server for caching and redelivery.

When another agent then sees the references to the assets, it can thus then ask the alloplace for the corresponding asset, so that it can then later display it.

Dynamic textures and audio will later be represented as webrtc streams, and thus not considered assets the same way. Placeserv then acts as an SFU.

diff --git a/concepts/assets.html b/concepts/assets.html new file mode 100644 index 0000000..72885d0 --- /dev/null +++ b/concepts/assets.html @@ -0,0 +1 @@ + Assets - Alloverse Documentation Assets | Alloverse Documentation Link Search Menu Expand Document

Assets

Coming soon

diff --git a/concepts/points-pokes-and-grabs.html b/concepts/points-pokes-and-grabs.html new file mode 100644 index 0000000..9241969 --- /dev/null +++ b/concepts/points-pokes-and-grabs.html @@ -0,0 +1 @@ + Points, Pokes and Grabs - Alloverse Documentation Points, Pokes and Grabs | Alloverse Documentation Link Search Menu Expand Document

Points, Pokes and Grabs

Coming soon

diff --git a/concepts/writing-apps-with-alloUI.html b/concepts/writing-apps-with-alloUI.html new file mode 100644 index 0000000..51f4d55 --- /dev/null +++ b/concepts/writing-apps-with-alloUI.html @@ -0,0 +1 @@ + Writing apps with AlloUI - Alloverse Documentation Writing apps with AlloUI | Alloverse Documentation Link Search Menu Expand Document

Writing apps with AlloUI

Coming soon

diff --git a/csharp.html b/csharp.html new file mode 100644 index 0000000..8cc03c1 --- /dev/null +++ b/csharp.html @@ -0,0 +1,62 @@ + Get Started (C#) - Alloverse Documentation Get Started (C#) | Alloverse Documentation Link Search Menu Expand Document

Get Started (C#)

Table of contents
  1. Introduction
  2. Prerequisites
  3. Creating your project
  4. Setting up the basics
  5. Trying your app out
  6. Surprise ending

Introduction

For an overview of what Alloverse and alloapps are, please see the first chapters of the Get Started (Lua) guide.

Note that Lua is the preferred alloapp language, and C# language support is in beta.

Prerequisites

To write Alloverse apps in C#, you’ll need the following:

  • The Alloverse app.
  • Either Visual Studio Community >= 2019 (on a Mac or Windows machine)…
  • Or a plain text editor for code (We recommend Visual Studio Code), together with a command line terminal.

Personally, I’m more of a Linux/Mac with command line kind of person, so this guide will primarily be using the dotnet. I’ll try to include the equivalent Visual Studio screenshots so that you can follow along without using a Terminal.

Creating your project

Let’s create a new C# project:

$ dotnet new console -n fancyapp
+$ cd fancyapp

Add AlloUI as a dependency:

$ dotnet add package AlloUI

You remember how I said at the top that this is a beta? There’s one really terrible hack you’ll have to do until I figure out how to properly package native code in a nuget package.

You have to manually download liballonet.so, and put it at /home/nevyn/Dev/allonet/build/liballonet.so. This unfortunately means that this’ll only work on Linux for now.

$ mkdir -p /home/nevyn/Dev/allonet/build/
+$ curl -o /home/nevyn/Dev/allonet/build/liballonet.so https://alloverse-downloads-prod.s3.eu-north-1.amazonaws.com/allonet/3.0.63.g131e106/liballonet.so

Setting up the basics

Open up Program.cs. The most basic setup for an alloapp is one which:

  1. Creates an AlloClient and connects to the specified alloplace server,
  2. and creates some basic UI elements,
  3. and starts the runloop which will serve requests.

Modify your file to look something like this, adjusting to taste;

using System;
+using System.Diagnostics;
+using System.IO;
+using System.Collections;
+using System.Collections.Generic;
+using AlloUI;
+
+namespace fancyapp {
+    class Program
+    {
+        // AlloUI.App manages your connection to the place
+        App app;
+        static void Main(string[] args)
+        {
+            Program sample = new Program();
+            // Let's use the first commandline argument as the place's URL
+            sample.Run(args[0]);
+        }
+
+        void Run(string url)
+        {
+            // This is step 1.
+            // Create a client and an app which manages the connection for us.
+            app = new App(new AlloClient(), "fancyapp");
+            // Step 2 is to create our UI
+            app.mainView = MakeMainUI();
+            // Step 3: connect and run. Run never returns until program
+            // is stopped.
+            app.Connect(url);
+            app.Run(20);
+        }
+
+        View MakeMainUI()
+        {
+            // Simple UI with a cube and a button
+            Cube cube = new Cube{
+                Bounds= new Bounds{
+                    Size= new Size(1.0, 1.0, 0.10)
+                }.Move(0, 1.5, -2),
+                Color= new Color(0.9, 0.7, 0.9, 1)
+            };
+            // Button is laid on top of cube
+            Button button = cube.addSubview(new Button{
+                Bounds= new Bounds {
+                    Size= new Size(0.6, 0.13, 0.1)
+                }.Move(0, 0, cube.Bounds.Size.Depth/2.0 + 0.05),
+            });
+            button.Label.Text = "Do the thing";
+            // handle clicking the button
+            button.Action += delegate(object sender, Button.ActionArgs args) {
+                Console.WriteLine("Hello world!");
+            };
+            button.Cube.Color = new Color(1,1,1,1);
+
+            // make the cube moveable
+            cube.IsGrabbable = true;
+            return cube;
+        }
+    }
+}

Trying your app out

That’s it! You should now be able to start your project and see it appear in an Alloplace. If you don’t have one already, you can use our sandbox alloplace://sandbox.places.alloverse.com, or be ambitious and boot one on your own (docker run -e ALLOPLACE_NAME="my place" -p 21337:21337/udp -it alloverse/alloplace2). I’m gonna do the former:

$ dotnet run alloplace://sandbox.places.alloverse.com

If it all checks out, you should be able to jump into that place on your VR headset or computer and press the button it has created.

Download the Visor app for your VR or desktop platform of choice, and then click “Connect”, “Sandbox” (or click the alloplace link of the place you’ve rented or started yourself).

On the left, the UI of our app shown as a white rectangle with an orange button. On the left, a terminal showing the assist run command that instantiates the app; and the word Hello printed thrice. Our app running in Sandbox place. I’ve clicked our simple app’s white button button three times, and the laws of causality held up, printing “Hello” thrice to our terminal.

At this point, you could go off, do your own thing, read the documentation as you go. Or you could keep reading, and be guided through the development of a simple but functional todo list app, which will help establish the fundamentals and make it much easier for you to build real, complex apps.

This is also a good point at which to remind you: if you get stuck, or have questions or feedback, please hop on Discord and give it to us straight.

Surprise ending

This is where one would expect the tutorial to really get started, teaching the deeper concepts and doing something more advanced. But alas, the number of hours in a day are finite, and the docs are left unwritten.

Maybe see it as a challenge? “Left as an exercise to the reader” and all that. Who knows, maybe you end up sending us a docs improvement PR? ;)

And again, if you have any questions, hop on Discord!

diff --git a/doc/classes/App.html b/doc/classes/App.html new file mode 100644 index 0000000..bb62e26 --- /dev/null +++ b/doc/classes/App.html @@ -0,0 +1,2 @@ + App - Alloverse Documentation App | Alloverse Documentation Link Search Menu Expand Document

App

Represents the AlloApp.

Mediates communication with backend, and maintains the runloop. Create one of these, configure it, connect it and run it, and you have an alloapp.

Constructor

 local app = App(client)
+

Arguments

Name Type Description
client Client The AlloNet client wrapper

Returns

Nothing


Methods

app:openPopupNearHand (popup, hand, distance, entity)

Open a ui.View as a popup near a hand. Call from e g a button handler to display it right where the user could easily interact with it. You can use this to open a “new item” or a “settings” UI near a user. Since apps are multi-user, sometimes it’s nice to give a user some personal UI that they can do input in, so that they don’t have to fight over control of input with another user.

Arguments

Name Type Description
popup ui.View The view to show to the user. It will be instantiated in
the world at the appropriate location.    
hand Entity The hand entity that the popup should be shown near.
In a button handler, this is the first argument to the callback.    
distance number The distance in meters from the hand to show. Default 0.6
entity Callback(view, ) cb The callback to call when the popup is present in-world

Returns

Nothing


app:addWristWidget (avatarOrHand, widget, callback)

Add a widget to the user’s left wrist, and arrange it to fit with the other widgets already present. Use this to provide some portable UI to the user, such as a remote control.

Arguments

| Name | Type | Description | | ———— | ————– | ————— | | avatarOrHand | Entity | The avatar of the user to add the widget to. Can also be any child entity to the avatar, such as a hand, and the avatar will be looked up for you. | | widget | ui.View | The widget to add. Must be at most 3cm wide. You can make it a button or something that opens more UI nearby if you need more space. | | callback | Callback(bool) | Callback for when adding widget finishes. Its argument is true if successful. |

Returns

Nothing


app:scheduleAction (delay, repeats, callback)

Schedule work to be done later

Arguments

Name Type Description
delay number The time (in seconds) until the callback is called.
repeats boolean Whether The callback should repeat (with the same delay) or only occur once.
callback function The function to be called (with no arguments).

Returns

Nothing


app:clientTime ()

Current client time. This is monotonically increasing.

Arguments

None

Returns

Nothing


app:serverTime ()

Current server time. Might jump around a little to compensate for lag.

Arguments

None

Returns

Nothing


app:updateComponents (changes, removals)

Asks the backend to update components on the server.

Use this to update things you’ve specified in :specification() but now want to change.

Arguments

Name Type Description
changes table A table with the desired changes, for example: {transform={…}, collider={…}}
removals table A table with the keys of componets to remove, for example: {“collider”, “skeleton”}

Returns

Nothing


diff --git a/doc/classes/Asset.html b/doc/classes/Asset.html new file mode 100644 index 0000000..321bfdb --- /dev/null +++ b/doc/classes/Asset.html @@ -0,0 +1,2 @@ + Asset - Alloverse Documentation Asset | Alloverse Documentation Link Search Menu Expand Document

Asset

Represents data that can be shared to other clients in the Alloverse

An asset is just raw data.

Constructor

 asset = Asset(data)
+

Arguments

Name Type Description
data string Raw data for the asset.

Returns

Nothing


Methods

asset:read (offset, length)

Read a part of the data

Arguments

Name Type Description
offset number The byte to start reading from
length number The number of bytes to read

Returns

Type Description
string the requested data

asset:write (data, offset, totalSize)

Write a part of the data

Arguments

Name Type Description
data string The data buffering
offset number The byte offset to start writing at
totalSize number The expected total size of the asset.

Returns

Nothing


asset:size ()

Returns the size of the asset

Arguments

None

Returns

Type Description
number The size of the data

asset:getImageWidthHeight ()

Returns the pixel width and height of the asset that represents an image. Returns nil if the asset doesn’t represent an image.

Arguments

None

Returns

Type Description
(number, number) The width and height of the image (in pixels)

asset:id (refresh)

Returns a computed unique identifier for this asset The id is a hash of the asset data. This ensures the same asset identifier is always matched with the same data

Arguments

Name Type Description
refresh boolean By default a cached hash is returned, if one is available. Send refresh to true to recompute the id

Returns

Nothing


asset:like_file ()

Returns a File-like wrapper to send to methods that wants files It’s not fully implemented; Fill out methods as needed.

Arguments

None

Returns

Type Description
FileWrapper An object that implmeents the same methods as io.File

diff --git a/doc/classes/AssetManager.html b/doc/classes/AssetManager.html new file mode 100644 index 0000000..608acb2 --- /dev/null +++ b/doc/classes/AssetManager.html @@ -0,0 +1,8 @@ + AssetManager - Alloverse Documentation AssetManager | Alloverse Documentation Link Search Menu Expand Document

AssetManager

A utility class for storage and access to Assets.

Constructor

 assetManager = AssetManager(client)
+

Arguments

Name Type Description
client Client The allonet client to handle assets for

Returns

Nothing


Methods

assetmanager:add (asset, manage)

Adds an Asset to the AssetManager

 AssetManager:add(asset, manage)
+

Arguments

Name Type Description
asset Asset The Asset to add
manage bool If set to true, the AssetManager will hold on to the asset for you. If set to false, it will only serve the asset as long as you keep a reference to it.

Returns

Nothing


assetmanager:remove (asset)

Removes an Asset from the AssetManager

 AssetManager:remove(asset)
+

Arguments

Name Type Description
asset Asset The Asset to remove

Returns

Nothing


assetmanager:get (name)

Get an Asset with the corresponding name. Returns nil if no matching Asset is found.

 AssetManager:get(name)
+

Arguments

Name Type Description
name string The name of the requested string

Returns

Type Description
Asset The corresponding Asset

assetmanager:all ()

Gets all Assets currently held by the AssetManager.

 AssetManager:all()
+

Arguments

None

Returns

Type Description
Table All assets held by the AssetManager

assetmanager:count ()

Get the number of Assets currently held by the AssetManager.

 AssetManager:count()
+

Arguments

None

Returns

Type Description
number The number of assets held by the AssetManager

assetmanager:load (name, callback)

Start to load an asset. Callback will be called with the Asset when loading is complete, or with nil if failed.

 AssetManager:load(name, callback)
+

callback: function(name, asset_or_nil) returns true if the asset is loading. returns false if asset was found in cache

Arguments

Name Type Description
name ???  
callback ???  

Returns

Nothing


diff --git a/doc/classes/AssetView.html b/doc/classes/AssetView.html new file mode 100644 index 0000000..1e5c32b --- /dev/null +++ b/doc/classes/AssetView.html @@ -0,0 +1,2 @@ + AssetView - Alloverse Documentation AssetView | Alloverse Documentation Link Search Menu Expand Document

AssetView

Used to display an Asset that’s 3d model.

Constructor

 asset_view = AssetView(asset, bounds)
+

Arguments

Name Type Description
asset Asset An asset representing a 3d model.
bounds Bounds The bounds of the Asset that is to be displayed in the world.

Returns

Nothing


Methods

diff --git a/doc/classes/Base64Asset.html b/doc/classes/Base64Asset.html new file mode 100644 index 0000000..8e504b0 --- /dev/null +++ b/doc/classes/Base64Asset.html @@ -0,0 +1,2 @@ + Base64Asset - Alloverse Documentation Base64Asset | Alloverse Documentation Link Search Menu Expand Document

Base64Asset

An Asset created from a Base64-encoded string.

Constructor

 my_asset = Base64Asset(base64)
+

Arguments

Name Type Description
base64 string A Base64-encoded string representation of an asset

Returns

Nothing


Methods

diff --git a/doc/classes/Bounds.html b/doc/classes/Bounds.html new file mode 100644 index 0000000..3d10a2f --- /dev/null +++ b/doc/classes/Bounds.html @@ -0,0 +1,4 @@ + Bounds - Alloverse Documentation Bounds | Alloverse Documentation Link Search Menu Expand Document

Bounds

A component that defines the pose and size of a View, i.e. its bounds within the world. Note that any changes made to the Bounds using the methods below won’t be applied (and thus visible in the world) until View:setBounds() is been run.

Constructor

 bounds = Bounds(a, b, c, w, h, d)
+

For convenience, a Bounds may also be created using Pose and Size objects:

 bounds = Bounds{pose=,size=}
+ bounds = Bounds(pose, size)
+

Arguments

Name Type Description
a number The View’s x position in the world
b number The View’s y position in the world
c number The View’s z position in the world
w number The View’s width
h number The View’s height
d number The View’s depth

Returns

Nothing


Methods

bounds:copy ()

Makes a copy of a given Bounds object

Arguments

None

Returns

Type Description
Bounds A copy of the given Bounds.

bounds:moveToOrigin ()

Sets the Bounds’ Pose component to {0, 0, 0}

Arguments

None

Returns

Type Description
Bounds The updated Bounds object.

bounds:rotate (angle, x, y, z)

Rotates the Bounds around an axis.

Arguments

Name Type Description
angle number The amount to rotate the coordinate system by, in radians.
x number The x component of the axis of rotation.
y number The y component of the axis of rotation.
z number The z component of the axis of rotation.

Returns

Type Description
Bounds The updated Bounds object.

bounds:move (x, y, z)

Moves the Bounds. May be used in conjunction with Size:getEdge() to move the Bounds relative to its parent.

Arguments

Name Type Description
x number The movement along the x axis.
y number The movement along the y axis.
z number The movement along the z axis.

Returns

Type Description
Bounds The updated Bounds object.

bounds:scale (x, y, z)

Scales the Bounds.

Arguments

Name Type Description
x number The scaling along the x axis (or all axes, if y and z aren’t provided).
y number The scaling along the y axis.
z number The scaling along the z axis.

Returns

Type Description
Bounds The updated Bounds object.

bounds:inset (w, h, d)

Shrinks the Bounds by the given parameters.

Arguments

Name Type Description
w number The reduction of the component’s width.
h number The reduction of the component’s height.
d number The reduction of the component’s depth.

Returns

Type Description
Bounds The updated Bounds object.

diff --git a/doc/classes/Button.html b/doc/classes/Button.html new file mode 100644 index 0000000..6a752ca --- /dev/null +++ b/doc/classes/Button.html @@ -0,0 +1,6 @@ + Button - Alloverse Documentation Button | Alloverse Documentation Link Search Menu Expand Document

Button

A button that can be poked/clicked to perform an action.

Every button has a Label. Use label:setText(…) to set it:

 my_button.label:setText("this is my button")
+

Set onActivated to a function you’d like to be called when the button is pressed:

 my_button.onActivated = function()
+  -- do something...
+ end
+

You can also set the button’s default, highlighted and activated texture (see Surface documentation for image format caveats). Or if you just want a colored button, you can set its color. Set either color or texture to nil to remove that attribute.

Constructor

 my_button = Button(bounds)
+

Arguments

Name Type Description
bounds Bounds The button’s initial bounds.
text string The button’s initial text

Returns

Nothing


Methods

button:setTexture (asset)

Sets the texture of the button Set to nil to remove the attribute.

Arguments

Name Type Description
asset Asset The texture asset

Returns

Nothing


button:setColor (rgba)

Sets the color of the button Set to nil to remove the attribute.

Arguments

Name Type Description
rgba table A table with the desired color’s r, g, b and alpha values between 0-1, e.g. {0.8, 0.4, 0.8, 0.5}

Returns

Nothing


diff --git a/doc/classes/Client.html b/doc/classes/Client.html new file mode 100644 index 0000000..de80398 --- /dev/null +++ b/doc/classes/Client.html @@ -0,0 +1,2 @@ + Client - Alloverse Documentation Client | Alloverse Documentation Link Search Menu Expand Document

Client

???

Constructor

 client = Client(url, name, client, updateStateAutomatically)
+

Arguments

Name Type Description
url string
name string
client Client The AlloNet client.
updateStateAutomatically boolean Whether or not the client should automatically update its state.

Returns

Nothing


Methods

client:getEntity (function)

Fetch an entity when it is received This is asynchronous because you might receive an interaction with an entity ID pointing to an entity that you haven’t received yet.

Arguments

Name Type Description
function cb (entity) callback when entity is arrived

Returns

Nothing


client:launchApp (string, Pose, table, function)

Ask the place to launch an app found at appurl.

Arguments

| Name | Type | Description | | ——– | —— | ————— | | string | appurl | The alloapp: URL to launch into the connected place | | Pose | pose | Transform/position of where in the place to launch the app | | table | args | key-value table of additional arguments to send to the app | | function | cb | Callback for how the launch went. On error, called as cb(false, errstr). On success, called as cb(true, launchedAvatarId). |

Returns

Nothing


client:sendInteraction (Interaction, Function)

Send an RPC message (aka “interaction”) to another entity.

If you’re sending a “request” interaction (default), you should really listen to the callback to make sure your call succeeded.

Arguments

Name Type Description
Interaction interaction a populated Interaction struct
Function callback (interaction, body) a callback that takes the response interaction and the parsed response body.

Returns

Nothing


client:poll (timeout_ms)

Send and receive buffered data synchronously now. Loops over all queued network messages until the queue is empty.

Arguments

Name Type Description
timeout_ms ??? how many ms to wait for incoming messages before giving up. Default 10.

Returns

Type Description
  bool whether any messages were parsed

diff --git a/doc/classes/Color.html b/doc/classes/Color.html new file mode 100644 index 0000000..7a1ecca --- /dev/null +++ b/doc/classes/Color.html @@ -0,0 +1 @@ + Color - Alloverse Documentation Color | Alloverse Documentation Link Search Menu Expand Document

Color

An RGBA color.

diff --git a/doc/classes/Cube.html b/doc/classes/Cube.html new file mode 100644 index 0000000..abbcb5f --- /dev/null +++ b/doc/classes/Cube.html @@ -0,0 +1,2 @@ + Cube - Alloverse Documentation Cube | Alloverse Documentation Link Search Menu Expand Document

Cube

A simple cube. Commonly used as a placeholder asset or marker.

Constructor

 cube = Cube(bounds)
+

Arguments

Name Type Description
bounds Bounds The Cube’s initial bounds.

Returns

Nothing


Methods

cube:setColor (rgba)

Sets the Cube’s color

Arguments

Name Type Description
rgba table The r, g, b and a values of the text color, each defined between 0 and 1. For example, {1, 0.5, 0, 1}

Returns

Nothing


diff --git a/doc/classes/Entity.html b/doc/classes/Entity.html new file mode 100644 index 0000000..d920403 --- /dev/null +++ b/doc/classes/Entity.html @@ -0,0 +1 @@ + Entity - Alloverse Documentation Entity | Alloverse Documentation Link Search Menu Expand Document

Entity

An entity is the manifestation of an agent in a place.

The only fixed information in an entity is its id. Everything else is specified as a set of components.

Methods

entity:getParent ()

Gets the parent of a given Entity.

Arguments

None

Returns

Type Description
Entity The parent Entity, or nil if it has no parent.

entity:getAncestor ()

Gets the topmost parent of a given Entity. E g, if given a user’s hand, gets the root avatar for that user.

Arguments

None

Returns

Nothing


entity:getMatchingDescendant (The)

Finds the first descendant of self where calling predicate with each descendant returns true.

Arguments

Name Type Description
The Callback(entity):Bool predicate callback to run for each descendant

Returns

Type Description  
Entity nil the found entity, or nil if non found

diff --git a/doc/classes/FileAsset.html b/doc/classes/FileAsset.html new file mode 100644 index 0000000..9e56886 --- /dev/null +++ b/doc/classes/FileAsset.html @@ -0,0 +1,4 @@ + FileAsset - Alloverse Documentation FileAsset | Alloverse Documentation Link Search Menu Expand Document

FileAsset

A type of Asset generated from a file

Constructor

 my_asset = FileAsset(path, load)
+

Arguments

Name Type Description
path string The path to the file
load boolean If true, the file is loaded into memory immediately. Otherwise the file is read whenever data is needed.

Returns

Type Description
FileAsset The generated FileAsset.

Methods

fileasset:path ()

Get the path to a FileAsset

 path = FileAsset:path()
+

Arguments

None

Returns

Type Description
string The path to the FileAsset.

fileasset:size ()

Get the size (in bytes) of a FileAsset.

 path = FileAsset:size()
+

Arguments

None

Returns

Type Description
string The size, in bytes, of the FileAsset.

diff --git a/doc/classes/FrameView.html b/doc/classes/FrameView.html new file mode 100644 index 0000000..e60de9f --- /dev/null +++ b/doc/classes/FrameView.html @@ -0,0 +1,3 @@ + FrameView - Alloverse Documentation FrameView | Alloverse Documentation Link Search Menu Expand Document

FrameView

A FrameView is a View subclass that draws a border of a given width and color.

Constructor

 local frameview = FrameView(bounds, thickness)
+

For convenience, you may also set some or all of the FrameView’s properties within the constructor, i.e.:

 local frameview = FrameView{bounds=Bounds(0, 0, 0, 1.0, 0.1, 0.001), color={1.0,0.2,0.4,1}, position="inside"}
+

Arguments

Name Type Description
bounds table A table including at least a Bounds component.
thickness number The thickness of the border.

Returns

Nothing


Methods

diff --git a/doc/classes/GrabHandle.html b/doc/classes/GrabHandle.html new file mode 100644 index 0000000..893c794 --- /dev/null +++ b/doc/classes/GrabHandle.html @@ -0,0 +1,2 @@ + GrabHandle - Alloverse Documentation GrabHandle | Alloverse Documentation Link Search Menu Expand Document

GrabHandle

A widget for moving something; think of it as the title bar of a window.

Grabbing the title bar moves the window, not the title bar. Same here; set this as the subview of your root view to make it movable. You can set any bounds on this handle to position it at a good location in your view.

Constructor

 grab_handle = GrabHandle(bounds)
+

Arguments

Name Type Description
bounds Bounds The GrabHandle’s bounds.

Returns

Nothing


Methods

diff --git a/doc/classes/Label.html b/doc/classes/Label.html new file mode 100644 index 0000000..f7e5a2c --- /dev/null +++ b/doc/classes/Label.html @@ -0,0 +1,6 @@ + Label - Alloverse Documentation Label | Alloverse Documentation Link Search Menu Expand Document

Label

A label, used to display text in Alloverse

Constructor

 --Creates a Label, at origo, that is 1m wide, 20cm tall and 1cm deep
+ local l = Label{bounds=Bounds(0, 0, 0, 1, 0.2, 0.01)}
+
+ --For convenience, you may also set some or all of the Label's properties within the constructor, i.e.:
+ local l = Label{bounds=Bounds(0, 0, 0, 1.0, 0.1, 0.001), color={1.0,0.2,0.4,1}, text="Hello!", halign="left"}
+

Note: The font size of the text is, by default, derived from the height of the Label.

Arguments

Name Type Description
o table A table including at least a Bounds component. It may also include a number of other optional properties: text, wrap, halign, color and fitToWidth.

Returns

Nothing


Methods

label:setText (text)

Sets the Label’s text

Arguments

Name Type Description
text string The text the Label should display

Returns

Nothing


label:setWrap (wrap)

Sets the Label’s horizontal wrap attribute

Arguments

Name Type Description
wrap boolean Whether the Label should line break when reaching the Label’s bounds’ (true) or be allowed to overflow outside the component (false)

Returns

Nothing


label:setHalign (halign)

Sets the Label’s horizontal align attribute

Arguments

Name Type Description
halign “center”,”top”,”bottom” The alignment of the text within the Labels’ bounds

Returns

Nothing


label:setColor (color)

Sets the Label’s text color

Arguments

Name Type Description
color {r,g,b,a} The r, g, b and a values of the text color, each defined between 0 and 1.

Returns

Nothing


label:setFitToWidth (fitToWidth)

Sets the Label’s fitToWidth attribute Note: If true, the wrap attribute is made irrelevant.

Arguments

Name Type Description
fitToWidth boolean Wether the Label’s font size should dynamically shink in order to always fit in the label’s width.

Returns

Nothing


diff --git a/doc/classes/LovrFileAsset.html b/doc/classes/LovrFileAsset.html new file mode 100644 index 0000000..aa9791e --- /dev/null +++ b/doc/classes/LovrFileAsset.html @@ -0,0 +1,4 @@ + LovrFileAsset - Alloverse Documentation LovrFileAsset | Alloverse Documentation Link Search Menu Expand Document

LovrFileAsset

A type of Asset generated from a file

Constructor

 my_asset = LovrFileAsset(path, load)
+

Arguments

Name Type Description
path string The path to the file

Returns

Type Description
LovrFileAsset The generated LovrFileAsset

Methods

lovrfileasset:path ()

Get the path to a LovrFileAsset

 path = LovrFileAsset:path()
+

Arguments

None

Returns

Type Description
string The path to the LovrFileAsset

lovrfileasset:size ()

Get the size of a LovrFileAsset

 path = LovrFileAsset:size()
+

Arguments

None

Returns

Type Description
string The size, in bytes, of the LovrFileAsset

diff --git a/doc/classes/ModelView.html b/doc/classes/ModelView.html new file mode 100644 index 0000000..d356deb --- /dev/null +++ b/doc/classes/ModelView.html @@ -0,0 +1,2 @@ + ModelView - Alloverse Documentation ModelView | Alloverse Documentation Link Search Menu Expand Document

ModelView

Used to display a 3D model asset.

Constructor

 model_view = ModelView(bounds, asset)
+

Arguments

Name Type Description
bounds Bounds The bounds of the model that is to be displayed in the world.
asset Asset An asset representing a 3d model.

Returns

Nothing


Methods

diff --git a/doc/classes/NavStack.html b/doc/classes/NavStack.html new file mode 100644 index 0000000..3a9328a --- /dev/null +++ b/doc/classes/NavStack.html @@ -0,0 +1,2 @@ + NavStack - Alloverse Documentation NavStack | Alloverse Documentation Link Search Menu Expand Document

NavStack

Navigation stack: pushes and pops views to drill down a hierarchy of UI.

Includes a back button to allow navigation.

Constructor

 navStack = NavStack(bounds)
+

Arguments

Name Type Description
bounds Bounds The NavStack’s bounds.

Returns

Nothing


Methods

Returns the item at the bottom of the stack.

Does not remove the item from the stack.

Arguments

None

Returns

Type Description
View The item from the bottom of the stack

Returns the item at the top of the stack.

Does not remove the item from the stack.

Arguments

None

Returns

Type Description
View The item from the top of the stack

Adds an item to the top of the stack

Arguments

Name Type Description
view View The view to push

Returns

Nothing


Returns the item from the top of the stack.

Removes the item from the stack.

Arguments

None

Returns

Type Description
View top The item at the top of the stack

diff --git a/doc/classes/Ninepatch.html b/doc/classes/Ninepatch.html new file mode 100644 index 0000000..9d93568 --- /dev/null +++ b/doc/classes/Ninepatch.html @@ -0,0 +1,2 @@ + Ninepatch - Alloverse Documentation Ninepatch | Alloverse Documentation Link Search Menu Expand Document

Ninepatch

A ninepatch is a View subclass which displays a 9patch texture on a square.

Constructor

 surface = Surface(bounds, texture, inset)
+

Arguments

Name Type Description
bounds Bounds The Surface’s bounds.
inset number The size of the border of the surface
An Texture asset with the 9patch image texture to use
textureInset number The number of pixels to inset from each side in the texture image

Returns

Nothing


Methods

diff --git a/doc/classes/Pose.html b/doc/classes/Pose.html new file mode 100644 index 0000000..4ff980c --- /dev/null +++ b/doc/classes/Pose.html @@ -0,0 +1,5 @@ + Pose - Alloverse Documentation Pose | Alloverse Documentation Link Search Menu Expand Document

Pose

The “position” of a view. Abstracts a mat4 transformation matrix.

Constructor

 pose = Pose() -- Creates a zero pose
+

A Pose may also be created the following ways:

 pose = Pose(transform) -- Creates a pose from a transform
+ pose = Pose(x, y, z) -- Create positioned pose
+ pose = Pose(a, x, y, z) -- Create rotated pose
+

Arguments

Name Type Description
a ???  
b ???  
c ???  
d ???  

Returns

Nothing


Methods

pose:copy ()

Creates and returns a copy of a given Pose

Arguments

None

Returns

Type Description
Pose A copy of the original Pose object.

pose:identity ()

Sets the Pose to {0, 0, 0, 0}.

Arguments

None

Returns

Type Description
Pose original Pose, post reset to the identity matrix.

pose:set (other)

Sets the Pose to inherit

Arguments

Name Type Description
other Pose The source Pose to copy.

Returns

Type Description
Pose the original Pose, after having been updated.

pose:rotate (angle, x, y, z)

Rotates the Pose

Arguments

Name Type Description
angle number The angle component of the angle/axis rotation (radians).
x number The x component of the axis of rotation.
y number The y component of the axis of rotation.
z number The z component of the axis of rotation.

Returns

Type Description
Pose The original Pose, post-rotation.

pose:move (x, y, z)

Moves the Pose

Arguments

Name Type Description
x number The movement along the x axis.
y number The movement along the y axis.
z number The movement along the z axis.

Returns

Type Description
Pose The original Pose, post-move.

pose:scale (x, y, z)

Scales the Pose

Arguments

Name Type Description
x number The x component of the scale to apply (or all axes, if y and z aren’t provided).
y number The y component of the scale to apply.
z number The z component of the scale to apply.

Returns

Type Description
Pose The original Pose, post-scale.

pose:concat (otherPoseOrTransform)

Concatenates (multiplies) this transform with another

Arguments

Name Type Description  
otherPoseOrTransform Pose mat4 Either a CPML mat4 matrix to concatenate with, or another Pose

Returns

Type Description
Pose The original Pose, post-concatenation.

diff --git a/doc/classes/PropertyAnimation.html b/doc/classes/PropertyAnimation.html new file mode 100644 index 0000000..09cf0b3 --- /dev/null +++ b/doc/classes/PropertyAnimation.html @@ -0,0 +1,11 @@ + PropertyAnimation - Alloverse Documentation PropertyAnimation | Alloverse Documentation Link Search Menu Expand Document

PropertyAnimation

PropertyAnimation describes the animation of a field in a component in an entity.

It can be any field that is numeric, 4x4 matrix, vec3 or a rotation (as an angle-axis as four numbers).

Use View:addPropertyAnimation to apply and activate the animation.

Example usage:

       self.logo:addPropertyAnimation(ui.PropertyAnimation{
+          path= "transform.matrix.rotation.y",
+          start_at = self.app:serverTime() + 1.0,
+          from= -0.2,
+          to=   0.2,
+          duration = 2.0,
+          repeats= true,
+          autoreverses= true,
+          easing= "elasticOut",
+        })
+

Methods

propertyanimation:setPath (path)

You describe the property to be animated by setting the path to the key path of the property.

For example, to change the alpha field (fourth field) of the color property of the material component, use the path material.color.3 (0-indexed).

Matrices also have some magical computed properties. You can access rotation, scale and translation of a matrix to directly set that attribute of the matrix. You can also dive into the specific setting for the x, y or z axies of each of those. For example, to rotate around y, you can animate transform.matrix.rotation.y. In that case, the “from” and “to” values can be regular numbers.

Arguments

Name Type Description
path string The keypath to the property to animate

Returns

Nothing


propertyanimation:setFrom (from)

The value to animate from. Can be a number, matrix (list of 16 numbers), vector (list of 3 numbers) or rotation (list of 4 numbers: angle, and the x y z of the axis). It MUST be the same kind of value as the property we’re animating (see setPath).

Arguments

Name Type Description      
from number mat4 vec3 {a,ax,ay,az} Value to animate from

Returns

Nothing


propertyanimation:setTo (to)

The value to animate to. See setFrom.

Arguments

Name Type Description      
to number mat4 vec3 {a,ax,ay,az} Value to animate to

Returns

Nothing


propertyanimation:setStartAt (start_at)

The time at which to start the animation. Use App:serverTime() to get the current time, and use offsets from that time to get time in the future. To start an animation in four seconds, use myview.app:serverTime()+4.

Arguments

Name Type Description
start_at number Server time at which to start the animation

Returns

Nothing


propertyanimation:setDuration (duration)

The number of seconds to animate for, in seconds.

After the time start_at + duration has elapsed, the animation is automatically removed, unless it’s a repeating animation.

Arguments

Name Type Description
duration number Duration of animation in seconds

Returns

Nothing


propertyanimation:setEasing (easing)

Set the easing curve used to animate along. The default is linear, which means going in a straight line from from to to. This usually looks very stiff and robotic, and is discouraged. Use one of these easing algorithms instead:

  • linear
  • quadInOut
  • quadIn
  • quadOut
  • bounceInOut
  • bounceIn
  • bounceOut
  • backInOut
  • backIn
  • backOut
  • sineInOut
  • sineIn
  • sineOut
  • cubicInOut
  • cubicIn
  • cubicOut
  • quartInOut
  • quartIn
  • quartOut
  • quintInOut
  • quintIn
  • quintOut
  • elasticInOut
  • elasticIn
  • elasticOut
  • circularInOut
  • circularIn
  • circularOut
  • expInOut
  • expIn
  • expOut

Arguments

Name Type Description
easing string Name of the easing algorithm to use

Returns

Nothing


propertyanimation:setRepeats (repeats)

Whether this animation restarts plays again immediately after finishing.

Repeating animations are never removed automatically.

Arguments

Name Type Description
repeats bool Whether to repeat

Returns

Nothing


propertyanimation:setAutoreverses (autoreverses)

For repeating animations: Whether to play this animation back in reverse after each time it has been played front-to-back.

Arguments

Name Type Description
autoreverses bool Whether to autoreverse

Returns

Nothing


propertyanimation:removeFromView (callback)

Asks server to stop the animation and remove it

Arguments

Name Type Description
callback ???  

Returns

Nothing


diff --git a/doc/classes/ProxyIconView.html b/doc/classes/ProxyIconView.html new file mode 100644 index 0000000..21f1a68 --- /dev/null +++ b/doc/classes/ProxyIconView.html @@ -0,0 +1,2 @@ + ProxyIconView - Alloverse Documentation ProxyIconView | Alloverse Documentation Link Search Menu Expand Document

ProxyIconView

Proxy icon: A grabbable 3d object that creates a copy that can be placed in the world.

Useful as a way to instantiate objects in the world from a palette. Subclass it and override onIconDropped().

Constructor

 icon = ProxyIconView(bounds)
+

Arguments

Name Type Description
bounds Bounds The icon’s bounds.
name String The asset’s name
author String The asset’s author
icon FileAsset asset to be used as the icon for this proxy view

Returns

Nothing


Methods

proxyiconview:onIconDropped (at_transform)

Override this to handle the icon being dropped. You can also set it as a property on the instantiated icon view.

Arguments

Name Type Description
at_transform ???  

Returns

Nothing


diff --git a/doc/classes/ResizeHandle.html b/doc/classes/ResizeHandle.html new file mode 100644 index 0000000..35665d2 --- /dev/null +++ b/doc/classes/ResizeHandle.html @@ -0,0 +1,2 @@ + ResizeHandle - Alloverse Documentation ResizeHandle | Alloverse Documentation Link Search Menu Expand Document

ResizeHandle

A window resize widget.

Grab and move to resize your view from its center point.

Constructor

 resizeHandle = ResizeHandle(bounds, translationConstraint, rotationConstraint)
+

Arguments

Name Type Description
bounds Bounds The ResizeHandle’s bounds.
translationConstraint table Only allow the indicated fraction of movement in the corresponding axis in the actuated entity’s local coordinate space. E g, to only allow movement along the floor (no lifting), set the y fraction to 0: {1, 0, 1}.
rotationConstraint table Similarly, constrain rotation to the given fraction in the given euler axis in the actuated entity’s local coordinate space. E g, to only allow rotation along Y (so that it always stays up-right), use: {0, 1, 0}.

Returns

Nothing


Methods

diff --git a/doc/classes/Size.html b/doc/classes/Size.html new file mode 100644 index 0000000..92fecc1 --- /dev/null +++ b/doc/classes/Size.html @@ -0,0 +1,7 @@ + Size - Alloverse Documentation Size | Alloverse Documentation Link Search Menu Expand Document

Size

The setfenv(…) (in meters) of a view or element in the world.

Note that size and scale are different things: size is the semantic size of your app (e g “this button is 2 dm wide”) while scale is the scaling up or down of this semantic size (e g a transformation matrix with a 2.0 X-axis scale and a 2dm width is 4dm wide, but its content is still 2dm wide.)

Constructor

 size = Size(width, height, depth)
+

Arguments

Name Type Description
width number The width of the component.
height number The height of the component.
depth number The depth of the component.

Returns

Nothing


Methods

size:copy ()

Creates and returns a copy of a given Size.

Arguments

None

Returns

Type Description
Size A copy of the original Size object.

size:inset (byWidth, byHeight, byDepth)

Shrinks the Size component by the given parameters.

Arguments

Name Type Description
byWidth number The x component of the size reduction.
byHeight number The y component of the size reduction.
byDepth number The z component of the size reduction.

Returns

Type Description
Size The original Size object, post-resize.

size:set (width, height, depth)

Sets width, height and depth

Arguments

Name Type Description
width number The width of the component.
height number The height of the component.
depth number The depth of the component.

Returns

Nothing


size:getEdge (vertical, horizontal, depthwise)

Returns the position relative to the object’s edge(s).

Very useful for laying out information, such as positioning a Label in the top center of my_container:

 local my_label = ui.Label{
+   bounds = ui.Bounds{size=ui.Size(1, 0.15, 0.1)}:move (
+     my_container.bounds.size:getEdge("top", "center")
+   )
+ }
+

Arguments

Name Type Description
vertical String “top”, “center” (default) or “bottom”.
horizontal String “left”, “center” (default) or “right”.
depthwise String “front”, “center” (default) or “back”.

Returns

Type Description
vector A vector (x, y, z) with coordinates corresponding to the requested position of the given Size object.

diff --git a/doc/classes/Slider.html b/doc/classes/Slider.html new file mode 100644 index 0000000..c273ac3 --- /dev/null +++ b/doc/classes/Slider.html @@ -0,0 +1 @@ + Slider - Alloverse Documentation Slider | Alloverse Documentation Link Search Menu Expand Document

Slider

A slider component for selecting a value from a range

Methods

slider:minValue (newValue)

Get or set the minimum selectable value

Arguments

Name Type Description
newValue ???  

Returns

Nothing


slider:maxValue (newvalue)

Get or set the maximum selecrtable value

Arguments

Name Type Description
newvalue ???  

Returns

Nothing


slider:currentValue (newValue)

Get or set the current value

Arguments

Name Type Description
newValue ???  

Returns

Nothing


diff --git a/doc/classes/Speaker.html b/doc/classes/Speaker.html new file mode 100644 index 0000000..05204df --- /dev/null +++ b/doc/classes/Speaker.html @@ -0,0 +1,8 @@ + Speaker - Alloverse Documentation Speaker | Alloverse Documentation Link Search Menu Expand Document

Speaker

A place to emit sound from. It can either play live-streamed audio or static sound files:

  • If given a sound effect asset to its constructor, it will play that asset looping
  • If not given a sound effect, it will allocate a live_media track, which you can then use to send_audio with:
    local leftSpeaker = ui.Speaker(ui.Bounds(0,0,0,  1,1,1))
    +app:scheduleAction(0.02, true, function()
    +  local leftAudio, rightAudio = player:generateAudio(960)
    +  if left and leftSpeaker.trackId then
    + app.client.client:send_audio(leftSpeaker.trackId, leftAudio)
    +  end
    +end)
    +
diff --git a/doc/classes/StackView.html b/doc/classes/StackView.html new file mode 100644 index 0000000..be6cbac --- /dev/null +++ b/doc/classes/StackView.html @@ -0,0 +1,10 @@ + StackView - Alloverse Documentation StackView | Alloverse Documentation Link Search Menu Expand Document

StackView

A view that stacks its subviews either vertical (default) or horizontally.

The StackView will adjust its size on the (specified) main axis while preserving the size given for the other axis. It will also adjust the size of each subview to fill the other axis while preserving the subview size on the main axis.

You can put StackViews into Stackviews to create rows and columns

 rows = StackView(nil, "v")
+ rows:addSubview(Label{text="Example"})
+ cols = rows:addSubview(StackView(nil, "h"))
+ cols:addSubview(Label{text="Col1"})
+ cols:addSubview(Label{text="Col2"})
+ rows:addSubview(Label{text="The End"})
+ self:addSubview(rows)
+ rows:layout()
+

Constructor

 my_button = StackView(bounds, axis)
+

Arguments

Name Type Description
bounds Bounds The StackView’s Bounds component
axis string The main axis to layout subviews on. “v” (default) or “h”

Returns

Nothing


Methods

stackview:margin (newValue)

Set the spacing between items

Arguments

Name Type Description
newValue number The space between subviews. nil to just return the current value.

Returns

Type Description
number The current value

stackview:layout ()

Layout the subviews

Arguments

None

Returns

Nothing


diff --git a/doc/classes/Surface.html b/doc/classes/Surface.html new file mode 100644 index 0000000..edca924 --- /dev/null +++ b/doc/classes/Surface.html @@ -0,0 +1,2 @@ + Surface - Alloverse Documentation Surface | Alloverse Documentation Link Search Menu Expand Document

Surface

A Surface is a View subclass which displays a single texture on a square.

Constructor

 surface = Surface(bounds)
+

Arguments

Name Type Description
bounds Bounds The Surface’s bounds.

Returns

Nothing


Methods

diff --git a/doc/classes/TabView.html b/doc/classes/TabView.html new file mode 100644 index 0000000..ed362c8 --- /dev/null +++ b/doc/classes/TabView.html @@ -0,0 +1,2 @@ + TabView - Alloverse Documentation TabView | Alloverse Documentation Link Search Menu Expand Document

TabView

TabView: Switch between different UIs using tabs

Constructor

 tabView = TabView(bounds)
+

Arguments

Name Type Description
bounds Bounds The TabView’s bounds.
tabSpacing int The spacing between tabs
inactiveColor Color The color of an inactive tab
activeColor Color The color of an active tab

Returns

Nothing


Methods

diff --git a/doc/classes/TextField.html b/doc/classes/TextField.html new file mode 100644 index 0000000..ff48c54 --- /dev/null +++ b/doc/classes/TextField.html @@ -0,0 +1,12 @@ + TextField - Alloverse Documentation TextField | Alloverse Documentation Link Search Menu Expand Document

TextField

A text field, used for inputting text.

Set onReturn to define a function that gets called when the enter key is pressed (while the text field is focused):

 my_textfield.onReturn = function()
+ -- do stuff
+end
+

Set onChange to define a function that gets called when the contents of the text field have changed:

 my_textfield.onChange = function()
+ -- do stuff
+end
+

Set onLostFocus to define a function that gets called when the text field loses focus:

 my_textfield.onLostFocus = function()
+ -- do stuff
+end
+

Constructor

 local textfield = TextField(o)
+

For convenience, you may also set some or all of the TextField’s properties within the constructor, i.e.:

 local textfield = TextField{bounds=Bounds(0, 0, 0, 1.0, 0.1, 0.001), color={1.0,0.2,0.4,1}, halign="center"}
+

Arguments

Name Type Description
o table A table including at least a Bounds component.

Returns

Nothing


Methods

textfield:appendText (text)

Appends the provided text to the TextField

Arguments

Name Type Description
text string The text to append

Returns

Nothing


diff --git a/doc/classes/VideoSurface.html b/doc/classes/VideoSurface.html new file mode 100644 index 0000000..2d83b33 --- /dev/null +++ b/doc/classes/VideoSurface.html @@ -0,0 +1,6 @@ + VideoSurface - Alloverse Documentation VideoSurface | Alloverse Documentation Link Search Menu Expand Document

VideoSurface

A surface that allocates a video media track to use as texture Send frames like this

app:scheduleAction(0.02, true, function()
+  if surface and surface.trackId then
+    app.client.client:send_video(surface.trackId, pixeldata, width, height, [format=rgba8], [stride=width])
+  end
+end)
+

Constructor

Initiate a video surface.

A video track will be allocated for the surface. The resolution can not be changed later.

Arguments

Name Type Description
bounds Bounds The position and size of the surface
resolution Table A table ({int, int}) with width and height giving the pixel resolution of the video. Must match the width and height sent to sendFrame

Returns

Nothing


Methods

videosurface:setResolution (width, height)

Set the input video resolution. Must be called before awakened.

Arguments

Name Type Description
width ???  
height ???  

Returns

Nothing


videosurface:setVideoFormat (fmt)

Set the output video encoder format. Default “mjpeg” which is slow but compatible. You can also set it to “h264” if you provide liballonet-av, libavcodec etc.

Arguments

Name Type Description
fmt ???  

Returns

Nothing


videosurface:sendFrame (pixels, width, height, format, stride)

Send a video frame to the server

Arguments

Name Type Description
pixels String with pixel data according to format and stride
width int The number of pixels in width. Should match the width set at init.
height int The number of pixels in height. Shold match the height set at init.
format string The pixel format. For example “bgrx8”. Default: “rgba”
stride int The number of bytes for each row of pixels. Default: width*bpp

Returns

Nothing


diff --git a/doc/classes/View.html b/doc/classes/View.html new file mode 100644 index 0000000..1d530e8 --- /dev/null +++ b/doc/classes/View.html @@ -0,0 +1,4 @@ + View - Alloverse Documentation View | Alloverse Documentation Link Search Menu Expand Document

View

The View class acts as base for anything visual in an alloapp.

It manages a tree of sub-views; its bounds (transform and size) and a connection to a low-level entity.

Constructor

 view = View(bounds)
+

Arguments

Name Type Description
bounds Bounds The View’s Bounds component

Returns

Nothing


Methods

view:awake ()

awake() is called when entity exists and is bound to this view.

Arguments

None

Returns

Nothing


view:sleep ()

sleep() is called when the entity for the view stops existing

Arguments

None

Returns

Nothing


view:isAwake ()

does the entity for this view exist and is bound to this view?

Arguments

None

Returns

Nothing


view:doWhenAwake (todo)

schedule something to do once the entity exists for this view. If it does, do the thing immediately.

Arguments

Name Type Description
todo function The function to run

Returns

Nothing


view:setGrabbable (grabbable, grabOptions)

If this is set to true, user can grab and move this view using the grip button.

Arguments

Name Type Description
grabbable Boolean Set to true to enable the View to be grabbed.
grabOptions table A table of options for the grabbable component. See Components > grabbable

Returns

Nothing


view:setPointable (pointable)

If this is set to true, the user’s cursor can land on this view, and you can receive pointer events. (See onPointerChanged and friends)

Arguments

Name Type Description
pointable Boolean Set to true to enable the View to receive pointer events.

Returns

Nothing


view:transformFromParent ()

The mat4 describing the transform from the parent view’s location to this view’s location, i e the location in the local coordinate system of the parent view.

Arguments

None

Returns

Nothing


view:transformFromWorld ()

The mat4 describing the transform in world coordinates, i e exactly where the view is in the world instead of where it is relative to its parent.

Arguments

None

Returns

Nothing


view:convertPointFromView (point, other)

Converts point from other view to this view If other is nil then the point is assumed to be in world space

Arguments

Name Type Description
point Point A point in the coordinate system of other
other View The view to convert the point from

Returns

Nothing


view:specification ()

The specification is used to describe the entity tree.

It is required to represent this view inside the Alloverse. In a subclass, call this implementation and then add/modify your own components.

Arguments

None

Returns

Nothing


view:updateComponents (changes, removals)

Asks the backend to update components on the server.

Use this to update things you’ve specified in :specification() but now want to change.

Arguments

Name Type Description
changes table A table with the desired changes, for example: {transform={…}, collider={…}}
removals table A table with the keys of componets to remove, for example: {“collider”, “skeleton”}

Returns

Nothing


view:markAsDirty (components)

Mark one or more Components as needing to have their server-side value updated ASAP

Arguments

Name Type Description  
components string {string} either a string with one component to update, or a list if string components

Returns

Nothing


view:setTransform (transform)

Give this view an extra transform on top of the bounds. This is useful for things like adding a scale effect.

Arguments

Name Type Description
transform cpml.mat4 The transformation matrix to set

Returns

Nothing


view:resetPoseFromServer ()

If the entity backing this view has moved (e g grabbed by a user, or moved by an animation), this won’t automatically update the Pose in this view.

To make sure your local state reflects what is set in-world, you can call this method to update your Pose to match whatever transform is set on the entity in the world.

Arguments

None

Returns

Nothing


view:setBounds (bounds)

Sets the View’s bounds (pose and size) in the world.

Note that simply changing a View’s Bounds won’t affect its size or position in the world until this method is run.

Arguments

Name Type Description
bounds Bounds the Bounds with which to define the Size and Pose of the parent View in the world.

Returns

Nothing


view:moveBoundsToEdge (horizontal, vertical, depthwise)

Uses superview’s bounds’ size to find an edge and move to that edge.

Returns the bounds so you can continue modifying it. See Size:getEdge()

Arguments

Name Type Description
horizontal ???  
vertical ???  
depthwise ???  

Returns

Nothing


view:addSubview (subview)

Adds a View as a child component to the given View.

Arguments

Name Type Description
subview View The View to be added

Returns

Nothing


view:removeFromSuperview ()

Detaches the View from its parent

Arguments

None

Returns

Nothing


view:findView (vid)

Finds and returns a subview of the given view ID.

Arguments

Name Type Description
vid string The viewId of the View to be searched for.

Returns

Type Description
View The subview corresponding to the view ID. If no view was found, nil is returned.

view:playSound (asset, playOptions)

Plays the given sound asset ASAP.

You can use playOptions to set things like loop_count, volume, length, offset etc…

Arguments

Name Type Description
asset Asset The asset to play
playOptions table A table with valid keys for the “sound_effect” component

Returns

Nothing


view:askToFocus (avatar)

Ask the client that uses the given avatar to focus this view to take text input.

In other words: display the keyboard for that avatar.

Arguments

Name Type Description
avatar ???  

Returns

Nothing


view:defocus ()

Dismiss the keyboard for the user that has currently keyboard-focused this view.

Arguments

None

Returns

Nothing


view:onGrabStarted (hand)

Callback called when a user grabs this view in order to move it.

The server will then update self.entity.components.transform to match where the user wants to move it continuously. There is no callback for when the entity is moved.

Arguments

Name Type Description
hand Entity The hand entity that started the grab

Returns

Nothing


view:onGrabEnded (hand)

Callback called when a user lets go of and no longer wants to move it.

Arguments

Name Type Description
hand Entity The hand entity that released the grab.

Returns

Nothing


view:onPointerChanged (pointer)

Callback for when a hand is interacting with a view.

NOTE: You must set view:setPointable(true), or the user’s cursor will just fall right through this view!

This is a catch-all callback; there is also onPointerEntered, onPointerMoved, onPointerExited, onTouchDown and onTouchUp if you want to react only to specific events.

Arguments

Name Type Description
pointer table A table with keys (see below).

The pointer table’s keys are as follows:

  • hand: The hand entity that is doing the pointing
  • state: “hovering”, “outside” or “touching”
  • touching: bool, whether the hand is currently doing a poke on this view
  • pointedFrom: a vec3 in world coordinate space with the coordinates of the finger tip of the hand pointing at this view.
  • pointedTo: the point on this view that is being pointed at (again, in world coordinates). |

Returns

Nothing


view:onPointerEntered (pointer)

Callback for when a hand’s pointer ray entered this view.

The state in pointer is now “hovering”

Arguments

Name Type Description
pointer table see onPointerChanged.

Returns

Nothing


view:onPointerMoved (pointer)

Callback for when a hand’s pointer moved within this view.

The pointedFrom and pointedTo in pointer now likely have new values.

Arguments

Name Type Description
pointer table see onPointerChanged.

Returns

Nothing


view:onPointerExited (pointer)

Callback for when the hand’s pointer is no longer pointing within this view.

The state in pointer is now “outside”

Arguments

Name Type Description
pointer table see onPointerChanged.

Returns

Nothing


view:onTouchDown (pointer)

Callback for when the hand’s pointer is poking/touching this view The state in pointer is now “touching”

Arguments

Name Type Description
pointer table see onPointerChanged.

Returns

Nothing


view:onTouchUp (pointer)

Callback for when the hand’s pointer stopped poking/touching this view.

This is a great time to invoke an action based on the touch. For example, if you’re implementing a button, this is where you’d trigger whatever you’re trying to trigger.

NOTE: If pointer.state is now “outside”, the user released the trigger button outside of this view, and you should NOT perform an action, but cancel it instead.

Arguments

Name Type Description
pointer table see onPointerChanged.

Returns

Nothing


view:onInteraction (inter, body, sender)

an interaction message was sent to this specific view.

See Interactions

Arguments

Name Type Description
inter ???  
body ???  
sender ???  

Returns

Nothing


view:onFileDropped (filename, asset_id)

Callback called when a file is dropped on the view

Arguments

Name Type Description
filename string The name of the dropped file
asset_id string The id of the asset dropped on you

Returns

Nothing


view:addPropertyAnimation (anim)

Add an animation of a property of a component to this view For example, you might want to add a one-second animation of transform.matrix.rotation.x from 0 to 6.28, repeating.

Arguments

Name Type Description
anim PropertyAnimation The animation to add to this view.

Returns

Nothing


view:setTexture (asset)

Set the Views’s texture using an Asset.

The asset parameter can be either an Asset instance or a raw string hash

 View:setTexture(asset)
+

Arguments

Name Type Description
asset Asset An instance of an Asset

Returns

Nothing


view:setColor (rgba)

Set the color of a View using a set of rgba values between 0 and 1.

E.g. to set the view to be red and 50% transparent, set this value to {1, 0, 0, 0.5}

 View:setColor(rgba)
+

Arguments

Name Type Description
rgba table A table defining a color value with alpha between 0-1.

Returns

Nothing


view:layout ()

Layout this view and its children. Override to implement your own custom layout. Don’t forget to call super’s implementation, and don’t forget to markAsDirty if needed.

Arguments

None

Returns

Nothing


diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..b78047d --- /dev/null +++ b/doc/index.html @@ -0,0 +1 @@ + Index - Alloverse Documentation Index | Alloverse Documentation Link Search Menu Expand Document
  • allonet.include.allonet.assetstore
  • allonet.include.allonet.client
  • allonet.include.allonet.jobs
  • allonet.include.allonet.state
  • allonet.lib.tinyjpeg.tiny_jpeg
  • allonet.src.alloclient_simple_api
  • allonet.src.asset
  • allonet.src.asset
  • allonet.src.assetstore
  • allonet.src.client._client
  • allonet.src.clientproxy
  • allonet.src.delta
  • allonet.src.media.media
  • allonet.src.media.video.libav
  • allonet.src.server
  • allonet.src.standalone_server
  • allonet.test.assetstore_test
  • App

    Methods

  • app:_init (client)
  • app:openPopupNearHand (popup, hand, distance, entity)
  • app:addWristWidget (avatarOrHand, widget, callback)
  • app:scheduleAction (delay, repeats, callback)
  • app:clientTime ()
  • app:serverTime ()
  • app:updateComponents (changes, removals)
  • Asset

    Methods

  • asset:_init (data)
  • asset:read (offset, length)
  • asset:write (data, offset, totalSize)
  • asset:size ()
  • asset:getImageWidthHeight ()
  • asset:id (refresh)
  • asset:like_file ()
  • AssetManager

    Methods

  • assetmanager:_init (client)
  • assetmanager:add (asset, manage)
  • assetmanager:remove (asset)
  • assetmanager:get (name)
  • assetmanager:all ()
  • assetmanager:count ()
  • assetmanager:load (name, callback)
  • AssetView

    Methods

  • assetview:_init (asset, bounds)
  • Base64Asset

    Methods

  • base64asset:_init (base64)
  • FileAsset

    Methods

  • fileasset:_init (path, load)
  • fileasset:path ()
  • fileasset:size ()
  • LovrFileAsset

    Methods

  • lovrfileasset:_init (path)
  • lovrfileasset:path ()
  • lovrfileasset:size ()
  • Bounds

    Methods

  • bounds:_init (a, b, c, w, h, d)
  • bounds:copy ()
  • bounds:moveToOrigin ()
  • bounds:rotate (angle, x, y, z)
  • bounds:move (x, y, z)
  • bounds:scale (x, y, z)
  • bounds:inset (w, h, d)
  • Client

    Methods

  • client:_init (url, name, client, updateStateAutomatically)
  • client:getEntity (function)
  • client:launchApp (string, Pose, table, function)
  • client:sendInteraction (Interaction, Function)
  • client:poll (timeout_ms)
  • Color
  • Entity

    Methods

  • entity:getParent ()
  • entity:getAncestor ()
  • entity:getMatchingDescendant (The)
  • alloui.lua.alloui.json
  • Pose

    Methods

  • pose:_init (a, b, c, d)
  • pose:copy ()
  • pose:identity ()
  • pose:set (other)
  • pose:rotate (angle, x, y, z)
  • pose:move (x, y, z)
  • pose:scale (x, y, z)
  • pose:concat (otherPoseOrTransform)
  • PropertyAnimation

    Methods

  • propertyanimation:setPath (path)
  • propertyanimation:setFrom (from)
  • propertyanimation:setTo (to)
  • propertyanimation:setStartAt (start_at)
  • propertyanimation:setDuration (duration)
  • propertyanimation:setEasing (easing)
  • propertyanimation:setRepeats (repeats)
  • propertyanimation:setAutoreverses (autoreverses)
  • propertyanimation:removeFromView (callback)
  • Size

    Methods

  • size:_init (width, height, depth)
  • size:copy ()
  • size:inset (byWidth, byHeight, byDepth)
  • size:set (width, height, depth)
  • size:getEdge (vertical, horizontal, depthwise)
  • alloui.lua.alloui.standard_animations
  • Button

    Methods

  • button:_init (bounds, text)
  • button:setTexture (asset)
  • button:setColor (rgba)
  • Cube

    Methods

  • cube:_init (bounds)
  • cube:setColor (rgba)
  • FrameView

    Methods

  • frameview:_init (bounds, thickness)
  • GrabHandle

    Methods

  • grabhandle:_init (bounds)
  • Label

    Methods

  • label:_init (o)
  • label:setText (text)
  • label:setWrap (wrap)
  • label:setHalign (halign)
  • label:setColor (color)
  • label:setFitToWidth (fitToWidth)
  • ModelView

    Methods

  • modelview:_init (bounds, asset)
  • NavStack

    Methods

  • navstack:_init (bounds)
  • navstack:bottom ()
  • navstack:top ()
  • navstack:push (view)
  • navstack:pop ()
  • Ninepatch

    Methods

  • ninepatch:_init (bounds, inset, An, textureInset)
  • ProxyIconView

    Methods

  • proxyiconview:_init (bounds, name, author, icon)
  • proxyiconview:onIconDropped (at_transform)
  • ResizeHandle

    Methods

  • resizehandle:_init (bounds, translationConstraint, rotationConstraint)
  • Slider

    Methods

  • slider:minValue (newValue)
  • slider:maxValue (newvalue)
  • slider:currentValue (newValue)
  • Speaker
  • StackView

    Methods

  • stackview:_init (bounds, axis)
  • stackview:margin (newValue)
  • stackview:layout ()
  • Surface

    Methods

  • surface:_init (bounds)
  • TabView

    Methods

  • tabview:_init (bounds, tabSpacing, inactiveColor, activeColor)
  • TextField

    Methods

  • textfield:_init (o)
  • textfield:appendText (text)
  • VideoSurface

    Methods

  • videosurface:_init (bounds, resolution)
  • videosurface:setResolution (width, height)
  • videosurface:setVideoFormat (fmt)
  • videosurface:sendFrame (pixels, width, height, format, stride)
  • View

    Methods

  • view:_init (bounds)
  • view:awake ()
  • view:sleep ()
  • view:isAwake ()
  • view:doWhenAwake (todo)
  • view:setGrabbable (grabbable, grabOptions)
  • view:setPointable (pointable)
  • view:transformFromParent ()
  • view:transformFromWorld ()
  • view:convertPointFromView (point, other)
  • view:specification ()
  • view:updateComponents (changes, removals)
  • view:markAsDirty (components)
  • view:setTransform (transform)
  • view:resetPoseFromServer ()
  • view:setBounds (bounds)
  • view:moveBoundsToEdge (horizontal, vertical, depthwise)
  • view:addSubview (subview)
  • view:removeFromSuperview ()
  • view:findView (vid)
  • view:playSound (asset, playOptions)
  • view:askToFocus (avatar)
  • view:defocus ()
  • view:onGrabStarted (hand)
  • view:onGrabEnded (hand)
  • view:onPointerChanged (pointer)
  • view:onPointerEntered (pointer)
  • view:onPointerMoved (pointer)
  • view:onPointerExited (pointer)
  • view:onTouchDown (pointer)
  • view:onTouchUp (pointer)
  • view:onInteraction (inter, body, sender)
  • view:onFileDropped (filename, asset_id)
  • view:addPropertyAnimation (anim)
  • view:setTexture (asset)
  • view:setColor (rgba)
  • view:layout ()
diff --git a/doc/ldoc.css b/doc/ldoc.css new file mode 100644 index 0000000..f945ae7 --- /dev/null +++ b/doc/ldoc.css @@ -0,0 +1,304 @@ +/* BEGIN RESET + +Copyright (c) 2010, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.com/yui/license.html +version: 2.8.2r1 +*/ +html { + color: #000; + background: #FFF; +} +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td { + margin: 0; + padding: 0; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +fieldset,img { + border: 0; +} +address,caption,cite,code,dfn,em,strong,th,var,optgroup { + font-style: inherit; + font-weight: inherit; +} +del,ins { + text-decoration: none; +} +li { + margin-left: 20px; +} +caption,th { + text-align: left; +} +h1,h2,h3,h4,h5,h6 { + font-size: 100%; + font-weight: bold; +} +q:before,q:after { + content: ''; +} +abbr,acronym { + border: 0; + font-variant: normal; +} +sup { + vertical-align: baseline; +} +sub { + vertical-align: baseline; +} +legend { + color: #000; +} +input,button,textarea,select,optgroup,option { + font-family: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; +} +input,button,textarea,select {*font-size:100%; +} +/* END RESET */ + +body { + margin-left: 1em; + margin-right: 1em; + font-family: arial, helvetica, geneva, sans-serif; + background-color: #ffffff; margin: 0px; +} + +code, tt { font-family: monospace; font-size: 1.1em; } +span.parameter { font-family:monospace; } +span.parameter:after { content:":"; } +span.types:before { content:"("; } +span.types:after { content:")"; } +.type { font-weight: bold; font-style:italic } + +body, p, td, th { font-size: .95em; line-height: 1.2em;} + +p, ul { margin: 10px 0 0 0px;} + +strong { font-weight: bold;} + +em { font-style: italic;} + +h1 { + font-size: 1.5em; + margin: 20px 0 20px 0; +} +h2, h3, h4 { margin: 15px 0 10px 0; } +h2 { font-size: 1.25em; } +h3 { font-size: 1.15em; } +h4 { font-size: 1.06em; } + +a:link { font-weight: bold; color: #004080; text-decoration: none; } +a:visited { font-weight: bold; color: #006699; text-decoration: none; } +a:link:hover { text-decoration: underline; } + +hr { + color:#cccccc; + background: #00007f; + height: 1px; +} + +blockquote { margin-left: 3em; } + +ul { list-style-type: disc; } + +p.name { + font-family: "Andale Mono", monospace; + padding-top: 1em; +} + +pre { + background-color: rgb(245, 245, 245); + border: 1px solid #C0C0C0; /* silver */ + padding: 10px; + margin: 10px 0 10px 0; + overflow: auto; + font-family: "Andale Mono", monospace; +} + +pre.example { + font-size: .85em; +} + +table.index { border: 1px #00007f; } +table.index td { text-align: left; vertical-align: top; } + +#container { + margin-left: 1em; + margin-right: 1em; + background-color: #f0f0f0; +} + +#product { + text-align: center; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; +} + +#product big { + font-size: 2em; +} + +#main { + background-color: #f0f0f0; + border-left: 2px solid #cccccc; +} + +#navigation { + float: left; + width: 14em; + vertical-align: top; + background-color: #f0f0f0; + overflow: visible; +} + +#navigation h2 { + background-color:#e7e7e7; + font-size:1.1em; + color:#000000; + text-align: left; + padding:0.2em; + border-top:1px solid #dddddd; + border-bottom:1px solid #dddddd; +} + +#navigation ul +{ + font-size:1em; + list-style-type: none; + margin: 1px 1px 10px 1px; +} + +#navigation li { + text-indent: -1em; + display: block; + margin: 3px 0px 0px 22px; +} + +#navigation li li a { + margin: 0px 3px 0px -1em; +} + +#content { + margin-left: 14em; + padding: 1em; + width: 700px; + border-left: 2px solid #cccccc; + border-right: 2px solid #cccccc; + background-color: #ffffff; +} + +#about { + clear: both; + padding: 5px; + border-top: 2px solid #cccccc; + background-color: #ffffff; +} + +@media print { + body { + font: 12pt "Times New Roman", "TimeNR", Times, serif; + } + a { font-weight: bold; color: #004080; text-decoration: underline; } + + #main { + background-color: #ffffff; + border-left: 0px; + } + + #container { + margin-left: 2%; + margin-right: 2%; + background-color: #ffffff; + } + + #content { + padding: 1em; + background-color: #ffffff; + } + + #navigation { + display: none; + } + pre.example { + font-family: "Andale Mono", monospace; + font-size: 10pt; + page-break-inside: avoid; + } +} + +table.module_list { + border-width: 1px; + border-style: solid; + border-color: #cccccc; + border-collapse: collapse; +} +table.module_list td { + border-width: 1px; + padding: 3px; + border-style: solid; + border-color: #cccccc; +} +table.module_list td.name { background-color: #f0f0f0; min-width: 200px; } +table.module_list td.summary { width: 100%; } + + +table.function_list { + border-width: 1px; + border-style: solid; + border-color: #cccccc; + border-collapse: collapse; +} +table.function_list td { + border-width: 1px; + padding: 3px; + border-style: solid; + border-color: #cccccc; +} +table.function_list td.name { background-color: #f0f0f0; min-width: 200px; } +table.function_list td.summary { width: 100%; } + +ul.nowrap { + overflow:auto; + white-space:nowrap; +} + +dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;} +dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;} +dl.table h3, dl.function h3 {font-size: .95em;} + +/* stop sublists from having initial vertical space */ +ul ul { margin-top: 0px; } +ol ul { margin-top: 0px; } +ol ol { margin-top: 0px; } +ul ol { margin-top: 0px; } + +/* make the target distinct; helps when we're navigating to a function */ +a:target + * { + background-color: #FF9; +} + + +/* styles for prettification of source */ +pre .comment { color: #558817; } +pre .constant { color: #a8660d; } +pre .escape { color: #844631; } +pre .keyword { color: #aa5050; font-weight: bold; } +pre .library { color: #0e7c6b; } +pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; } +pre .string { color: #8080ff; } +pre .number { color: #f8660d; } +pre .function-name { color: #60447f; } +pre .operator { color: #2239a8; font-weight: bold; } +pre .preprocessor, pre .prepro { color: #a33243; } +pre .global { color: #800080; } +pre .user-keyword { color: #800080; } +pre .prompt { color: #558817; } +pre .url { color: #272fc2; text-decoration: underline; } + diff --git a/doc/modules/allonet.include.allonet.assetstore.html b/doc/modules/allonet.include.allonet.assetstore.html new file mode 100644 index 0000000..c21e713 --- /dev/null +++ b/doc/modules/allonet.include.allonet.assetstore.html @@ -0,0 +1 @@ + allonet.include.allonet.assetstore - Alloverse Documentation allonet.include.allonet.assetstore | Alloverse Documentation Link Search Menu Expand Document

allonet.include.allonet.assetstore

Api for asset handling

diff --git a/doc/modules/allonet.include.allonet.client.html b/doc/modules/allonet.include.allonet.client.html new file mode 100644 index 0000000..bd6699a --- /dev/null +++ b/doc/modules/allonet.include.allonet.client.html @@ -0,0 +1 @@ + allonet.include.allonet.client - Alloverse Documentation allonet.include.allonet.client | Alloverse Documentation Link Search Menu Expand Document

allonet.include.allonet.client

Asset became available

diff --git a/doc/modules/allonet.include.allonet.jobs.html b/doc/modules/allonet.include.allonet.jobs.html new file mode 100644 index 0000000..78f1ed4 --- /dev/null +++ b/doc/modules/allonet.include.allonet.jobs.html @@ -0,0 +1 @@ + allonet.include.allonet.jobs - Alloverse Documentation allonet.include.allonet.jobs | Alloverse Documentation Link Search Menu Expand Document

allonet.include.allonet.jobs

A scheduler instance

diff --git a/doc/modules/allonet.include.allonet.state.html b/doc/modules/allonet.include.allonet.state.html new file mode 100644 index 0000000..2e75b2d --- /dev/null +++ b/doc/modules/allonet.include.allonet.state.html @@ -0,0 +1 @@ + allonet.include.allonet.state - Alloverse Documentation allonet.include.allonet.state | Alloverse Documentation Link Search Menu Expand Document

allonet.include.allonet.state

List of entities that have been created since last callback

diff --git a/doc/modules/allonet.lib.tinyjpeg.tiny_jpeg.html b/doc/modules/allonet.lib.tinyjpeg.tiny_jpeg.html new file mode 100644 index 0000000..fb2e670 --- /dev/null +++ b/doc/modules/allonet.lib.tinyjpeg.tiny_jpeg.html @@ -0,0 +1 @@ + allonet.lib.tinyjpeg.tiny_jpeg - Alloverse Documentation allonet.lib.tinyjpeg.tiny_jpeg | Alloverse Documentation Link Search Menu Expand Document

allonet.lib.tinyjpeg.tiny_jpeg

tiny_jpeg.h

Tiny JPEG Encoder

  • Sergio Gonzalez

This is a readable and simple single-header JPEG encoder.

Features

  • Implements Baseline DCT JPEG compression.
  • No dynamic allocations.

This library is coded in the spirit of the stb libraries and mostly follows the stb guidelines.

It is written in C99. And depends on the C standard library. Works with C++11

==== Thanks ====

AssociationSirius (Bug reports) Bernard van Gastel (Thread-safe defaults, BSD compilation)

==== License ====

This software is in the public domain. Where that dedication is not recognized, you are granted a perpetual, irrevocable license to copy and modify this file as you see fit.

diff --git a/doc/modules/allonet.src.alloclient_simple_api.html b/doc/modules/allonet.src.alloclient_simple_api.html new file mode 100644 index 0000000..eedfe77 --- /dev/null +++ b/doc/modules/allonet.src.alloclient_simple_api.html @@ -0,0 +1 @@ + allonet.src.alloclient_simple_api - Alloverse Documentation allonet.src.alloclient_simple_api | Alloverse Documentation Link Search Menu Expand Document

allonet.src.alloclient_simple_api

Issues a command.

Returns a json string that is valid until the next call to this method. If the issued command has a return value then you find it under the “return” key in the json. If any events has occurred since the last call to this method then the “events” key contains a chronoligical list of those events. sommand: a json object telling allonet what to do

Poll the allonet connection for data and events { “op”: “poll” } Connect to a place { “op”: “connect”, “url”: “alloplace://hello.place.alloverse.com”, “identity”: {“display_name”: “My App Name”}, “avatar_spec”: {} – TODO: Where is this format spec? } Interact with objects { “op”: “interaction”, “interaction”: {} – TODO: Where is this format spec? } Move about in the world { “op”: “intent”, “intent”: {} – TODO: Where is this format spec? }

diff --git a/doc/modules/allonet.src.asset.html b/doc/modules/allonet.src.asset.html new file mode 100644 index 0000000..d340c10 --- /dev/null +++ b/doc/modules/allonet.src.asset.html @@ -0,0 +1 @@ + allonet.src.asset - Alloverse Documentation allonet.src.asset | Alloverse Documentation Link Search Menu Expand Document

allonet.src.asset

The protocol message header of asset protocol

diff --git a/doc/modules/allonet.src.assetstore.html b/doc/modules/allonet.src.assetstore.html new file mode 100644 index 0000000..93ce3a8 --- /dev/null +++ b/doc/modules/allonet.src.assetstore.html @@ -0,0 +1 @@ + allonet.src.assetstore - Alloverse Documentation allonet.src.assetstore | Alloverse Documentation Link Search Menu Expand Document

allonet.src.assetstore

Returns missing ranges

diff --git a/doc/modules/allonet.src.client._client.html b/doc/modules/allonet.src.client._client.html new file mode 100644 index 0000000..3bb6eef --- /dev/null +++ b/doc/modules/allonet.src.client._client.html @@ -0,0 +1 @@ + allonet.src.client._client - Alloverse Documentation allonet.src.client._client | Alloverse Documentation Link Search Menu Expand Document

allonet.src.client._client

Creates a track for track_id unless one is not already created

diff --git a/doc/modules/allonet.src.clientproxy.html b/doc/modules/allonet.src.clientproxy.html new file mode 100644 index 0000000..0a9141f --- /dev/null +++ b/doc/modules/allonet.src.clientproxy.html @@ -0,0 +1 @@ + allonet.src.clientproxy - Alloverse Documentation allonet.src.clientproxy | Alloverse Documentation Link Search Menu Expand Document

allonet.src.clientproxy

This file proxies the network client to its own thread.

Terminology:

  • Proxy: The object that runs on the calling thread, probably app’s main thread.
  • Bridge: The object that runs on the internal network thread.
  • ProxyClient: Externally responds to the client.h API, but just sends messages over to the bridge thread.
  • BridgeClient: Uses the client.c implementation to actually perform the requested actions.
diff --git a/doc/modules/allonet.src.delta.html b/doc/modules/allonet.src.delta.html new file mode 100644 index 0000000..90f6745 --- /dev/null +++ b/doc/modules/allonet.src.delta.html @@ -0,0 +1 @@ + allonet.src.delta - Alloverse Documentation allonet.src.delta | Alloverse Documentation Link Search Menu Expand Document

allonet.src.delta

Add a new state to the history. You relinquish ownership and may only use it until the next call of allo_delta_* (and you sould definitely not modify it).

diff --git a/doc/modules/allonet.src.media.media.html b/doc/modules/allonet.src.media.media.html new file mode 100644 index 0000000..3e2682d --- /dev/null +++ b/doc/modules/allonet.src.media.media.html @@ -0,0 +1 @@ + allonet.src.media.media - Alloverse Documentation allonet.src.media.media | Alloverse Documentation Link Search Menu Expand Document

allonet.src.media.media

each subsystem is tested to see if it wants to manage this track. return true if successful.

diff --git a/doc/modules/allonet.src.media.video.libav.html b/doc/modules/allonet.src.media.video.libav.html new file mode 100644 index 0000000..d28d7ee --- /dev/null +++ b/doc/modules/allonet.src.media.video.libav.html @@ -0,0 +1 @@ + allonet.src.media.video.libav - Alloverse Documentation allonet.src.media.video.libav | Alloverse Documentation Link Search Menu Expand Document

allonet.src.media.video.libav

encoder may hold on to frame data pointer so no cheating

diff --git a/doc/modules/allonet.src.server.html b/doc/modules/allonet.src.server.html new file mode 100644 index 0000000..71bbba4 --- /dev/null +++ b/doc/modules/allonet.src.server.html @@ -0,0 +1 @@ + allonet.src.server - Alloverse Documentation allonet.src.server | Alloverse Documentation Link Search Menu Expand Document

allonet.src.server

map from asset_id to list of client peers

diff --git a/doc/modules/allonet.src.standalone_server.html b/doc/modules/allonet.src.standalone_server.html new file mode 100644 index 0000000..b833a2a --- /dev/null +++ b/doc/modules/allonet.src.standalone_server.html @@ -0,0 +1 @@ + allonet.src.standalone_server - Alloverse Documentation allonet.src.standalone_server | Alloverse Documentation Link Search Menu Expand Document

allonet.src.standalone_server

Remove the client from any track recipient lists

diff --git a/doc/modules/allonet.test.assetstore_test.html b/doc/modules/allonet.test.assetstore_test.html new file mode 100644 index 0000000..2e4d08c --- /dev/null +++ b/doc/modules/allonet.test.assetstore_test.html @@ -0,0 +1 @@ + allonet.test.assetstore_test - Alloverse Documentation allonet.test.assetstore_test | Alloverse Documentation Link Search Menu Expand Document

allonet.test.assetstore_test

Provide assets a way to send data in the network

diff --git a/doc/modules/alloui.lua.alloui.json.html b/doc/modules/alloui.lua.alloui.json.html new file mode 100644 index 0000000..fd5a10c --- /dev/null +++ b/doc/modules/alloui.lua.alloui.json.html @@ -0,0 +1 @@ + alloui.lua.alloui.json - Alloverse Documentation alloui.lua.alloui.json | Alloverse Documentation Link Search Menu Expand Document

alloui.lua.alloui.json

Encode

diff --git a/doc/modules/alloui.lua.alloui.standard_animations.html b/doc/modules/alloui.lua.alloui.standard_animations.html new file mode 100644 index 0000000..01c222e --- /dev/null +++ b/doc/modules/alloui.lua.alloui.standard_animations.html @@ -0,0 +1 @@ + alloui.lua.alloui.standard_animations - Alloverse Documentation alloui.lua.alloui.standard_animations | Alloverse Documentation Link Search Menu Expand Document

alloui.lua.alloui.standard_animations

A suite of standard animations to use in your app.

diff --git a/examples.html b/examples.html new file mode 100644 index 0000000..eb85ef4 --- /dev/null +++ b/examples.html @@ -0,0 +1 @@ + Examples - Alloverse Documentation Examples | Alloverse Documentation Link Search Menu Expand Document

Examples

Incomplete


Table of contents

diff --git a/favicon.bak b/favicon.bak new file mode 100644 index 0000000..a4fb081 Binary files /dev/null and b/favicon.bak differ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..a14e7a7 Binary files /dev/null and b/favicon.ico differ diff --git a/hig.html b/hig.html new file mode 100644 index 0000000..fe27957 --- /dev/null +++ b/hig.html @@ -0,0 +1 @@ + 3D Interface Design Guidelines - Alloverse Documentation 3D Interface Design Guidelines | Alloverse Documentation Link Search Menu Expand Document

3D Interface Design Guidelines

XR is currently the wild west when it comes to interaction patterns. We’re all learning what UX works in three dimensions, with different input devices and layouts.

In the Alloverse, a multitude of apps are to coexist in shared spaces. Thus, interacting with one app should be similar to how you interact with another app, instead of each app designing their own interaction patterns; otherwise it will be a too fragmented and confusing experience that decreases productivity and enjoyment rather than increasing it.

This document thus collects interaction guidelines, so that apps can behave in a straightforward, consistent and fun manner. It’s very much a work in progress. If you are an interaction designer, we would love your help in designing this document.

TODO: each section should have instructionals for dual-stick, single-stick and hands.

Moving

From the rule under “interactive”, VR movement in the Alloverse doesn’t use teleportation. Instead, movement happens with a static camera and an out-of-body experience. Hold down the A button, and use the dual sticks to move (left stick) and rotate (right stick). As you hold A, the camera stays in place while your avatar moves out in front of the camera, When you release A, the camera snaps into the head location of the avatar.

Expressiveness

Since the sticks are not dedicated to movement by default, they can be used for character expressiveness and interaction.

Grabbing

Direct manipulation is the most intuitive way to interact with a computer.

You should:

  • touch,
  • grab, and
  • and drag things.

You should avoid:

  • modal interactions, where you have to enter and exit modes to perform common actions.
  • indirection, where e g pushing a button to perform an action on an object away from the button, where you could have grabbed or pushed the original thing instead

Pointing

Point gesture

Pointing at an entity reveals its widgets, which allow you to:

  • See who it is owned by
  • Ask its parent app to close

Poking

Entities are informed when they are pointed at, and can react to it. The user can also push the trigger button to “poke” the entity at the pointed location. This is how you would push buttons,

Interactive

In real life, any change between two states has some sort of transition. Nothing pops into existence in front of us unannounced; nothing disappears suddenly into nothingness. Your interface should be the same: every change should have a clear transition from its original state. This allows the user’s mind to understand what is happening, and build a mental model of the interaction.

Don’t teleport; move. Don’t swap meshes or textures; animate and transition.

Interface elements

Lists and scrolling

Grabbable widget for scrolling

Buttons

Responds to poke

Windows

diff --git a/hosting.html b/hosting.html new file mode 100644 index 0000000..566ec06 --- /dev/null +++ b/hosting.html @@ -0,0 +1 @@ + Hosting an Alloverse app - Alloverse Documentation Hosting an Alloverse app | Alloverse Documentation Link Search Menu Expand Document

Hosting an Alloverse app

So! You’ve built an Alloverse app, and now you want to host it on the Internet so that other people can use it. This is very similar to hosting a web app: you put some code on a server on the Internet, and then other people can access that server, and run the code on that server to access your web app in their browser.

The one thing that is a bit weird to get your head around is that an alloapp isn’t accessed directly by the end user’s browser! Instead, the APP talks to the PLACE, and then the PLACE updates its world representation and sends this new world to the USER’s visor.

alloui

When you’re running an alloapp on your local development machine, you have used ./allo/assist run alloplace://sandbox.places.alloverse.com or something similar to connect your app directly to a specific place. This is good for debugging, or for demoing something to someone once. However, it won’t let other users in other Places launch your app, and also your app will stop running in the Place e g when your laptop goes to sleep.

In production, you can run ./allo/assist serve on a dedicated server to start a http gateway. When an alloplace accesses this gateway, it will start a new instance of your alloapp, and connect it to the alloplace that asked for it. This is how you put your app properly on the internet, and let other people launch it to their Alloverse Places.

What’s actually going on, underneath?

  1. A user clicks an alloapp: URL on their computer or headset
  2. If Alloverse Visor is already running on that device, and is connected to a place:
  3. The Visor calls the interaction launch_app on the connected Place, asking it to launch the app on behalf of the user.
  4. The Place extracts the http(s) URL portion, and calls it with the URL to get back to the current place + identity of the requesting user (see url definition for full description).
  5. The gateway launches a new instance of the app, and connects it to the calling place.

Step-by-step best practice hosting

In the future, there will be a Dockerfile in the standard alloapp template. For now, you can do something like this:

  1. Put your code on a server somewhere. This server should have a nice DNS name and proper SSL certificates.
  2. Using systemd or similar, configure the server to automatically run ./allo/assist serve in the root of your project on boot
  3. Setup an nginx SSL termination proxy in front of it, with a proxy_pass to http://localhost:8000 (which is where the gateway is running). (this is technically optional, but recommended)
  4. If you did step 3, make sure to add a firewall disallowing traffic to port 8000.

You can now figure out the URL of your app. If your server is example.com, your gateway is now available over HTTPS at https://example.com; or if you didn’t configure nginx or ssl, at http://example.com:8000. Take this URL, and prepend alloapp:, so you get something like: alloapp:https://example.com/. That’s your app’s URL!

In the hopefully not too distant future, you’ll be able to log onto my.alloverse.com to register your app metadata and URL. This will then publish your app to the Marketplace inside Alloverse, so any user can access it.

diff --git a/index.html b/index.html new file mode 100644 index 0000000..fdd30e3 --- /dev/null +++ b/index.html @@ -0,0 +1,127 @@ + Get Started (Lua) - Alloverse Documentation Get Started (Lua) | Alloverse Documentation Link Search Menu Expand Document

Get Started (Lua)

Table of contents
  1. What is Alloverse?
  2. Developing an Alloverse App
  3. Prerequisites
  4. Running the Alloverse Visor
  5. Creating your project
  6. Trying your app out
  7. Anatomy of Hello World in the Alloverse
  8. Building your app
  9. Deploying your app
  10. Celebration
  11. Advanced Concepts
    1. Running your own Place server
    2. Building something more advanced

What is Alloverse?

Alloverse is an open platform for collaborative workspaces in 3D. It’s Gibson-style Cyberspace - but for day-to-day work and play with friends and colleagues. It’s a VR and AR platform for creating spaces, and for running real applications within those spaces, together with other people. In nerd terms, it’s a VR/AR/3D “window manager” and collaborative workspace.

For more information, please see the Alloverse website.

  • Your “Place” is where you decorate, run apps, invite people, and hang out. A “place” is a server. It’s like a collaborative X11 server: It runs a world simulation server, a voip gateway, and all the backing data for 3d UIs for the running apps. (You can check out the reference implementation on Github).
  • A “visor” is the GUI application you use to visit places and interact with your apps. It’s sort of the VR equivalent of a web browser. It’s what you download from our website to get started. (its reference implementation is of course also on github.)
  • An “app” or “alloapp” is a process running on a server, which connects to a Place to show its user interface to people interacting with it. It’s sort of like a web page or X11 process. We’ll be building such an alloapp today.
  • The network and “UI protocol” is taken care of by the allonet library, written in C and used by all the above projects.

Developing an Alloverse App

An Alloverse app is a server-side app that you run on your own server, similar to how you would host a web app on your own server. The difference is, when a user goes to your app on the web, it loads into that user’s web browser on their computer; but when a user goes to your alloapp in an Alloverse Place, the app loads into the Place for all users in that Place to use, and your code gets collaboration and VR super-powers for free.

This tutorial will take you through creating an Alloverse app using the Lua programming language, since that is the language we’ve developed the most support for so far.

You can build apps on Mac, Linux or Windows. On Windows, you’ll need a Unix shell, preferrably WSL2 (but mingw/msys2 could also work if you’re lucky): follow this WSL installation guide and install Ubuntu.

In contrast to a web framework like Rails or Django, Alloverse doesn’t install any software onto your system. Instead, a project is completely self-contained within its project folder, and contains everything it needs to run.

Note that building alloapps is done completely in text (through VSCode and Terminal), and there are currently no graphical editors (like the scene editor you might be used to from Unity or Unreal).

Prerequisites

To write your own Alloverse app, you’ll need the following:

  • The Alloverse Visor is the official application that serves as the window through which you can view and interact with the Alloverse. At a later stage you should try installing it on a VR headset, but for the purposes of this guide we recommend and assume you’ll be using the desktop version.
  • A terminal app (preinstalled on Mac and Linux, separate install on Windows).
  • A plain text editor for code (We recommend Visual Studio Code).
  • Git (Comes with Xcode on Mac. If you just type git into a terminal, it’ll ask to install it for you even without Xcode).
  • Git Large File Storage
  • Only on Windows: WSL2 (or if you’re up for some manual work, Cygwin or MingW)

Running the Alloverse Visor

Let’s begin by opening the window to Alloverse by getting the Visor running and connected to a Place. Open the app you just downloaded, press the “Connect” button and enter “Sandbox” in the input field. Alternatively, if you’re on a Mac, clicking this link will automatically do the above for you.

That’s it - you’re now inside the Alloverse Sandbox Place, providing you a way to view and interact with the app you’ll be developing in the next step.

Creating your project

Now, let’s use the terminal to create a project folder, and ask AlloAssist to initialize a base project with all dependencies into it. From your terminal:

$ mkdir allo-todo
+$ cd allo-todo
+$ git init
+$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/alloverse/alloapp-assist/master/setup.bash)"

If all went well so far, you should now be able to run ./allo/assist help to review all available commands. This might also be a good time to run git commit -a, so the next commit only contains your own changes.

Anyway, the curl’d script will have created this project structure for you:

  • lua contains the Lua source code for your app
    • lua/main.lua contains your app! It barely does anything yet. But you can add more code to this file to keep going, and add more files into lua to modularize your code.
  • images contains images you want to use as textures on buttons, etc.
  • allo contains the Alloverse app framework. You should not edit anything in here, as an upgrade of the framework will overwrite your changes.
    • allo/assist is a script that helps you with tasks such as starting a server, installing dependencies, etc…
    • allo/libs contains compiled C dependencies as dynamic libraries and executables. These are .gitignored to save space. If you check out your code on another computer, you can ./allo/assist fetch to install them again, so you don’t need to (and shouldn’t) commit them.
    • allo/boot.lua sets up the runtime environment for your app. This code is generated, so it’s not recommended to modify this file.

Trying your app out

You should now be able to make your app appear in an Alloplace! In the terminal, run the following command:

$ ./allo/assist run alloplace://sandbox.places.alloverse.com

If everything checks out, go to the Alloverse Visor, where you should be able to see and interact with the app and its button. (If you’ve moved around in the place, you may need to look around to see it)

On the left, the UI of our app shown as a white rectangle with an orange button. On the right, a terminal showing the assist run command that instantiates the app; and the word Hello printed thrice. Our app running in Nevyn’s place. I’ve clicked our simple app’s orange button button three times, and the laws of causality held up, printing “Hello” thrice to our terminal.

At this point, you could go off, do your own thing, read the documentation as you go. Or you could keep reading, and be guided through the development of a simple but functional todo list app, which will help establish the fundamentals and make it much easier for you to build real, complex apps.

If your app ever disappears, take a look around in the Alloverse to make sure you’re not just looking in the wrong direction. If you still can’t see it, it might have crashed. Check out the terminal from which you ran it - there should be error messages to help you figure out what went wrong.

This is also a good point at which to remind you: if you get stuck, or have questions or feedback, please hop on Discord and give it to us straight.

Anatomy of Hello World in the Alloverse

Let’s open up lua/main.lua and have a look at the code, to understand what’s going on. If you’re not much for theory, you may skip this section and get straight to making an app.

local client = Client(
+  arg[2],
+  "allo-todo2"
+)
+local app = App(client)

Above, we’re using a Client to connect this app to a Place. arg[2] is the URL of the place to connect to, which Assist sets up for you in boot.lua. App then manages the Client connection for you, and manages the lifetime of your app.

assets = {
+  quit = ui.Asset.File("images/quit.png"),
+}
+app.assetManager:add(assets)

Assets are files (images, glb models, videos, sounds, etc…) that you want to use in your app. They need to be published so that users’ visors can download them before you can use them. We make assets global so you can use it throughout your app.

local mainView = ui.Surface(ui.Bounds(0, 1.2, -2, 1, 0.5, 0.01))
+mainView.grabbable = true

Your application is represented by a hierarchy of views. If you’re a web developer, you can think of it as nested elements in a DOM. If you come from Unity, it’s similar to the GameObject hierarchy, with transforms being relative to parent GameObjects. If you’re an oldschool Macintosh Toolbox developer, I’m sorry.

app.mainView is the main UI for your app. You should set it up with your main user interface before connecting to the Place.

Bounds is the position and size of your object:

  • The first three numbers defines the x, y and z positions (see: coordinate space reference). In this case, 0, 1.2, -2 means the mainView is centered horizontally 1.2 meters up from the floor and 2 meters into the Place, depth-wise.
  • The second triplet of numbers refers to the object’s width, depth and height. In this case, 1, 0.5, 0.01 defines the object as being 1 meter wide, half a meter tall, and one centimeter deep.

We also make the main view grabbable, so the user can move it around the Place. Alternatively, you can add a GrabHandle, which acts like the title bar of a desktop UI’s window.

local button = ui.Button(ui.Bounds(0.0, 0.05, 0.05, 0.2, 0.2, 0.1))
+mainView:addSubview(button)
+button.onActivated = function()
+  print("Hello!")
+end

The standard template has created a standard Button component for you, at 2 decimeters wide and tall. Its position of 5 centimeter down and forward is relative to its parent - in this case the mainView.

The onActivated callback lets us run code when the button is pressed. This’ll print “hello” to your local terminal when you run the app on your machine (even if you’re running the visor somewhere else on the Internet)!

app.mainView = mainView
+app:connect()
+app:run()

Finally, the template has configured the app’s mainView to use this dummy UI. Then, it connects to the Place we’ve been asked to run in, and finally hands over the runtime of the app to the UI framework so it keeps running until the user quits it.

Now that we got the gist of how to compose an app like this, we can replace it with something useful.

Building your app

Let’s make a todo list app! I’m a master artist, so I’ve painted this piece of art to represent our goal:

Todo list app sketch

So we’ve got:

  • A list of items to check off,
  • A button to add an item
  • A dialog that pops up where you can name your item.

Sounds great. Let’s get started.

Note: This is where we start coding for real.

Select everything from (and including) local mainView = ... down to app.mainView = mainView and delete it, and we’ll write some new, fun code.

Instead of having a bunch of loose views strewn around the code, I enjoy creating a class for each main container of UI. Some equivalent of a “window”, or “view controller”, or “component” if you will. Let’s create a TodosView, which will display the list of items, and allow you to quit the app, and add new items. Copy the code block below, and paste it between app.assetManager:add(assets) and app:connect().

class.TodosView(ui.Surface)
+function TodosView:_init(bounds)
+  self:super(bounds)
+  self.grabbable = true
+
+  self.quitButton = self:addSubview(ui.Button(ui.Bounds{
+    size=ui.Size(0.12,0.12,0.05)
+  }))
+  self.quitButton:setDefaultTexture(assets.quit)
+  self.quitButton.onActivated = function()
+      app:quit()
+  end
+
+  self.addButton = self:addSubview(ui.Button(ui.Bounds{
+    size=ui.Size(bounds.size.width*0.8,0.1,0.05)
+  }))
+  self.addButton.label:setText("Add todo")
+  self.addButton.onActivated = function(hand)
+    self:showNewTodoPopup(hand)
+  end
+
+  self.todoViews = {}
+
+  self:layout()
+end

We’re using Penlight’s class macro to create classes. We inherit ui.Surface, which is like a ui.View except it also draws a background, so our app gets a backdrop to rest our controls onto.

We create a constructor, where we set up initial state and controls. Here we want a quit Button, and an add Button. We immediately add them as subviews to the TodosView, so they show up in the view hierarchy. For the first button, we use one of our image assets as a texture, and for the other, we set the text on the label instead.

AlloUI doesn’t have a comprehensive layout system itself, so we’ll call our own layout at opportune moments. Let’s stub it out so we have something to start with. We’ll also create an instance of it, and use it as our app’s main view. Paste the following into your code, just below the _init function:

function TodosView:layout()
+  self.quitButton.bounds:moveToOrigin():move( 0.52,0.25,0.025)
+  self.addButton.bounds:moveToOrigin():move( 0, -0.15,0.025)
+end
+
+app.mainView = TodosView(ui.Bounds(0, 1.2, -2, 1, 0.5, 0.01))

Let’s restart your app to see your new code changes. Open the terminal where your app is running, and quit it with ctrl-C. Then, fire off a quick ./allo/assist run alloplace://sandbox.places.alloverse.com in your terminal, and you’ll be presented with this beauty in Alloverse:

A white surface with a close button in the top right, and an 'add todo' button along the bottom

We’ve created a VR interface, how cool is that!? Just keep in mind that while the “Add todo” button is is visible, clicking it will cause the app to crash. So, let’s attach some functionality to it: let’s make it create that popup for inputting new todo items. Paste the following code block right underneath the layout() function:

function TodosView:showNewTodoPopup(hand)
+  local popup = ui.Surface(ui.Bounds{size=ui.Size(1,0.5,0.05)})
+
+  local input = popup:addSubview(ui.TextField{
+    bounds= ui.Bounds{size=ui.Size(0.8,0.1,0.05)}:move(0, 0.15, 0.025)
+  })
+  local done = function()
+    self:addTodo(input.label.text)
+    popup:removeFromSuperview()
+  end
+  input.onReturn = function()
+    done()
+    return false
+  end
+  input:askToFocus(hand)
+
+  local addButton = popup:addSubview(ui.Button(ui.Bounds{size=ui.Size(popup.bounds.size.width*0.8,0.1,0.05)}))
+  addButton.bounds:move(0, 0, 0.025)
+  addButton.label:setText("Add")
+  addButton.onActivated = done
+
+  local cancelButton = popup:addSubview(ui.Button(ui.Bounds{size=ui.Size(popup.bounds.size.width*0.8,0.1,0.05)}))
+  cancelButton:setColor({0.4, 0.4, 0.3, 1.0})
+  cancelButton.bounds:move(0, -0.15, 0.025)
+  cancelButton.label:setText("Cancel")
+  cancelButton.onActivated = function()
+    popup:removeFromSuperview()
+  end
+
+  app:openPopupNearHand(popup, hand)
+end

Phew, that’s a handful. Let’s step through it.

  • popup is our new popup window. It’s another surface, one meter by a half.
  • To it, we add a TextField! This is your standard issue text input view. Tapping it will give it focus, allowing you to type something in it with your keyboard. (If you would do this while using the Alloverse headset app, it will display a virtual keyboard for you to use.
  • We want to close the popup both when the return key is pressed, and when you manually tap the “Add” button, so let’s create a callback we can use for both called done.
  • onReturn is used to react to return/enter key, and we can also use it to make sure a newline character isn’t added to the text.
  • showNewTodoPopup has been called with a hand. That’s the hand of the user that tapped the “Add todo button”. It belongs to an avatar, so we can actually ask the avatar if it would pretty please focus this text field, so the user can begin typing in it directly? If you’d be so kind.
  • The addButton uses the same done callback as onReturn
  • cancelButton just closes the popup, no questions asked.
  • Finally, app:openPopupNearHand will display our new fancy popup 60 centimeters away from the user’s hand, which is a convenient distance at which to do your job.

Warning: incoming rant

The cool thing about this popup is that if you have multiple people in the room, they can all get their own input popup, so they can add their own items without interfering with each other. This is an important and unusual aspect of UI design and development: all your UI is real time collaborative, so you have to consider how your application behaves when multiple people use it at the same time.

For example, if you had added the input field directly to the main view, only one user would’ve been able to add items at a time, and they’d likely have interfered with each other’s work. By using a personal popup, users can work naturally collaboratively and in tandem.

Relax: rant over.

Here’s what this new fancy popup should look like once you tap the “Add todo” button:

A white surface with a text field, an 'add' button, and a 'cancel' button.

Before we continue, we’ll need another asset. Download checkmark.png and put it in images/. Then we’ll have to refer to it from code. At the top of your file, you’re already loading the quit texture asset. Modify that block to also load and publish the checkmark texture, by making the code block look like this:

assets = {
+  quit = ui.Asset.File("images/quit.png"),
+  checkmark = ui.Asset.File("images/checkmark.png"),
+}

Cool. Cool cool cool. Let’s make it actually possible to add todo items, yeah? Add these two functions below your existing ones:

function TodosView:addTodo(text)
+  local todoView = ui.View(ui.Bounds{size=ui.Size(self.bounds.size.width*0.8,0.1,0.05)})
+  
+  local checkButton = todoView:addSubview(ui.Button(ui.Bounds{size=ui.Size(0.1, 0.1, 0.05)}))
+  checkButton.bounds:move(-self.bounds.size.width/2 + checkButton.bounds.size.width, 0, 0)
+  checkButton:setDefaultTexture(assets.checkmark)
+  checkButton.onActivated = function()
+    self:removeTodo(todoView)
+  end
+
+  local label = todoView:addSubview(ui.Label{
+    bounds= todoView.bounds:copy():inset(0.1, 0.05, 0):move(0.05, 0,0),
+    color= {0,0,0, 1},
+    halign= "left",
+    text= text
+  })
+
+  table.insert(self.todoViews, todoView)
+  self:layout()
+  self:addSubview(todoView)
+end
+
+function TodosView:removeTodo(todoView)
+  local index = tablex.find(self.todoViews, todoView)
+  table.remove(self.todoViews, index)
+  todoView:removeFromSuperview()
+  self:layout()
+end

This should start to look familiar.

  • todoView is the parent view of all the controls related to the todo list item. We store them in self.todoViews so we can layout them properly later.
  • checkButton is used to check off a completed item. We place it along the left edge, tell it to use our new fancy checkmark texture, and configure it to call an as-of-yet nonexistent removeTodo method.
  • label is the text label describing our item. Text is black (that’s a list of Red, Green, Blue and Alpha, with components from 0.0 to 1.0), horizontally aligned to the left, with the text from the user.
  • We call layout so our new item is positioned correctly
  • And then we add it as a subview, yay!

removeTodo just finds the given item in the list, and removes it from both the list and the UI, running a relayouting pass to adjust the other items’ positions.

That’s awesome! We can now add and remove todo list items! Just one bummer: they all end up stacked on top of each other. We’ll need to lay them out before this is usable. Let’s replace our dummy layout with something better. Remove the existing contents of your layout function, and type in this:

function TodosView:layout()
+  local height = #self.todoViews * 0.13 + 0.25
+
+  local pen = ui.Bounds{
+    size=self.addButton.bounds.size:copy(),
+    pose=ui.Pose(0, -height/2, self.addButton.bounds.size.depth/2)
+  }
+  pen:move(0, 0.07, 0)
+  self.addButton:setBounds(pen:copy())
+  pen:move(0, 0.15, 0)
+  for i, v in ipairs(self.todoViews) do
+    v:setBounds(pen:copy())
+    pen:move(0, 0.13, 0)
+  end
+
+  self.quitButton.bounds:moveToOrigin():move( 0.52, height/2, 0.025)
+  self.quitButton:setBounds()
+
+  self.bounds.size.height = height
+  self:setBounds()
+end

Here’s a pattern I’ve brought with me all the way back from building black-and-white Mac apps in the 80s: using a pen variable which represents a rectangle (or rather, a 3D box!) where we want to “stamp out” our UI, moving the pen as we walk through our items.

  • We want to adjust the height of our UI to exactly fit our items. Each item is 13 cm tall, and then there’s 25 cm of padding for the “Add todos” button.
  • The add button’s size is a perfect template for our pen. Let’s start the pen at the bottom of the window and lay out controls bottom-to-top, and also move it out from the surface so that our elements sit ON TOP of the surface, instead of embedded in it.
  • Let’s add 7 cm of initial padding
  • There. Stamp the pen’s current state into the add button’s bounds.
  • Add another 15 cm of padding.
  • Stamp the pen onto each todo item view, adding 13 cm of padding for each item.
  • Figure out the perfect new location for the quit button, and…
  • Set the height of the whole app to the one we calculated at the start, and update the bounds so it’s reflected on the users’ headsets.

You know what? I think this is pretty stellar. This’ll do nicely. If you dotted every i, your app should look something like this:

Deploying your app

So, you built your fancy VR app. Now you want to show it off, and deploy it so all the Alloverse users in the world can run it in their places, right?

Well, you’re in luck! Go ahead and learn about hosting an Alloverse app!

Celebration

If you made it this far, go eat a cinnamon roll, you deserve it. It’s on me. Really, just ping me on Discord and it’s yours. We’d at least love to hear from you, and see your creations.

Once you make your own apps, even if you’re not down with cinnamon rolls, do let us know, so we can feature your app in our app browser, blog and tweet about it, etc etc.

Advanced Concepts

Running your own Place server

If you’re feeling ambitious, you can boot a Place of your own using the docker run -e ALLOPLACE_NAME="my place" -p 21337:21337/udp -it alloverse/alloplace2 command. In the Alloverse connect input, enter the name of the place you just created.

Building something more advanced

diff --git a/jekyll/update/2021/02/17/welcome-to-jekyll.html b/jekyll/update/2021/02/17/welcome-to-jekyll.html new file mode 100644 index 0000000..eac0502 --- /dev/null +++ b/jekyll/update/2021/02/17/welcome-to-jekyll.html @@ -0,0 +1,5 @@ + Welcome to Jekyll! - Alloverse Documentation Welcome to Jekyll! | Alloverse Documentation Link Search Menu Expand Document

You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated.

Jekyll requires blog post files to be named according to the following format:

YEAR-MONTH-DAY-title.MARKUP

Where YEAR is a four-digit number, MONTH and DAY are both two-digit numbers, and MARKUP is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.

Jekyll also offers powerful support for code snippets:

def print_hi(name)
+  puts "Hi, #{name}"
+end
+print_hi('Tom')
+#=> prints 'Hi, Tom' to STDOUT.

Check out the Jekyll docs for more info on how to get the most out of Jekyll. File all bugs/feature requests at Jekyll’s GitHub repo. If you have questions, you can ask them on Jekyll Talk.

diff --git a/license/alloverse-license.html b/license/alloverse-license.html new file mode 100644 index 0000000..6efba89 --- /dev/null +++ b/license/alloverse-license.html @@ -0,0 +1 @@ + Alloverse License - Alloverse Documentation Alloverse License | Alloverse Documentation Link Search Menu Expand Document

Alloverse License

BSD 2-Clause License

Copyright (c) 2018, Nevyn Bengtsson All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

diff --git a/licenses.html b/licenses.html new file mode 100644 index 0000000..7494373 --- /dev/null +++ b/licenses.html @@ -0,0 +1 @@ + Licenses - Alloverse Documentation Licenses | Alloverse Documentation Link Search Menu Expand Document

Licenses


Table of contents

diff --git a/licenses/licenses.html b/licenses/licenses.html new file mode 100644 index 0000000..212ef47 --- /dev/null +++ b/licenses/licenses.html @@ -0,0 +1,104 @@ + Licenses used by Alloverse - Alloverse Documentation Licenses used by Alloverse | Alloverse Documentation Link Search Menu Expand Document

Licenses used by Alloverse

Alloverse is open source. You can read about Alloverse’s license in its LICENSE file.

In addition, Alloverse in turn uses a number of open source projects to work. The licenses of these projects are listed below.

  1. Licenses used by Alloverse
    1. cJSON (used by allonet and more)
    2. CPML (used by alloui)
      1. The MIT License (MIT)
      2. The BSD License (BSD-2-Clause)
    3. enet (used by allonet)
    4. elixir-cmake (used by alloplace)
    5. elixir-uuid (used by alloplace)
    6. graphmath (used by alloplace)
    7. jason (used by alloplace)
    8. lovr (used by allovisor)
    9. lua (used by many)
    10. Oculus SDK (used by lovr-oculus-mobile-alloverse)
    11. opus (used by allonet)
    12. penlight (used by many)
    13. phoenix (used by web)
    14. poison (used by alloplace)
    15. Unity unit testing (used by allonet)
    16. FFMPEG/libavcodec (used by allonet)

cJSON (used by allonet and more)

Copyright (c) 2009-2017 Dave Gamble and cJSON contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

CPML (used by alloui)

CPML is Copyright (c) 2016 Colby Klein shakesoda@gmail.com.

CPML is Copyright (c) 2016 Landon Manning lmanning17@gmail.com.

Code in vec3.lua is derived from hump.vector. (c) 2010-2013 Matthias Richter. MIT.

Portions of mat4.lua are from LuaMatrix, (c) 2010 Michael Lutz. MIT.

Code in simplex.lua is (c) 2011 Stefan Gustavson. MIT.

Code in bound2.lua and bound3.lua are (c) 2018 Andi McClure. MIT.

Code in quat.lua is from Andrew Stacey and covered under the CC0 license.

Code in octree.lua is derived from UnityOctree. (c) 2014 Nition. BSD-2-Clause.

The MIT License (MIT)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

The BSD License (BSD-2-Clause)

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

enet (used by allonet)

Copyright (c) 2002-2016 Lee Salzman

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

elixir-cmake (used by alloplace)

Copyright (c) 2018 Aramis Group, LLC dba code lever

MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

elixir-uuid (used by alloplace)

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

  1. Definitions.

    “License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

    “Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

    “Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

    “You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License.

    “Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

    “Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

    “Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

    “Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

    “Contribution” shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as “Not a Contribution.”

    “Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

  2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

  3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

  4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

    (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and

    (b) You must cause any modified files to carry prominent notices stating that You changed the files; and

    (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

    (d) If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

    You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

  5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

  6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

  7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

  8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

  9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

  To apply the Apache License to your work, attach the following
+  boilerplate notice, with the fields enclosed by brackets "{}"
+  replaced with your own identifying information. (Don't include
+  the brackets!)  The text should be enclosed in the appropriate
+  comment syntax for the file format. We also recommend that a
+  file or class name and description of purpose be included on the
+  same "printed page" as the copyright notice for easier
+  identification within third-party archives.
+

Copyright {yyyy} {name of copyright owner}

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0
+

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

graphmath (used by alloplace)

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to http://unlicense.org

jason (used by alloplace)

Copyright 2017 Michał Muskała

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0
+

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

lovr (used by allovisor)

Copyright (c) 2020 Bjorn Swenson and other LÖVR contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

lua (used by many)

Copyright © 1994–2019 Lua.org, PUC-Rio.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Oculus SDK (used by lovr-oculus-mobile-alloverse)

Oculus Software Development Kit License Agreement

Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. The text of this may be found at: https://developer.oculus.com/licenses/sdk-3.5/

In order to obtain and use the Oculus Software Development Kit for mobile or for PC, You must first agree to the terms of this License. If you agree to the terms of this License, you may use the Oculus Software Development Kit. If you do not agree to the terms of this License, then you may not use the Oculus Software Development Kit.

OCULUS SDK LICENSE

  1. Subject to the terms and conditions of this License Agreement (the “License”), Facebook Technologies, LLC formerly known as Oculus VR, LLC (“Oculus”) hereby grants to you a worldwide, non-exclusive, no-charge, royalty-free, sublicenseable copyright license to use, reproduce and redistribute (subject to restrictions below) the software contained in this Oculus Software Development Kit for PC and/or mobile (“Oculus SDK”), including, but not limited to, the samples, headers, LibOVR and VRLib headers, LibOVR and VRLib source and, subject to your compliance with Section 3, the headers, libraries and APIs to enable the Platform Services. This License is subject to the following terms and conditions:

1.1 This license grants you the non-exclusive license and right to use (i) the Oculus SDK to make engines, tools, applications, content, games and demos (collectively and generally referred to as “Developer Content”) for use on the Oculus approved hardware and software products (“Oculus Approved Products”) and which may incorporate the Oculus SDK in whole or in part in binary or object code; and (ii) the headers, libraries, APIs and other tools made available by Oculus to enable the use of Platform Services with your Developer Content.

1.2 For the sake of clarification, when you use the Oculus SDK in or with Developer Content, you retain all rights to your Developer Content, and you have no obligations to share or license Developer Content (including your source and object code) to Oculus or any third parties; provided, however, Oculus retains all rights to the Oculus SDK and the headers, libraries and APIs to the Platform Services and other tools made available by Oculus, including those that may be incorporated into your Developer Content.

1.3 You agree that as a condition of this License you will design and distribute your Developer Content to ensure that your Developer Content and any software required to use your Developer Content does not, and you will not, alter or interfere with the normal operation, behavior or functionality of the Oculus hardware or software or Oculus Approved Products, including: (i) the behavior of the “Oculus button” and “XBox button” implemented by the Oculus system software; (ii) any on-screen messages or information; (iii) the behavior of the proximity sensor in the Oculus hardware implemented by the Oculus system software; (iv) Oculus hardware or software security features; (v) end user’s settings; or (vi) the Oculus Flash Screen Warnings. You also agree not to commit any act intended to interfere with the normal operation of the Oculus hardware or software or Oculus Approved Products, or provide software to Oculus users or developers that would induce breach of any Oculus agreements or that contains malware, viruses, hacks, bots, Trojan horses, or other malicious code.

1.4 You may not use the Oculus SDK for any purpose not expressly permitted by this License. You may not (except as and only to the extent any following restriction is prohibited by applicable law): (a) decompile; (b) reverse engineer; (c) disassemble; (d) attempt to derive the source code of the Oculus SDK or any part of the Oculus SDK, or any other software or firmware provided to you by Oculus

REDISTRIBUTION

  1. Subject to the terms and conditions of this License, your license to redistribute and sublicense the Oculus SDK is also expressly made subject to the following conditions:

2.1 You may sublicense and redistribute the source, binary, or object code of the Oculus SDK in whole for no charge or as part of a for-charge piece of Developer Content; provided, however, you may only license, sublicense or redistribute the source, binary or object code of the Oculus SDK in its entirety. The Oculus SDK (including, but not limited to LibOVR and VRLib), and any Developer Content that includes any portion of the Oculus SDK, may only be used with Oculus Approved Products and may not be used, licensed, or sublicensed to interface with software or hardware or other commercial headsets, mobile tablets or phones that are not authorized and approved by Oculus;

2.2 You must include with all such redistributed or sublicensed Oculus SDK code the following copyright notice: “Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved.” 2.3 You must give any other recipients of the Oculus SDK a copy of this License as such recipients, licensees or sublicensees may only use the Oculus SDK subject to the terms of this License and such recipient’s, licensee’s or sublicensee’s agreement to and acceptance of this License with Oculus; and

2.4 The Oculus SDK includes a “LICENSE” text file (the “License Notice”), and any Oculus SDK distribution that you distribute must include a copy of this License with the License Notice.

OCULUS PLATFORM SERVICES

  1. Oculus makes the headers, libraries and APIs, software, and other tools made available by Oculus to enable Platform Services in connection with your Developer Content. You agree not to use any API, code or other tools, instruction or service provided by Oculus to enable or use a Platform Service other than in compliance with these terms. For more information go to https://developer.oculus.com.
  • “Oculus Platform Framework” means the suite of Oculus platform services, including but not limited to the Oculus file distribution and update system (enabling distribution and updates of Developer Content by Oculus, including through generated activation Keys), entitlement system, and account authentication, which list may be changed from time to time in Oculus’ sole discretion.
  • “Application Services” means services provided by Oculus associated with the Platform, including but not limited to in-app purchasing, multiplayer matchmaking, friends, leader boards, achievements, rooms, voice over IP and cloud saves, which list may be changed from time to time in Oculus’ sole discretion.
  • “Platform” means the Oculus virtual reality platform, including but not limited to the user experience, user interface, store, and social features, usable on Oculus approved hardware or any third-party device or operating system, including but not limited to iOS, Android, Windows, OS X, Linux, and Windows Mobile.
  • “Platform Services” means the Oculus Platform Framework and the Application Services.

    3.1 Oculus Platform Services. Oculus makes certain Platform Services available to you to include and enable in your Developer Content. Developer Content that enables or includes any Platform Service must implement the Oculus Platform Framework with that Developer Content. Once your Developer Content has been authorized for use of the Platform Services, you are not required to update your Developer Content to include new Platform Services Oculus may make available as part of the Oculus Platform Framework.

    3.2 Limited Authorization. You hereby grant Oculus the limited authorization reasonably necessary for Oculus’s exercise of its rights and performance of its obligations under this Section 3. You agree that Oculus may use its contractors and affiliates for the purposes of exercising its rights and licenses set forth in this Section 3.

    3.3. Internal Use. You agree that Oculus may grant its employees and internal contractors the right to use, perform and display the Developer Content you provide to Oculus for testing, evaluation and approval purposes, which shall be on a royalty-free basis.

    3.4 Key Provision and Redemption. If you request that Oculus generate activation keys for your Developer Content on the Platform (“Keys”) and Oculus agrees, you hereby grant Oculus (i) the right to generate Keys for you and (ii) a license to make available, reproduce, distribute, perform, and display the Developer Content to end users who have submitted a Key to Oculus. Oculus agrees to authenticate and make Developer Content available to any end user supplying a valid Key (unless the Developer Content has been removed or withdrawn).

    3.5 Platform Services Requirements. You will not make any use of any API, software, code or other item or information supplied by Oculus in connection with the Platform Services other than to enhance the functionality of your Developer Content. In particular, you must not (nor enable others to): (i) defame, abuse, harass, stalk, or threaten others, or to promote or facilitate any prohibited or illegal activities; (ii) enable any functionality in your Developer Content that would generate excessive traffic over the Oculus network or servers that would negatively impact other users’ experience, or otherwise interfere with or restrict the operation of the Platform Services, or Oculus’s servers or networks providing the Platform Services; or (iii) remove, obscure, or alter any Oculus license terms, policies or terms of service or any links to or notices thereto. You may not sublicense any software, firmware or other item or information supplied by Oculus in connection with the Platform Service for use by a third party, unless expressly authorized by Oculus to do so. You agree not to use (or encourage the use of) the Platform Services for mission critical, life saving or ultra-hazardous activities. Oculus may suspend operation of or remove any Developer Content that does not comply with the restrictions in this License. You will not use the Oculus Avatar associated with the Oculus ID of any end user in your Developer Content without the express permission of that end user unless, (i) that end user is actively engaged with your Developer Content or (ii) that end user remains part of an active session of your Developer Content with whom other end users are interacting, whether or not that end user is then online.

GENERAL PROVISIONS

  1. Additional Materials

4.1 Oculus may include in this Oculus SDK additional content (e.g., samples) for demonstration, references or other specific purposes. Such content will be clearly marked in the Oculus SDK and is subject to any included terms and conditions.

4.2 Your use of third-party materials included in the Oculus SDK may be subject to other terms and conditions typically found in separate third-party license agreements or “READ ME” files included with such third-party materials. To the extent such other terms and conditions conflict with the terms and conditions of this License, the former will control with respect to the applicable third-party materials.

  1. THE OCULUS SDK AND ANY COMPONENT THEREOF, THE OCULUS HEADERS, LIBRARIES AND APIS, AND THE PLATFORM SERVICES FROM OCULUS AND ITS CONTRIBUTORS ARE PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OCULUS AS THE COPYRIGHT OWNER OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS OCULUS SDK, THE OCULUS HEADERS, LIBRARIES AND APIS OR THE PLATFORM SERVICES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOME JURISDICTIONS DO NOT PERMIT THE EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES, SO YOU MAY HAVE ADDITIONAL RIGHTS.

  2. This License does not grant permission to use the trade names, trademarks, service marks, or product names of Oculus, except as required for reasonable and customary use in describing the origin of the Oculus SDK, and reproducing the content of the License Notice file. Oculus reserves all rights not expressly granted to you under this License. Neither the name of Facebook Technologies, LLC, Oculus VR, LLC, Oculus, nor the names of Oculus’s contributors, licensors, employees, or contractors, may be used to endorse or promote products developed using the Oculus SDK without specific prior written permission of Oculus.

  3. You are responsible for ensuring that your use of the Oculus SDK and your Developer Content, including enabled Platform Services, complies with all applicable laws (including privacy laws) wherever your Developer Content is made available. You acknowledge and agree that you are solely responsible for any health and safety issues arising from your Developer Content. You will not collect end users’ content or information, or otherwise access any Oculus site, using automated means (such as harvesting bots, robots, spiders, or scrapers) without Oculus’ prior permission.

  4. Your acceptance of the terms and conditions of this License in and of itself and for all Developer Content created as of March 28, 2016, may be evidenced by any of the following: your usage of the Oculus SDK, or acceptance of the license agreement. As this License is updated for future releases of the Oculus SDK, you agree to abide by and meet all requirements of future updates of this License for those future Oculus SDK releases, with acceptance evidenced by usage of the Oculus SDK or any element thereof and the future updates of this License will apply for that future Developer Content that may be developed for or with that future Oculus SDK or any element thereof (i.e., you cannot sidestep out of the requirements of future updates of the License by developing against an older release of the Oculus SDK or License).

  5. Oculus reserves the right to terminate this License and all your rights hereunder immediately in the event you materially breach this License.

  6. Furthermore, Oculus also reserves the right to cancel or terminate this License for any of the following reasons:

a. Intellectual property infringement by you with Developer Content created by you that is used with or by the Oculus SDK, or any of the Platform Services; b. Developer Content (including enabling Platform Services) that violates applicable law; c. Health and safety issues associated with your Developer Content; d. Failure to comply with or use properly the Oculus Flash Screen Warnings; e. Use of the Oculus SDK with a commercial product other than an Oculus Approved Product; f. Failure to provide required notices as set forth above; and g. Failure to observe the restrictions in Section 3.5.

  1. You agree to fully indemnify Oculus from any and all losses, costs, damages and expenses (including reasonable attorney’s fees) arising out of your Developer Content or any matter set forth in Sections 6, 7 and 10(a) through (g).

  2. Oculus may discontinue or change functionality of the Platform Services at any time, and your continued use of the Platform Services or use of any modified or additional Platform Services is conditioned upon your adherence to the terms of this License, as modified by Oculus from time to time.

  3. In the event any provision of this License is determined to be invalid, prohibited or unenforceable by a court or other body of competent jurisdiction, this License shall be construed as if such invalid, prohibited or unenforceable provision has been more narrowly drawn so as not to be invalid, prohibited or unenforceable.

  4. You may not assign any rights or obligations under this License without the advance written consent of Oculus, which may be withheld in its sole discretion. Oculus may assign its rights or obligations under this License in its sole discretion.

  5. Failure of either party at any time to enforce any of the provisions of this License will not be construed as a waiver of such provisions or in any way affect the validity of this License or parts thereof.

  6. Your remedies under this License shall be limited to the right to collect money damages, if any, and you hereby waive your right to injunctive or other equitable relief.

  7. You will comply, and will not cause Oculus to not comply (by for example, providing Developer Content to Oculus under this Agreement for which required export clearances have not been obtained), with all applicable export control laws of the United States and any other applicable governmental authority, including without limitation, the U.S. Export Administration Regulations. You agree that this License and the Oculus SDK and accompanying documentation are Oculus’s confidential information (and is not publicly available), and you will not use it, disclose it or make it available to others except in accordance with the terms of this License.

  8. This License shall be governed by the laws of the State of California, without giving effect to conflict of laws provisions or principles thereof. The parties agree that, except as provided below, all disputes relating to this License shall be resolved by binding non-appearance-based arbitration before a single neutral arbitrator in San Francisco, California. The arbitration will be conducted in the English language by a single arbitrator who is an attorney-at- law with at least fifteen (15) years’ experience in consumer and technology transactions and who is also a member of the JAMS roster of arbitrators. If You and Oculus cannot agree on a mutually acceptable arbitrator within thirty (30) days after the arbitration is initiated, then JAMS will pick a neutral arbitrator who meets such qualifications. The arbitration shall be conducted in accordance with the rules and procedures of JAMS then in effect, and the judgment of the arbitrator shall be final and capable of entry in any court of competent jurisdiction. The parties undertake to keep confidential all awards in their arbitration, together with all materials in the proceedings created for the purpose of the arbitration and all other documents produced by another party in the proceedings not otherwise in the public domain, save and to the extent that disclosure may be required of a party by legal duty, to protect or pursue a legal right or to enforce or challenge an award in legal proceedings before a court or other judicial authority. You and Oculus agree the following may be submitted to a court of competent jurisdiction located within San Francisco, California and further agree to submit to the personal jurisdiction of the courts located within San Francisco, California in connection with (a) any entrance of an arbitrator’s judgment or decision, (b) any dispute with respect to the arbitration process or procedure, (c) Oculus’ exercise of any of its equitable rights or remedies or (d) any claims regarding the ownership, validity, enforceability and/or infringement of any intellectual property rights.

opus (used by allonet)

Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, Jean-Marc Valin, Timothy B. Terriberry, CSIRO, Gregory Maxwell, Mark Borgerding, Erik de Castro Lopo

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Neither the name of Internet Society, IETF or IETF Trust, nor the names of specific contributors, may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Opus is subject to the royalty-free patent licenses which are specified at:

Xiph.Org Foundation: https://datatracker.ietf.org/ipr/1524/

Microsoft Corporation: https://datatracker.ietf.org/ipr/1914/

Broadcom Corporation: https://datatracker.ietf.org/ipr/1526/

penlight (used by many)

Copyright (C) 2009-2016 Steve Donovan, David Manura.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

phoenix (used by web)

Copyright (c) 2014 Chris McCord

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

poison (used by alloplace)

Creative Commons Legal Code

CC0 1.0 Universal

CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
+ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
+PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
+THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
+HEREUNDER.
+

Statement of Purpose

The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an “owner”) of an original work of authorship and/or a database (each, a “Work”).

Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works (“Commons”) that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.

For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the “Affirmer”), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.

  1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights (“Copyright and Related Rights”). Copyright and Related Rights include, but are not limited to, the following:

i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; ii. moral rights retained by the original author(s) and/or performer(s); iii. publicity and privacy rights pertaining to a person’s image or likeness depicted in a Work; iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; v. rights protecting the extraction, dissemination, use and reuse of data in a Work; vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.

  1. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer’s Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “Waiver”). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer’s heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer’s express Statement of Purpose.

  2. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer’s express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer’s Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “License”). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer’s express Statement of Purpose.

  3. Limitations and Disclaimers.

a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person’s Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.

Unity unit testing (used by allonet)

The MIT License (MIT)

Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

FFMPEG/libavcodec (used by allonet)

              GNU LESSER GENERAL PUBLIC LICENSE
+                   Version 2.1, February 1999
+

Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.]

                        Preamble
+

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software–to make sure the software is free for all its users.

This license, the Lesser General Public License, applies to some specially designated software packages–typically libraries–of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.

When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.

To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.

For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.

We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.

To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author’s reputation will not be affected by problems that might be introduced by others.

Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.

Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.

When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.

We call this license the “Lesser” General Public License because it does Less to protect the user’s freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.

For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.

In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.

Although the Lesser General Public License is Less protective of the users’ freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.

The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a “work based on the library” and a “work that uses the library”. The former contains code derived from the library, whereas the latter must be combined with the library in order to run.

              GNU LESSER GENERAL PUBLIC LICENSE    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
  1. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called “this License”). Each licensee is addressed as “you”.

A “library” means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.

The “Library”, below, refers to any such software library or work which has been distributed under these terms. A “work based on the Library” means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term “modification”.)

“Source code” for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.

  1. You may copy and distribute verbatim copies of the Library’s complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

  1. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices
+stating that you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no
+charge to all third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a
+table of data to be supplied by an application program that uses
+the facility, other than as an argument passed when the facility
+is invoked, then you must make a good faith effort to ensure that,
+in the event an application does not supply such function or
+table, the facility still operates, and performs whatever part of
+its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has
+a purpose that is entirely well-defined independent of the
+application.  Therefore, Subsection 2d requires that any
+application-supplied function or table used by this function must
+be optional: if the application does not supply it, the square
+root function must still compute square roots.)
+

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.

In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

  1. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.

Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.

This option is useful when you wish to copy part of the code of the Library into a program that is not a library.

  1. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.

If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.

  1. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a “work that uses the Library”. Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

However, linking a “work that uses the Library” with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a “work that uses the library”. The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.

When a “work that uses the Library” uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.

If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)

Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.

  1. As an exception to the Sections above, you may also combine or link a “work that uses the Library” with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer’s own use and reverse engineering for debugging such modifications.

You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:

a) Accompany the work with the complete corresponding
+machine-readable source code for the Library including whatever
+changes were used in the work (which must be distributed under
+Sections 1 and 2 above); and, if the work is an executable linked
+with the Library, with the complete machine-readable "work that
+uses the Library", as object code and/or source code, so that the
+user can modify the Library and then relink to produce a modified
+executable containing the modified Library.  (It is understood
+that the user who changes the contents of definitions files in the
+Library will not necessarily be able to recompile the application
+to use the modified definitions.)
+
+b) Use a suitable shared library mechanism for linking with the
+Library.  A suitable mechanism is one that (1) uses at run time a
+copy of the library already present on the user's computer system,
+rather than copying library functions into the executable, and (2)
+will operate properly with a modified version of the library, if
+the user installs one, as long as the modified version is
+interface-compatible with the version that the work was made with.
+
+c) Accompany the work with a written offer, valid for at
+least three years, to give the same user the materials
+specified in Subsection 6a, above, for a charge no more
+than the cost of performing this distribution.
+
+d) If distribution of the work is made by offering access to copy
+from a designated place, offer equivalent access to copy the above
+specified materials from the same place.
+
+e) Verify that the user has already received a copy of these
+materials or that you have already sent this user a copy.
+

For an executable, the required form of the “work that uses the Library” must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

  1. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
+based on the Library, uncombined with any other library
+facilities.  This must be distributed under the terms of the
+Sections above.
+
+b) Give prominent notice with the combined library of the fact
+that part of it is a work based on the Library, and explaining
+where to find the accompanying uncombined form of the same work.
+
  1. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

  2. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.

  3. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.

  4. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

  1. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

  2. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.

  1. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

                      NO WARRANTY
    +
  2. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  3. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

               END OF TERMS AND CONDITIONS
    +
    + How to Apply These Terms to Your New Libraries
    +

If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).

To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

<one line to give the library's name and a brief idea of what it does.>
+Copyright (C) <year>  <name of author>
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your school, if any, to sign a “copyright disclaimer” for the library, if necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob’ (a library for tweaking knobs) written by James Random Hacker.

, 1 April 1990 Ty Coon, President of Vice That's all there is to it!
diff --git a/modules/index.html b/modules/index.html new file mode 100644 index 0000000..fc5a161 --- /dev/null +++ b/modules/index.html @@ -0,0 +1 @@ + Modules - Alloverse Documentation Modules | Alloverse Documentation Link Search Menu Expand Document diff --git a/protocol-reference.html b/protocol-reference.html new file mode 100644 index 0000000..c5f7d98 --- /dev/null +++ b/protocol-reference.html @@ -0,0 +1,42 @@ + Protocol Reference - Alloverse Documentation Protocol Reference | Alloverse Documentation Link Search Menu Expand Document

Protocol Reference

Terminology

Please begin by reading the architecture documentation, as it explains how all these components fit together.

To see how these messages actually sent over the network, see Wire Protocol. This document also specifies the differences between the specification and the current implementation.

Agent

An agent is code that can spawn entities, and communicates to a place on behalf of the entities it owns. Thus, all these are agents:

  • The place itself (referenced in requests with “place” magic entity id)
  • any visor (represented as the allonet connection to the place)
  • any app (also represented as its allonet connection)

Every connected agent has to spawn its “avatar” entity as part of its ANNOUNCE message, so that it has a representation in a place and can be communicated with (or terminated, in the case of apps).

When an agent disconnects from a place, all its entities are removed from the place.

Agent identity

An agent’s ANNOUNCE message contains its identity: display name, profile URL, and a certificate/public key that can be used to identify the same user/app across connections and places without a central identity authority server.

Identity is currently expressed as the following JSON blob:

{
+    "display_name": "annie"
+}
+

Entity

An entity is the manifestation of an agent in a place. The only fixed information in an entity is its id. Everything else is specified as a set of components.

JSON specification:

{
+    "id": "1234",
+    "components": {
+        "transform": // every component has a string key
+        {            // and an object value
+            // the keys and values should be consistent with
+            // with the specification for that key. See "Component"
+        }
+    }
+}
+

Component

A component describes an aspect of an entity, such as:

  • transform: its position, rotation and size
  • mesh: description of its physical geometry
  • etc…

Alloverse defines a set of official components. App developers are free to invent their own components, which is useful for app-to-app communication (though a standard Visor will not be able to interpret them).

Intent

The “intent” blob is used every heart-beat to indicate how the agent intends that its avatar (and other owned entities) should move and behave in real-time this frame. It only covers basic movement: more complex behavior is covered by “interactions”. It’s sent over the unreliable channel, so it should be repeated every frame as long as it’s relevant.

The blob is also used to send housekeeping information such as acknowledging receipt of state diffs.

See Intent.

Interaction

An on-demand message either announcing information, or requesting something from one entity to another (sent by the requesting entity’s agent, and handled by the receiving entity’s agent).

Alloverse defines a set of official Interactions. App developers are free to invent their own interactions, which is useful for app-to-app communication (though a standard Visor will not be able to interpret them).

Types of communication

Entity intent

Agent to place per-frame message.

See Intent.

Entity to entity interaction (request/response/pubsub)

Sent from agent, to place, then forwarded to the designated agent, over the reliable channel on demand.

  [
+    "interaction",
+    "{oneway|request|response|publication}"
+    "{source entity ID}",
+    "{destination entity ID or emptystring if publication}",
+    "{request ID or empty string if single-way}",
+    // interaction body goes here
+  ]
+

The agent sending the request must own the source entity.

Requests and responses

If the second field is set to “request” and a request ID is set, the recipient can respond to the interaction by setting “response” and filling in the same request ID, and the alloplace server will route the message correctly.

A response must be sent to the entity that sent the request. Sending a response to a an entity that didn’t request it may lead to force disconnection.

The client sets its own request IDs. These must be unique for each request this session for this agent. An UUID or monotonically increasing integer as string should do.

Publication and subscription

If the second field is “publication” and no destination entity is filled in, it’s a publication that anyone can subscribe to. This is useful for apps to broadcast information that is instantaneous rather than a property of an entity (in which case it would have been a property of a component of an entity).

Agents can subscribe to publications by providing a “match pattern” which is an Elixir guard expression. This lets agents set very fine grained subscriptions to exactly what interactions it wants to receive.

If nobody is subscribing to a matching pattern of the given publication, the message is filtered out by the alloplace server.

Behavior is undefined if you provide a request id in a publication. Future versions may allow publications to have responses.

Oneway

The message is directed to a single entity/client, and you can’t respond to it. request_id should be empty.

Access control

Access control is defined on the interaction level. The alloplace server can be fed with Elixir guard expressions the same way that subscriptions work, and an “allow” or “deny” flag, which then becomes the “Access Control List” (ACL) for interactions in the place.

Since announce is an interaction, an interaction ACL can be used to allow/deny agents from joining a place. Likewise, since changing the ACL is also an interaction, you can use an ACL to control who may modify the ACL. In other words, anything except intents and place state updates can be filtered using interaction ACLs.

Interaction ACLs guard on the entire interaction message, and not just the payload body. So for example, the following rule would disallow users named “harry” from joining a room:

[
+  "deny",
+  """[
+    "interaction", // match exactly on provided value for first field
+    "request",
+    SourceEntity,  // bare words become variables
+    "place",
+    _,             // underscore means unused variable = ignored value
+    [
+      "announce",
+      ["identity", Identity],
+      _
+    ]
+  ] where Identity["name"] == "harry" """
+]
+

Note that the rule itself is an Elixir string, not a JSON expression.

If an interaction is sent by an agent but is disallowed by an ACL rule, the following message is sent in response:

[
+  "interaction_denied",
+  // original interaction goes here,
+  // rule that caused denial goes here
+]
+

Place to agent state update

Sent every heart-beat on the unreliable channel 0 to let agents know what the world looks like.

See State Diffs for full format and explanation, and Entity to understand the things the state contains.

Official components

Please see the list of official components. These are defined by alloplace, and define how an agent and entity interact with a place.

Official interactions

Please see the list of official interactions. These are defined by alloplace, and define how an agent and entity interact with a place.

HTTP Endpoints

Alloapp Gateway

HTTP service that takes a connection request, repackages as env vars, and boots the requested process. Node express.

  • ALLOVERSE_PLACE_URL
  • ALLOVERSE_REQUESTER_IDENTITY
  • ALLOVERSE_URL_PARAMS

Table of contents

diff --git a/protocol-reference/asset-protocols.html b/protocol-reference/asset-protocols.html new file mode 100644 index 0000000..6601176 --- /dev/null +++ b/protocol-reference/asset-protocols.html @@ -0,0 +1,16 @@ + Asset Protocol - Alloverse Documentation Asset Protocol | Alloverse Documentation Link Search Menu Expand Document

Asset Protocol

Assets are delivered between agents by using the placeserv as a distribution center. Channel 2 CHANNEL_ASSETS is used to deliver reliable messages in any direction. Messages can be requests, responses, informational or raw asset data.

“Assets” in this context means static, unchanging data used by clients or other agents, such as textures, 3d models, sound files, etc. Basically, anything that would be distributed as resource files in an app or a game.

There are no provisions for editing files, or keeping track of changes. While the asset system could be used to distribute arbitrary file systems; editing, listing and change notifications would have to be implemented as interactions.

Identity

Assets are always identified with the format:

asset:sha256:<<64 lowercase hex digits>>

The hex digits are the sha-2 256 bit hash of the full file contents of the asset itself. This means that you can’t have different versions of the same asset on different clients, because then they are in effect different assets.

No filename, mime type or any other metadata is provided in the identifier. If this turns out to be essential, we could add it as additional fields, separating fields with colons.

Distribution

In general, the distribution protocol uses “pull” semantics from agents that need data. When an agent requests an asset from placeserv, it will first try to serve it from cache to the requesting agent. If none is found, it broadcasts a request to all connected agents to find who has it. Placeserv then retrieves the asset to placeserv’s cache, and then serves the asset back to the requesting agent.

The requesting agent might already have a good idea about who has the asset, and MAY include an entity id as a hint to which client SHOULD be asked first (whereafter it MUST ask all other agents to see if they have it).

In addition, if an agent has an asset that it thinks is very likely to be needed soon, it MAY push that asset immediately to the placeserv to be stored in the cache.

Once an asset is received, it MUST be checked against the hash in its identifier to verify its integrity, and discard it if the hash does not match.

Caching

Placeserv MUST function even completely without a cache. In the case of an asset response which doesn’t fit on disk, or an asset response which indicates not cacheable, placeserv must stream this asset directly to the requesting agent, keeping just enough of it in RAM to do so, whereafter it can remove the asset from memory.

Wire protocol

On the wire, messages are:

  1. mid, a 16-bit unsigned big-endian integer message type code.
  2. hlen, a 16-bit unsigned big-endian integer header length value.
  3. header, a utf8 json body of hlen bytes.
  4. message, a raw bytestream of bytes, directly appended after hlen bytes of json and until the end of the packet.

C>S>C Asset request

Ask for an asset. The message can be:

  • agent to placeserv: Ask the place for an asset, in which case it will either respond with it from cache; or ask other agents for the asset and then forward it on.
  • placeserv to agent: Placeserv has been asked by another agent for an asset, and is now forwarding that request.
<<mid:1>><<hlen>>{
+  "id": "<<asset id>>",
+  "range": [start_byte_offset, number_of_bytes],
+  "published_by": "<<entity id>>" // optional
+}
+
  • id is the ID of the asset
  • range is the byte range you want. Send [0, 0] for a head request.
  • published_by is the entity ID whose owner is likely to own the asset. This is an optional field and only used as a hint. Placeserv should ask this agent first, before asking other agents.

C>S>C Asset response, transmission header

If the receiver has the asset requested, it may respond affirmative with the metadata of the asset in a “transmission header” packet. It will then commence sending “transmission chunks”.

An agent can start sending this to a placeserv (or placeserv to an agent) unprompted in case it wishes to warm up the receiver’s cache.

Once we receive start_byte_offset + number_of_bytes == total_length the full asset has been received. The receiver should start confirming the hash of the asset before finally storing it in its cache and forwarding it to the application layer.

<<mid:2>><<hlen>>{
+  "id": "<<asset id>>",
+  "range": [start_byte_offset, number_of_bytes],
+  "total_length": <<total byte length of asset>>,
+}<<raw data>>
+

C>S>C Asset response, failure header

Sent in place of mid:2 in case the receiver is unable to satisfy the request (e g it doesn’t have the asset).

<<mid:3>><<hlen>>{
+  "id": "<<asset id>>",
+  "error_reason": "<<user-readable unavailability reason>>",
+  "error_code": "<<computer-reladable error code for this error>>",
+}
+
diff --git a/protocol-reference/coordinate-system.html b/protocol-reference/coordinate-system.html new file mode 100644 index 0000000..6935957 --- /dev/null +++ b/protocol-reference/coordinate-system.html @@ -0,0 +1 @@ + Coordinate System - Alloverse Documentation Coordinate System | Alloverse Documentation Link Search Menu Expand Document

Coordinate System

The coordinate system in Alloverse has the following properties:

  1. One unit is 1 meter
  2. Coordinate system is right-handed. This implies…
  3. Negative X is left/west, positive X is right/east.
  4. Negative Y is down, positive Y is up.
  5. Negative Z is forward/north, positive Z is back/south.
  6. Positive rotation is counterclockwise about the axis of rotation.
  7. Rotations are always represented in radians.
  8. Y=0 is floor level in model space
  9. The neutral pose of all models, avatars, app UIs etc should should face towards positive Z, with “right” being positive X and “up” being positive Y.
  10. For textures, UV 0,0 is bottom-left, with positive U towards the right, and positive V upwards.
  11. The origin of an entity should be in its middle.

Rotation about Y axis is counterclockwise

Representation

Transforms are always represented using a 16-element transformation matrix. Such a 4x4 matrix is represented in data models with a column-major 16-element list of numbers.

diff --git a/protocol-reference/identity.html b/protocol-reference/identity.html new file mode 100644 index 0000000..7520c18 --- /dev/null +++ b/protocol-reference/identity.html @@ -0,0 +1 @@ + Identity - Alloverse Documentation Identity | Alloverse Documentation Link Search Menu Expand Document

Identity

Identity hasn’t been completely fleshed out yet, but here’s the general gist:

  • Alloverse is decentralized, so there is no central identity authority.
  • When a Visor is started for the first time, it generates a private+public key pair. The user is also prompted to fill in “profile data” such as name, email, profile picture, choice of avatar, etc.
  • Public key + profile data = “Alloverse Passport”
  • Visors can transfer passports to other visors over Bluetooth or Wifi. E g, if the user starts out on a Mac and later get a Quest, when they start the Quest app they’re prompted to either create a passport or transfer one over. If they choose to transfer, the Mac app and Quest app will communicate and show UI to confirm the transfer on both sides.
  • Visors with the same Passport communicate to connect to the same place, and they control the same avatar, so that it’s easy to switch between platforms and level of immersion.
  • Agents can identify each other using Diffie Hellman key exchange.
    • This means that an app “logs in” the users that are in the room by exchanging keys with them, and there’s no need to type in any usernames or passwords. Apps automatically know who is in the room and can customize its contents based on that.
    • Users also identify themselves to each other, so that you can know that the person you talked to yesterday is the same person you are talking to today. This also lets you build a contact list.
  • Key exchange is done through Interactions that can be blocked on a Place level or at a Visor level, so that people who don’t wish to be identified to other people or apps without authorizing it, won’t be.
  • To back up your Passport, you can link it to your my.alloverse.com account, or another web service.
diff --git a/protocol-reference/intent.html b/protocol-reference/intent.html new file mode 100644 index 0000000..8ca4033 --- /dev/null +++ b/protocol-reference/intent.html @@ -0,0 +1,43 @@ + Intent - Alloverse Documentation Intent | Alloverse Documentation Link Search Menu Expand Document

Intent

Sent from agent to place over unreliable channel 0 every heartbeat to indicate movement of clients. This intent is then actuated onto the client state both by client-side interpolation and on the server at the server heart rate.

Format of the packet on-wire today:

{
+  "cmd": "intent",
+  "intent": {
+    "zmovement": 0, // 1 = maximum speed forwards
+    "xmovement": 0, // 1 = maximum speed strafe right
+    "yaw": 0, // absolute rotation around x in radians
+    "pitch": 0, // absolute rotation around y in radians
+    "poses": {
+      "head": {
+        "matrix": [m11, m12, ...m44],
+      },
+      "hand/left": {
+        "matrix": [m11, m12, ...m44],
+        "skeleton": [
+          [m11, m12, ...m44],
+          [m11, m12, ...m44],
+          ...
+        ],
+        "grab": { // nil or description of grab
+          //entity id of entity being grabbed
+          "entity": "asdf",
+          // to keep hand-to-entity spatial relationship constant during grab
+          "grabber_from_entity_transform": [m11, m12, ...m44]
+        }
+      },
+      "hand/right": {same as hand/left}
+    },
+    "ack_state_rev": 1234
+  }
+}
+

For the format of the matrix in poses.*.matrix, see coordinate system.

For hand*.skeleton: It’s an array of matrices, each describing the pose of a node of the hand. There are 26 nodes, with each index as defined by OpenXR hand tracking. You can see a list of indexes (and node parents) in lovr’s documentation (with each index offset by 1 because lua, of course).

To understand ack_state_rev, see (state.md)[state.md].

Planned version of the packet:

{
+    "intents": {
+        "{entity id of avatar}": {
+            (same as under "intent" in today's version)
+        },
+        "{id of other owned entity}": {
+            // same as above
+        }
+    },
+    "ack-state-rev": 73892  // sequence number of state diff
+                            // we're acknowledging
+}
+
diff --git a/protocol-reference/interactions.html b/protocol-reference/interactions.html new file mode 100644 index 0000000..2605831 --- /dev/null +++ b/protocol-reference/interactions.html @@ -0,0 +1,186 @@ + Interactions - Alloverse Documentation Interactions | Alloverse Documentation Link Search Menu Expand Document

Interactions

These interactions are defined by alloserv. Third party developers may create any interactions they want. They can vote to make their own interactions official by opening an issue on this repo.

  1. Interactions
    1. Authentication and identity
      1. Agent announce
      2. Modify ACL
    2. Modifying the world
      1. Spawn entity
      2. Remove entity
      3. Change/add/remove component(s) in entity
      4. Launch app
    3. User interface interactions
      1. Entity points at another entity
      2. Entity pokes
      3. Entity grabs
      4. Add property animation
      5. Remove property animation
    4. Protocol level messages
      1. Entity wishes to transmit live media
      2. TBD: Subscribe/unsubscribe

Authentication and identity

Agent announce

After an agent connects, before it can interact with the place it must announce itself and spawn its avatar entity. Failure to announce will lead to force disconnect.

  • Receiver: place
  • Type: request
  • Request body:
[
+  "announce",
+  "version",
+  1,
+  "identity",
+  {
+    // identity body goes here
+  },
+  "spawn_avatar",
+  {
+    // same as "spawn_entity" key in "Agent requests to spawn entity"
+  }
+]
+
  • Response:
[
+  "announce",
+  "{ID of avatar entity}",
+  "{name of place}"
+]
+

Modify ACL

TBD

Modifying the world

Spawn entity

  • Receiver: place
  • Type: request
  • Request body:
[
+  "spawn_entity",
+  {
+    // list of initial values for components for new entity goes here
+
+    "children": [
+      // list of new child entities to create; same body as for "spawn_entity".
+      // These will automatically get a "relationships" component set up referencing
+      // the parent entity.
+      {
+        // list of initial values for components for child of new entity goes here
+      },
+      ...
+    ]
+  }
+]
+
  • Response:
[
+  "spawn_entity",
+  "{ID of entity if spawned}"
+]
+

Remove entity

  • Receiver: place
  • Type: request
  • Request body:
[
+  "remove_entity",
+  "{ID of entity to remove}",
+  "{'reparent' or 'cascade'}"
+]
+
  • Reparent: If the removed entity has children, they will be reparented to root
  • Cascade: If the removed entity has children, they will also be removed.

  • Response:
[
+  "remove_entity",
+  "ok"
+]
+

Change/add/remove component(s) in entity

  • Receiver: place
  • Type: request
  • Request body:
[
+  "change_components",
+  "{entity ID}",
+  "add_or_change",
+  {
+    // object with new values for components (regardless of if
+    // component already exists on entity)
+  }
+  "remove",
+  [
+    // keys of components to remove
+  ]
+]
+

Response:

[
+  "change_components",
+  "ok"
+]
+

A default ACL rule is set so that you must own the entity whose component you’re changing, but this rule can be changed.

Launch app

  • Receiver: place
  • Type: request
  • Request body:
[
+  "launch_app",
+  "{app URL}",
+  { launch parameters as arbitrary JSON object }
+]
+

Response:

[
+  "launch_app",
+  "ok",
+  "{avatar id}"
+]
+

or

[
+  "launch_app",
+  "error",
+  "{human-readable error string"
+]
+

Ask the Place to launch an app on behalf of the sending entity. The Place will establish a connection to the requested app if possible, launch it to that Place with the given arguments and the identity of the calling client, and then return the avatar ID if all that succeeded.

(The avatar of an app is the “main UI” entity of the app.)

User interface interactions

Entity points at another entity

An entity, most likely the avatar of a user, is pointing with their finger at another entity. This is used as a precursor to actually interacting with it (“poking it”).

The interaction describes two points in world space: the tip of the finger, and the intersection point between the ray from the finger and the nearest entity, so that the entity can know where on itself someone is pointing.

  • Receiver: The pointed-at entity
  • Type: one-way
  • Body:
[
+  "point",
+  [1.0, 2.0, 3.0], // finger tip in world space coordinates
+  [4.0, 5.0, 6.0], // intersection point in world space coordinates
+]
+

If the ray cast from the user’s finger veers off the last pointed-at entity, one last message is sent to indicate that the user has stopped pointing at it. This is useful for removing highlight effect, etc.

[
+  "point-exit"
+]
+

Entity pokes

Once an entity is pointing at another entity, it can ask to “physically” interact with it, by turning the pointing into a poke. The poke doesn’t contain vector information – it’s up to the receiver to correlate with pointing events, as those will be streaming a continuously updating location, while poking is a request-response which the receiver can reject. Such a rejection should be visualized, so that the sender’s user can understand if and why poking failed.

  • Receiver: The pointed-at entity
  • Type: request
  • Request body:
[
+  "poke",
+  {true|false} // whether poking started (true) or stopped (false)
+]
+
  • Success response:
[
+  "poke",
+  "ok"
+]
+
  • Failure response:
[
+  "poke",
+  "failed",
+  "{string explaining why, presentable to user}"
+]
+

Entity grabs

Another action an entity can do when pointing at another entity, is to “grab” it. The below interaction is sent from the visor to the grabbed entity, but the actual moving of the grabbed thing is performed with a field in the intent struct, and the movement is performed server-side. The purpose of this event is just to let the entity know that it will be moved by the server between the start and stop event, and the receiving app doesn’t have to/can’t do any movement on its own in response.

  • Receiver: The pointed-at entity
  • Type: one-way
  • Request body:
[
+  "grabbing",
+  {true|false} // whether grabbing started (true) or stopped (false)
+]
+

Add property animation

Ask to add an animation to an entity. See the documentation for animation descriptor in property_animations

  • Receiver: The animated entity
  • Type: request
  • Request body:
[
+  "add_property_animation",
+  { animation descriptor }
+]
+
  • Success response:
[
+  "add_property_animation",
+  "ok",
+  "abc123" // ID of this animation
+]
+
  • Failure response:
[
+  "add_property_animation",
+  "failed",
+  "{string explaining why, presentable to user}"
+]
+

Remove property animation

Ask to remove an existing animation by ID.

[
+  "remove_property_animation",
+  "abc123"
+]
+
  • Success response:
[
+  "remove_property_animation",
+  "ok",
+  "abc123" // ID of this animation that was removed
+]
+
  • Failure response:
[
+  "remove_property_animation",
+  "failed",
+  "{string explaining why, presentable to user}"
+]
+

Protocol level messages

Entity wishes to transmit live media

Before an entity can transmit streamed audio, video or geometry, a track must be created along which to send that data. This interaction will add a live_media component to the sender’s entity.

See the live_media compponent documentation for valid media types, media formats and metadata payloads.

  • Receiver: place
  • Type: request
  • Request body:
[
+  "allocate_track",
+  "audio", # media type
+  "opus", # media format
+  { metadata ... }
+]
+
  • Legacy request body:
[
+  "allocate_track",
+  "audio", # media type
+  48000, # sample rate
+  1, # channel count
+  "opus" # media format
+]
+
  • Success response:
[
+  "allocate_track",
+  "ok",
+  3 # track_id
+]
+
  • Failure response:
[
+  "allocate_track",
+  "failed",
+  "{string explaining why, presentable to user}"
+]
+

TBD: Subscribe/unsubscribe

  • Receiver: place
  • Type: request
  • Request body for subscribe:
[
+  "subscribe",
+  """{guard pattern}"""
+]
+
  • Response:
[
+  "subscribe",
+  "{subscription ID}"
+]
+
  • Unsubscribe request body:
[
+  "unsubscribe",
+  "{subscription ID}"
+]
+
  • Response:
[
+  "unsubscribe",
+  "{'ok'|'not_subscribed'}"
+]
+
  • Example:
  [
+    "interaction",
+    "request",
+    "1234",
+    "place", // place is the subscription gateway
+    "567",
+    [
+      "subscribe",
+      """[
+        "new_tweet",
+        TweetSender,
+        TweetBody
+      ] where TweetSender == "nevyn" """
+    ]
+

In this scenario the place contains an app that publishes new tweets as interactions to the room. This interaction will ask the place to subscribe to all interaction publications which start with the word “new_tweet” followed by two fields. The guard clause asks that the sender must be “nevyn”. If the guard matches, the publication interaction will be forwarded by the place from the sending agent to the subscribing agent.

diff --git a/protocol-reference/state-diffs.html b/protocol-reference/state-diffs.html new file mode 100644 index 0000000..8875040 --- /dev/null +++ b/protocol-reference/state-diffs.html @@ -0,0 +1,29 @@ + State Diffs - Alloverse Documentation State Diffs | Alloverse Documentation Link Search Menu Expand Document

State Diffs

Every server heart-beat, the server sends the world state to all connected agents on unreliable channel 0.

State representation

The world representation is stored as a big JSON document like so:

{
+  "entities": {
+    "abc123": {
+      "id": "abc123",
+      "components": { ... }
+    }
+  },
+  "revision": 1234
+}
+
  • entities: A dictionary from entity ID to entity description.
  • revision: An integer ID for this specific revision of the world. Monotonically increases until it reaches the biggest sequential integer that a 64-bit IEEE double can represent, which is 2^53, whereafter it will wrap around back to 0. (damn JSON).

Deltas

Sending this document in its entirety every server heart-beat would be needlessly wasteful, so instead only the difference to a previous known-good state is sent. An agent acknowledges successful receival of world state by setting ack_state_rev in intent to the received world state, whereafter the server will diff against that revision instead. Note that it takes time for this ACK to be received, so you might continue to receive diffs against an older version; so you need to keep a history of previous states to apply diffs to.

The packet on channel 0 received in the client can take three forms:

Format 1: set

If the server is unable to diff, it will just send the full world state document.

{
+  "patch_style": "set",
+  "entities": ...,
+  "revision": 1234
+}
+

Note that patch_style is not part of the document, and should be removed before the document is stored to history.

Format 2: apply

Indicates that the payload is an RFC 6902 JSON Patch.

{
+  "patch_style": "apply",
+  "patch_from": 1233,
+  "patches": [ ... /*RFC 6902 patches*/ ]
+}
+
  • patch_from indicates the revision to apply the patches to
  • patches is a JSON list of RFC 6902 patches to apply to said revision from history

The patches should be applied and the resulting document stored to history. If the referenced from revision is not available or history, or if patching fails, you should set intent’s ack_state_rev back to 0 to request a full set state.

Note: This format seems to almost always be less efficient than RFC 7386, so its support is likely to be removed.

Format 3: merge

Indicates that the payload is an RFC 7386 JSON Merge Patch.

{
+  "patch_style": "merge",
+  "patch_from": 1233,
+  ... // rest of document is an RFC 7386 payload
+}
+
  • Note that patch_style and patch_from must be removed from the document before it’s a valid RFC 7386 merge patch.
  • patch_from indicates the revision to apply the patches to

The merge patch should be applied and the resulting document stored to history. If the referenced from revision is not available or history, or if patching fails, you should set intent’s ack_state_rev back to 0 to request a full set state.

Older versions

Version 1 sent the complete world-state as is, and with entities as an array rather than an object. It looked like this:

entities: [
+  // list of all entities; see Entities above for structure
+],
+revision: 1234 // monotonically increasing integer (will roll over to 0 after INT64_MAX!)
+
diff --git a/protocol-reference/url-definitions.html b/protocol-reference/url-definitions.html new file mode 100644 index 0000000..0a29cba --- /dev/null +++ b/protocol-reference/url-definitions.html @@ -0,0 +1 @@ + URL Definitions - Alloverse Documentation URL Definitions | Alloverse Documentation Link Search Menu Expand Document

URL Definitions

URLs are used to identify and locate various resources in Alloverse. This document should be a full list of such URLs and their format.

Alloplace

There is currently one format for locating an alloplace server:

alloplace://{host}:{port}

  • host: Hostname or IP of machine that is running the alloplace service
  • port: This is the enet UDP endpoint for the listen socket. Optional: default value is 21337.

Such an URL should be fed into alloclient_connect or its high-level equivalents, and allonet will take care of parsing and connecting to the server at that URL.

Virtual hosting (unimplemented)

The downside of this scheme is that it doesn’t allow for virtual hosting: with the same domain name for the same IP, you’ll end up at the same placeserv unless you include a custom port in the URL, which is ugly.

One solution is to use a HTTPS gateway which returns the real alloplace URL given a URL of this form:

alloplacegw:http(s)://{host}:{port}/{path}

Another solution is to have a “load balancer” allplace socket which forwards to an internal instance. This solution can use the original alloplace:// url schema.

Alloapp

An alloapp is launched with an URL in this format:

alloapp:http(s)://{host}:{port}/{path}?{params}

This is a HTTP(S) gateway endpoint which is basically a “CGI launcher”. Upon POST, it’ll launch an instance of the app and connect it to the requested alloplace. Please read more over on the topic of hosting.

You can launch this gateway by calling ./allo/assist serve inside an alloapp.

When an alloplace accesses the above URL, it will fill in these HTTP headers:

  • x-alloverse-server: The alloplace: url of the place that the new app instance shouild connect to
  • x-alloverse-launched-by: The identity blob of the user who requested the app launch
diff --git a/protocol-reference/wire-protocol.html b/protocol-reference/wire-protocol.html new file mode 100644 index 0000000..5c57532 --- /dev/null +++ b/protocol-reference/wire-protocol.html @@ -0,0 +1,18 @@ + Wire Protocol - Alloverse Documentation Wire Protocol | Alloverse Documentation Link Search Menu Expand Document

Wire Protocol

What are the actual bytes travelling on the wire? They all seem to be json payload followed by a newline character…

S->C State stream

  • Channel: 0 (“CHANNEL_STATEDIFFS”)
  • Kind: Unreliable
  • Payload specification: State
<<JSON-payload>>\n
+

C->S Intent

  • Channel: 0 (“CHANNEL_STATEDIFFS”)
  • Kind: Unreliable
  • Payload specification: Intent
<<JSON-payload>>\n
+

S->C Interaction

<<JSON-payload>>\n
+

Version 0 implements this packet as:

{
+  "cmd": "interact",
+  "interact": {
+    "from_entity": "...",
+    "to_entity": "...",
+    "cmd": "..."
+  }
+}\n
+

C->S Interaction

<<JSON-payload>>\n
+

C->S->C Media track packet

  • Channel: 3 (“CHANNEL_MEDIA”)
  • Kind: Unreliable
  • Related interaction: allocate_track
<<track-id as 32bit big endian integer>><<raw media payload>>
+

Note that in older versions of the protocol, even audio/media packets had that stupid newline at the end.

C->S->C Clock sync packet

  • Channel: 4 (“CHANNEL_CLOCK”)
  • Kind: Unreliable
  • Payload:
{
+  "client_clock": 123.0,
+  "server_clock": 456.0
+}\n
+

This packet is sent from the client once a second with only the client_clock field set to its local monotonic clock time. It is immediately bounced back from the server, with its server_clock set.

The client can thus calculate its round-trip latency (now() - response["client_clock"]), and delta between its clock and the server clock. Using all this information, it can then extrapolate the world time and update place’s clock component.

Unspecified

  • C->S asset request/response
  • S->C asset request/response
  • S->C asset force delivery