@aws/mynah-ui 3.2.7 → 3.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","mappings":"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","sources":["../webpack/universalModuleDefinition",".././src/styles/styles.scss",".././node_modules/css-loader/dist/runtime/api.js",".././node_modules/css-loader/dist/runtime/sourceMaps.js",".././node_modules/escape-html/index.js",".././node_modules/prismjs/components/prism-bash.min.js",".././node_modules/prismjs/components/prism-c.min.js",".././node_modules/prismjs/components/prism-clike.min.js",".././node_modules/prismjs/components/prism-csharp.min.js",".././node_modules/prismjs/components/prism-css.min.js",".././node_modules/prismjs/components/prism-java.min.js",".././node_modules/prismjs/components/prism-javascript.min.js",".././node_modules/prismjs/components/prism-json.min.js",".././node_modules/prismjs/components/prism-jsx.min.js",".././node_modules/prismjs/components/prism-less.min.js",".././node_modules/prismjs/components/prism-lua.min.js",".././node_modules/prismjs/components/prism-markdown.min.js",".././node_modules/prismjs/components/prism-markup.min.js",".././node_modules/prismjs/components/prism-mongodb.min.js",".././node_modules/prismjs/components/prism-objectivec.min.js",".././node_modules/prismjs/components/prism-python.min.js",".././node_modules/prismjs/components/prism-regex.min.js",".././node_modules/prismjs/components/prism-scala.min.js",".././node_modules/prismjs/components/prism-scss.min.js",".././node_modules/prismjs/components/prism-tsx.min.js",".././node_modules/prismjs/components/prism-typescript.min.js",".././node_modules/prismjs/components/prism-xml-doc.min.js",".././node_modules/prismjs/plugins/keep-markup/prism-keep-markup.js",".././node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js",".././node_modules/prismjs/prism.js","webpack://MynahUI/./src/styles/styles.scss?203b",".././node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js",".././node_modules/style-loader/dist/runtime/insertBySelector.js",".././node_modules/style-loader/dist/runtime/insertStyleElement.js",".././node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js",".././node_modules/style-loader/dist/runtime/styleDomAPI.js",".././node_modules/style-loader/dist/runtime/styleTagTransform.js",".././src/components/icon/icons/block.svg",".././src/components/icon/icons/calendar.svg",".././src/components/icon/icons/cancel.svg",".././src/components/icon/icons/chat.svg",".././src/components/icon/icons/code-block.svg",".././src/components/icon/icons/copy.svg",".././src/components/icon/icons/cursor-insert.svg",".././src/components/icon/icons/doc.svg",".././src/components/icon/icons/down-open.svg",".././src/components/icon/icons/ellipsis.svg",".././src/components/icon/icons/envelope-send.svg",".././src/components/icon/icons/error.svg",".././src/components/icon/icons/external.svg",".././src/components/icon/icons/eye.svg",".././src/components/icon/icons/info.svg",".././src/components/icon/icons/left-open.svg",".././src/components/icon/icons/light-bulb.svg",".././src/components/icon/icons/link.svg",".././src/components/icon/icons/megaphone.svg",".././src/components/icon/icons/menu.svg",".././src/components/icon/icons/minus.svg",".././src/components/icon/icons/mynah.svg",".././src/components/icon/icons/notification.svg",".././src/components/icon/icons/ok-circled.svg",".././src/components/icon/icons/ok.svg",".././src/components/icon/icons/pause.svg",".././src/components/icon/icons/play.svg",".././src/components/icon/icons/plus.svg",".././src/components/icon/icons/refresh.svg",".././src/components/icon/icons/resize-full.svg",".././src/components/icon/icons/resize-small.svg",".././src/components/icon/icons/revert.svg",".././src/components/icon/icons/right-open.svg",".././src/components/icon/icons/search.svg",".././src/components/icon/icons/star.svg",".././src/components/icon/icons/text-select.svg",".././src/components/icon/icons/thumbs-down.svg",".././src/components/icon/icons/thumbs-up.svg",".././src/components/icon/icons/up-open.svg",".././src/components/icon/icons/user.svg",".././src/components/icon/icons/warning.svg",".././src/components/button.ts",".././src/components/card/card-body.ts",".././src/components/card/card.ts",".././src/components/chat-item/chat-item-card.ts",".././src/components/chat-item/chat-item-followup.ts",".././src/components/chat-item/chat-item-relevance-vote.ts",".././src/components/chat-item/chat-item-source-links.ts",".././src/components/chat-item/chat-item-tree-view-license.ts",".././src/components/chat-item/chat-item-tree-view-wrapper.ts",".././src/components/chat-item/chat-item-tree-view.ts",".././src/components/chat-item/chat-prompt-input-command.ts",".././src/components/chat-item/chat-prompt-input-info.ts",".././src/components/chat-item/chat-prompt-input.ts",".././src/components/chat-item/chat-wrapper.ts",".././src/components/chat-item/prompt-input/code-snippet-widget.ts",".././src/components/chat-item/prompt-input/code-snippet.ts",".././src/components/chat-item/prompt-input/prompt-text-input.ts",".././src/components/chat-item/prompt-input/send-button.ts",".././src/components/collapsible-content.ts",".././src/components/feedback-form/feedback-form-comment.ts",".././src/components/feedback-form/feedback-form.ts",".././src/components/icon.ts",".././src/components/icon/icon-importer.ts",".././src/components/navigation-tabs.ts",".././src/components/notification.ts",".././src/components/overlay.ts",".././src/components/source-link/source-link-body.ts",".././src/components/source-link/source-link-header.ts",".././src/components/source-link/source-link.ts",".././src/components/syntax-highlighter.ts",".././src/components/toggle.ts",".././src/helper/config.ts",".././src/helper/date-time.ts",".././src/helper/dom.ts",".././src/helper/events.ts",".././src/helper/file-tree.ts",".././src/helper/guid.ts",".././src/helper/store.ts",".././src/helper/tabs-store.ts",".././src/helper/url.ts",".././src/static.ts",".././node_modules/unescape-html/index.js",".././node_modules/marked/lib/marked.cjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/nonce",".././src/main.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MynahUI\"] = factory();\n\telse\n\t\troot[\"MynahUI\"] = factory();\n})(self, () => {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--mynah-font-family: var(--vscode-font-family), system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"Amazon Ember\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;font-size:var(--vscode-font-size, 13px);font-family:var(--mynah-font-family, \\\"system-ui\\\");--mynah-max-width: 2560px;--mynah-sizing-base: 0.25rem;--mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);--mynah-sizing-1: var(--mynah-sizing-base);--mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);--mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);--mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);--mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);--mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);--mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);--mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);--mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);--mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);--mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);--mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);--mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);--mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);--mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);--mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);--mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);--mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);--mynah-button-border-width: 1px;--mynah-border-width: 1px;--mynah-color-text-default: var(--vscode-foreground);--mynah-color-text-strong: var(--vscode-input-foreground);--mynah-color-text-weak: var(--vscode-disabledForeground);--mynah-color-text-link: var(--vscode-textLink-foreground);--mynah-color-text-input: var(--vscode-input-foreground);--mynah-color-bg: var(--vscode-sideBar-background);--mynah-color-bg-alt: var(--vscode-editorPane-background, var(--mynah-color-bg));--mynah-color-tab-active: var(--vscode-tab-activeBackground, var(--vscode-editor-background, var(--mynah-card-bg)));--mynah-color-light: rgba(0, 0, 0, 0.05);--mynah-color-deep: var(--vscode-checkbox-background);--mynah-color-deep-reverse: var(--vscode-checkbox-foreground);--mynah-color-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));--mynah-color-input-bg: var(--vscode-input-background);--mynah-color-highlight: rgba(255, 179, 0, 0.25);--mynah-color-highlight-text: #886411;--mynah-color-context-must-contain: #c7ebce;--mynah-color-context-should-contain: var(--vscode-sideBar-background);--mynah-color-context-must-not-contain: #f3cac7;--mynah-color-context-reverse: rgba(0, 0, 0, 0.5);--mynah-color-context-filter: 0.975;--mynah-color-syntax-bg: var(--vscode-terminal-dropBackground);--mynah-color-syntax-variable: var(--vscode-debugTokenExpression-name);--mynah-color-syntax-function: var(--vscode-gitDecoration-modifiedResourceForeground);--mynah-color-syntax-operator: var(--vscode-debugTokenExpression-name);--mynah-color-syntax-attr-value: var(--vscode-debugIcon-stepBackForeground);--mynah-color-syntax-attr: var(--vscode-debugTokenExpression-string);--mynah-color-syntax-property: var(--vscode-terminal-ansiCyan);--mynah-color-syntax-comment: var(--vscode-debugConsole-sourceForeground);--mynah-color-syntax-code: var(--vscode-terminal-ansiBlue);--mynah-syntax-code-font-family: var(--vscode-editor-font-family);--mynah-syntax-code-font-size: var(--vscode-editor-font-size, var(--mynah-font-size-medium));--mynah-color-status-info: var(--vscode-editorInfo-foreground);--mynah-color-status-success: var(--vscode-terminal-ansiGreen);--mynah-color-status-warning: var(--vscode-editorWarning-foreground);--mynah-color-status-error: var(--vscode-editorError-foreground);--mynah-color-button: var(--vscode-button-background);--mynah-color-button-reverse: var(--vscode-button-foreground);--mynah-color-alternate: var(--vscode-button-secondaryBackground);--mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);--mynah-color-code-bg: rgba(0, 0, 0, 0.25);--mynah-color-code-text: var(--vscode-textPreformat-foreground);--mynah-color-main: var(--vscode-button-background);--mynah-color-main-reverse: var(--vscode-button-foreground);--mynah-card-bg: var(--vscode-editor-background);--mynah-shadow-generic: none;--mynah-shadow-card: none;--mynah-shadow-card-more: none;--mynah-shadow-card-active: none;--mynah-shadow-prioritization-menu: none;--mynah-shadow-feedback-form: none;--mynah-font-size-xxsmall: 0.75rem;--mynah-font-size-xsmall: 0.85rem;--mynah-font-size-small: 0.95rem;--mynah-font-size-medium: 1rem;--mynah-font-size-large: 1.125rem;--mynah-font-size-xlarge: 1.175rem;--mynah-card-radius: var(--mynah-sizing-2);--mynah-button-radius: var(--mynah-sizing-1);--mynah-bottom-panel-transition: all 750ms cubic-bezier(0.25, 1, 0, 1);--mynah-xx-short-transition: all 100ms cubic-bezier(0.25, 1, 0, 1);--mynah-very-short-transition: all 500ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-transform: transform 500ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-long-transition: all 620ms cubic-bezier(0.35, 1, 0.15, 1);--mynah-pretty-long-transition: all 700ms cubic-bezier(0.25, 1, 0, 1);--mynah-very-long-transition: all 1500ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition: all 450ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-short-transition-rev: all 480ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-rev-opacity: opacity 650ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-reflection: all 900ms cubic-bezier(0.25, 1, 0, 1), opacity 750ms 400ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo: all 500ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo-bounce: all 600ms cubic-bezier(0.25, 1, 0, 1), transform 700ms cubic-bezier(0.25, 4, 0, 1);--mynah-short-transition-bounce: all 750ms cubic-bezier(0.25, 1, 0, 1), transform 1000ms cubic-bezier(0.15, 1.25, 0, 1);--mynah-text-flow-transition: all 550ms cubic-bezier(0.35, 1.2, 0, 1), transform 550ms cubic-bezier(0.2, 1.05, 0, 1);--mynah-mask-image: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(100% - var(--mynah-sizing-14)), transparent );--mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);--mynah-mask-image-main: linear-gradient( to bottom, transparent, black var(--mynah-sizing-6), black calc(100% - var(--mynah-sizing-6)), transparent );--mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);--mynah-mask-image-skeleton: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(50% - var(--mynah-sizing-14)), transparent );--mynah-policy-group-filter: saturate(0.5) brightness(0.85)}@keyframes horizontal-roll{0%{background-position:0% bottom}100%{background-position:-200% bottom}}@keyframes bounce{from{transform:translate3d(0, 0, 0)}to{transform:translate3d(0, calc(-1 * var(--mynah-sizing-2)), 0)}}@keyframes spinner-spin{to{transform:rotate(360deg)}}@keyframes typewriter{0%{visibility:hidden;opacity:0}1%{visibility:visible;opacity:0}100%{opacity:1;visibility:visible}}@keyframes typewriter-visibility-only{to{visibility:visible}}#mynah-wrapper{display:flex;flex-flow:column nowrap;margin:0 auto;width:100%;max-width:var(--mynah-max-width);box-sizing:border-box;height:100%;position:relative;overflow:hidden;justify-content:stretch;align-items:stretch}#mynah-wrapper>.mynah-ui-tab-contents-wrapper{flex:1;position:relative}button.mynah-button{border:none;min-width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);border-radius:var(--mynah-button-radius);background-color:var(--mynah-color-button);color:var(--mynah-color-button-reverse);box-shadow:var(--mynah-shadow-generic);cursor:pointer;transition:var(--mynah-very-short-transition);display:inline-flex;justify-content:center;align-items:center;outline:none;overflow:hidden;position:relative;transform:translate3d(0, 0, 0) scale(1.00001);padding:0;filter:brightness(0.9);opacity:.85}button.mynah-button.mynah-bottom-block-close-button{position:absolute;align-self:flex-end;transform:translate3d(var(--mynah-sizing-2), calc(-100% - var(--mynah-sizing-6)), 0px);background-color:var(--mynah-card-bg);color:var(--mynah-color-text-default);box-shadow:var(--mynah-shadow-feedback-form)}button.mynah-button[disabled=disabled]{opacity:.25 !important;pointer-events:none}button.mynah-button.mynah-button-secondary{background-color:transparent;color:inherit;box-shadow:none;opacity:.75;height:var(--mynah-sizing-6)}button.mynah-button.mynah-button-secondary:focus-visible,button.mynah-button.mynah-button-secondary:hover{opacity:1}button.mynah-button.mynah-button-secondary:active{box-shadow:none}button.mynah-button:focus-visible,button.mynah-button:hover{filter:brightness(1);opacity:1}button.mynah-button:active{filter:brightness(0.9);opacity:.85}button.mynah-button.mynah-icon-button{width:var(--mynah-sizing-10);height:var(--mynah-sizing-10)}button.mynah-button>.mynah-mutating-next-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-mutating-next-icon>i{font-size:var(--mynah-font-size-xlarge)}button.mynah-button>.mynah-mutating-next-icon>i:nth-child(2){display:none}button.mynah-button>.mynah-search-history-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-search-history-icon>i{font-size:2rem}button.mynah-button>.mynah-search-history-icon>i:nth-child(2){display:none}button.mynah-button.mynah-button-wait{background-color:var(--mynah-color-light);color:var(--mynah-color-text-default);box-shadow:0 5px 10px -10px var(--mynah-color-light);pointer-events:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:first-child{display:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:nth-child(2){display:block}button.mynah-button>span{white-space:nowrap;font-size:var(--mynah-font-size-medium);max-width:35vw;transition:var(--mynah-very-long-transition);overflow:hidden;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;padding-left:var(--mynah-sizing-3);padding-right:var(--mynah-sizing-3)}button.mynah-button>i+span{padding-left:var(--mynah-sizing-base)}.mynah-toggle-container{flex-flow:row nowrap;max-width:100%;overflow:hidden;align-items:center;position:relative;background:var(--mynah-color-context-should-contain);color:var(--mynah-color-context-reverse);justify-content:flex-start;overflow-y:hidden;overflow-x:auto;display:flex}.mynah-toggle-container>span{overflow:hidden;height:100%;min-width:var(--mynah-sizing-8);max-width:calc(3*var(--mynah-sizing-15));flex-shrink:0}.mynah-toggle-container>span>.mynah-toggle-option{display:none}.mynah-toggle-container>span>.mynah-toggle-option:not(:first-child)+.mynah-toggle-option-label{margin-left:calc(-1*var(--mynah-sizing-1))}.mynah-toggle-container>span>.mynah-toggle-option:not(:checked)+.mynah-toggle-option-label.indication:after{content:\\\"\\\";position:absolute;top:50%;margin-top:calc(-1*var(--mynah-sizing-half));left:var(--mynah-sizing-2);height:var(--mynah-sizing-1);width:var(--mynah-sizing-1);background-color:var(--mynah-color-status-success);border-radius:var(--mynah-sizing-1);border:1px solid var(--mynah-color-text-weak);opacity:.75}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label{cursor:pointer;pointer-events:all;position:relative;z-index:100;padding:0 var(--mynah-sizing-3) 0 var(--mynah-sizing-5);height:100%;box-sizing:border-box;display:inline-flex;overflow:hidden;justify-content:stretch;align-items:center;color:var(--mynah-color-text-weak);border-right:1px solid var(--mynah-color-border-default);border-top:1px solid transparent;background-color:var(--mynah-color-bg);opacity:.75;max-width:100%}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label,.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label *{user-select:none}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label>span{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label>.mynah-toggle-close-button{margin-left:var(--mynah-sizing-3);font-size:var(--mynah-font-size-xsmall);min-width:1em}.mynah-toggle-container>span>.mynah-toggle-option:checked+.mynah-toggle-option-label{border-top-color:var(--mynah-color-button);color:var(--mynah-color-text-default);opacity:1;background-color:var(--mynah-color-tab-active)}.mynah-toggle-container>span>.mynah-toggle-option[disabled=disabled]{pointer-events:none !important}.mynah-toggle-container>span>.mynah-toggle-option[disabled=disabled]+.mynah-toggle-option-label{pointer-events:none !important;opacity:.25}.mynah-toggle-container.mynah-toggle-direction-vertical{flex-flow:column nowrap;gap:var(--mynah-sizing-3)}.mynah-toggle-disabled-tooltip-container{max-width:30vw;display:inline-block;padding:var(--mynah-sizing-3);font-size:80%;opacity:.85}.mynah-ui-icon{font-style:normal;font-weight:normal;display:inline-flex;width:1em;height:1em;font-variant:normal;text-transform:none;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;color:inherit;background-color:currentColor}.mynah-ui-icon>span{display:none}.mynah-nav-tabs-wrapper{border-top:var(--mynah-button-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-color-bg);display:flex;align-items:center;overflow:hidden;box-shadow:var(--mynah-shadow-generic);z-index:100;min-height:var(--mynah-sizing-10);max-height:var(--mynah-sizing-10);position:relative}.mynah-nav-tabs-wrapper:after{content:\\\"\\\";position:absolute;left:0;right:0;bottom:0;width:auto;height:var(--mynah-button-border-width);background-color:var(--mynah-color-border-default)}.mynah-nav-tabs-wrapper>.mynah-toggle-container{height:100%;background:none;box-sizing:border-box}.mynah-nav-tabs-wrapper>.mynah-toggle-container>span{white-space:nowrap}.mynah-nav-tabs-wrapper:empty{display:none}.mynah-nav-tabs-wrapper.mynah-nav-tabs-loading,.mynah-nav-tabs-wrapper.mynah-nav-tabs-loading *{pointer-events:none}.mynah-nav-tabs-max-reached-overlay{min-width:max(20vw,100px);max-width:90vw}.mynah-card{text-decoration:none;outline:none;position:relative;transition:var(--mynah-short-transition-rev);box-sizing:border-box;display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-3);transform:translate3d(0, 0, 0);flex:auto 0 0;width:100%;overflow:hidden;border-radius:var(--mynah-card-radius)}.mynah-card.padding-none{padding:0}.mynah-card.padding-small{padding:var(--mynah-sizing-1)}.mynah-card.padding-medium{padding:var(--mynah-sizing-3)}.mynah-card.padding-large{padding:var(--mynah-sizing-5)}.mynah-card.background{background-color:var(--mynah-card-bg)}.mynah-card.border{border:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-card>*{z-index:10;position:relative}.mynah-card>.mynah-source-link-header{display:flex;justify-content:space-between;align-items:center;opacity:1;gap:var(--mynah-sizing-2);transition:var(--mynah-very-short-transition)}.mynah-card>.mynah-source-link-header>.mynah-source-thumbnail{font-style:normal;font-weight:normal;display:none;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);font-variant:normal;text-transform:none;border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:100%;background-size:85%;background-clip:content-box;background-position:center center;background-repeat:no-repeat;align-self:flex-start;box-sizing:border-box;background-color:var(--mynah-card-bg);position:relative;overflow:hidden}.mynah-card>.mynah-source-link-header>.mynah-source-thumbnail:after{content:\\\"\\\";pointer-events:none;box-sizing:border-box;position:absolute;top:0;left:0;right:0;bottom:0;width:auto;height:auto;border:2px solid var(--mynah-card-bg);border-radius:100%}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper{flex:1 1 0;display:flex;flex-flow:column nowrap;align-items:flex-start;gap:var(--mynah-sizing-half);max-width:100%;overflow:hidden;cursor:pointer}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper:hover>.mynah-source-link-title>.mynah-source-link-expand-icon{opacity:.75;align-self:baseline}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-title{font-size:var(--mynah-font-size-medium);font-weight:500;color:var(--mynah-color-text-strong);width:100%;display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-2);white-space:normal;text-overflow:ellipsis;text-decoration:none;outline:none;overflow:hidden}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-title>.mynah-source-link-expand-icon{transition:var(--mynah-short-transition-rev);opacity:0;color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);display:inline;padding:var(--mynah-sizing-1)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url{font-size:var(--mynah-font-size-xsmall);font-weight:300;color:var(--mynah-color-text-link);white-space:nowrap;text-overflow:ellipsis;text-decoration:none;outline:none;overflow:hidden;max-width:100%;position:relative;padding-bottom:var(--mynah-sizing-1);display:inline-block;transition:var(--mynah-short-transition-rev)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url:after{content:\\\"\\\";position:relative;display:block;bottom:0;left:0;width:100%;height:1px;border-radius:var(--mynah-sizing-half);background-color:currentColor;transform:translate3d(-30%, 0, 0);transition:var(--mynah-short-transition-rev);opacity:0}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url:hover:after{transform:translate3d(0, 0, 0);opacity:1}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:not(:last-child):after{content:\\\">\\\";margin-left:var(--mynah-sizing-1);margin-right:var(--mynah-sizing-1)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:nth-child(3)~span:not(:last-child){display:none}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:last-child{font-weight:bold}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:nth-child(3):not(:last-child):after{content:\\\"> ... >\\\"}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block{display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);margin-bottom:var(--mynah-sizing-half)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block:empty{display:none}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item{display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);padding:calc(var(--mynah-sizing-half)*3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:var(--mynah-button-radius);opacity:.75}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-icon{opacity:.5;font-size:var(--mynah-font-size-medium);color:var(--mynah-color-text-weak)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text{font-size:var(--mynah-font-size-xxsmall);color:var(--mynah-color-text-weak)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text::first-letter{text-transform:capitalize}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer{border-color:green;position:relative}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer:before{content:\\\"\\\";border-radius:var(--mynah-button-radius);position:absolute;top:0;left:0;right:0;bottom:0;background-color:green;opacity:.04}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer>.mynah-icon{opacity:1;color:green;border-radius:var(--mynah-button-radius);width:var(--mynah-sizing-3);height:var(--mynah-sizing-3)}.mynah-card>.mynah-card-votes-wrapper{align-items:center;gap:var(--mynah-sizing-2);display:flex;align-items:center;justify-content:flex-end;border-top:1px solid var(--mynah-color-border-default);padding-top:var(--mynah-sizing-3);font-size:var(--mynah-font-size-small)}.mynah-card>.mynah-card-votes-wrapper>span.mynah-feedback-thanks{overflow:hidden}.mynah-card>.mynah-card-votes-wrapper>.mynah-button>span{padding:0;font-size:var(--mynah-font-size-small);color:var(--mynah-color-text-link)}.mynah-card>.mynah-card-votes-wrapper>.mynah-vote-text{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-small)}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote{position:relative;overflow:visible;display:inline-flex;align-items:center;box-sizing:border-box;gap:var(--mynah-sizing-3)}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-radio{display:none}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label{z-index:10;cursor:pointer;font-size:var(--mynah-font-size-small);transition:var(--mynah-short-transition);width:var(--mynah-sizing-5);height:var(--mynah-sizing-5);display:inline-flex;justify-content:center;align-items:center;color:var(--mynah-color-text-weak);opacity:.5}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>*{pointer-events:none}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>i{height:calc(var(--mynah-sizing-6) + var(--mynah-sizing-half))}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-up-radio:checked~.mynah-vote-up{color:var(--mynah-color-text-default);opacity:1}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-down-radio:checked~.mynah-vote-down{color:var(--mynah-color-text-default);opacity:1}.mynah-card-body{flex:1;overflow:hidden;position:relative;display:block}.mynah-card-body a{pointer-events:bounding-box;color:var(--mynah-color-text-link)}.mynah-card-body>*:not(pre){font-size:var(--mynah-font-size-medium)}.mynah-card-body span[start][end]{display:none}.mynah-card-body>p:first-child,.mynah-card-body>p:first-child h1:first-child,.mynah-card-body>p:first-child h2:first-child,.mynah-card-body>p:first-child h3:first-child,.mynah-card-body>p:first-child h4:first-child,.mynah-card-body>p:first-child h5:first-child{margin-top:0}.mynah-card-body>p:first-child:last-of-type,.mynah-card-body>p p:first-child{margin:0}.mynah-card-body>*:not(div):not(pre),.mynah-card-body>div>*:not(div):not(pre){margin-block-start:.75em;margin-block-end:.75em;padding-bottom:1px !important;user-select:text}.mynah-card-body>*:not(div):not(pre):first-child,.mynah-card-body>div>*:not(div):not(pre):first-child{margin-block-start:0}.mynah-card-body>*:not(div):not(pre):empty,.mynah-card-body>div>*:not(div):not(pre):empty{display:none}.mynah-card-body>p:last-of-type,.mynah-card-body>div>p:last-of-type{margin-block-end:0}.mynah-card-body mark[reference-tracker],.mynah-card-body>div mark[reference-tracker]{background-color:var(--mynah-color-highlight);color:inherit;cursor:help}.mynah-card-body .amzn-mynah-search-result-highlight,.mynah-card-body>div .amzn-mynah-search-result-highlight{background-color:var(--mynah-color-highlight);color:var(--mynah-color-highlight-text)}.mynah-card-body .amzn-mynah-search-result-ellipsis,.mynah-card-body>div .amzn-mynah-search-result-ellipsis{display:inline-block;position:relative;padding-left:var(--mynah-sizing-2);margin-top:var(--mynah-sizing-1);margin-bottom:var(--mynah-sizing-1);font-size:calc(1em + var(--mynah-sizing-1)) !important;user-select:none;cursor:default;height:var(--mynah-sizing-7)}.mynah-card-body .amzn-mynah-search-result-ellipsis:before,.mynah-card-body>div .amzn-mynah-search-result-ellipsis:before{pointer-events:none;content:\\\"\\\";width:calc(1em + var(--mynah-sizing-2));height:calc(1em + var(--mynah-sizing-2));position:absolute;left:0;top:0;background-color:currentColor;opacity:.1;border-radius:var(--mynah-sizing-1)}#mynah-feedback-form-wrapper{display:flex;flex-flow:column nowrap;position:absolute;bottom:0;left:var(--mynah-sizing-2);right:var(--mynah-sizing-2);width:auto;box-sizing:border-box;z-index:9999999;opacity:0;transform:translate3d(0, 5vh, 0);transition:var(--mynah-bottom-panel-transition);overflow:visible}#mynah-feedback-form-wrapper:before{transition:all 400ms cubic-bezier(0.25, 0, 0, 1);content:\\\"\\\";position:absolute;right:calc(-1*var(--mynah-sizing-2));bottom:0;left:0;width:100vw;height:100vh;background-color:#000;opacity:0;pointer-events:none;transform:translate3d(0, 0, 0) scale(2);transform-origin:center center;z-index:-1}#mynah-feedback-form-wrapper>.mynah-bottom-block-close-button{transform:translate3d(calc(-1 * var(--mynah-sizing-1)), calc(-100% - var(--mynah-sizing-3)), 0px)}#mynah-feedback-form-wrapper+#mynah-wrapper{transition:var(--mynah-bottom-panel-transition)}#mynah-feedback-form-wrapper:not(.mynah-feedback-form-show),#mynah-feedback-form-wrapper:not(.mynah-feedback-form-show) *{pointer-events:none !important}#mynah-feedback-form-wrapper.mynah-feedback-form-show{opacity:1;transform:translate3d(0, 0, 0)}#mynah-feedback-form-wrapper.mynah-feedback-form-show:before{opacity:.15}#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper{transform:translate3d(0, 0px, 0) scale(0.95);transform-origin:top center;opacity:.25}#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper,#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper *{pointer-events:none !important}.mynah-feedback-form{pointer-events:all;box-sizing:border-box;transition:var(--mynah-short-transition-rev);transform:translate3d(0, 0, 0);display:flex;flex-flow:column;gap:var(--mynah-sizing-4);align-items:stretch;transform-origin:right bottom;z-index:10;position:relative;border:var(--mynah-button-border-width) solid var(--mynah-color-border-default);border-top-right-radius:var(--mynah-card-radius);border-top-left-radius:var(--mynah-card-radius);border-bottom:none;box-shadow:0px -25px 20px -25px rgba(0,0,0,.15);background-color:var(--mynah-color-bg);padding:var(--mynah-sizing-4)}.mynah-feedback-form>.mynah-feedback-form-header{display:flex;box-sizing:border-box;align-items:center;margin-bottom:var(--mynah-sizing-4)}.mynah-feedback-form>.mynah-feedback-form-header>h4{flex:1;margin:0}.mynah-feedback-form>.mynah-feedback-form-comment{background-color:transparent;padding:var(--mynah-sizing-3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);resize:none;width:100%;height:100px;max-height:25vh;border-radius:var(--mynah-sizing-2);font-size:var(--mynah-font-size-small);outline:none;color:var(--mynah-color-text-input);background-color:var(--mynah-card-bg);box-sizing:border-box;font-family:inherit}.mynah-feedback-form>.mynah-feedback-form-select-wrapper{position:relative;display:flex;box-sizing:border-box;padding:var(--mynah-sizing-3);justify-content:flex-end;align-items:center}.mynah-feedback-form>.mynah-feedback-form-select-wrapper>.mynah-feedback-form-select{position:absolute;width:100%;left:0;color:var(--mynah-color-text-default);border-radius:var(--mynah-card-radius);padding:var(--mynah-sizing-3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);-webkit-appearance:none;appearance:none;text-indent:1px;text-overflow:clip;outline:none}.mynah-feedback-form>.mynah-feedback-form-select-wrapper>.mynah-feedback-form-select-handle{color:var(--mynah-color-text-weak);pointer-events:none}.mynah-feedback-form>.mynah-feedback-form-buttons-container{display:flex;justify-content:flex-end;align-items:center;gap:var(--mynah-sizing-1);box-sizing:border-box}.mynah-overlay{position:fixed;left:0;top:0;width:100%;height:100%;overflow:hidden;box-sizing:border-box;pointer-events:none;z-index:1000000}.mynah-overlay.mynah-overlay-dim-outside:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-bg);transition:var(--mynah-short-transition-rev-opacity);opacity:.45}.mynah-overlay>.mynah-overlay-container{--overlayLeftPos: 0;--overlayTopPos: 0;--overlayInnerHorizontalOrigin: left;--overlayInnerVerticalOrigin: top;position:absolute;display:block;overflow:visible;border-radius:var(--mynah-card-radius);transform:translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0)}.mynah-overlay>.mynah-overlay-container .mynah-card,.mynah-overlay>.mynah-overlay-container .mynah-card *{pointer-events:none !important}.mynah-overlay>.mynah-overlay-container .mynah-card .mynah-syntax-highlighter-copy-buttons,.mynah-overlay>.mynah-overlay-container .mynah-card * .mynah-syntax-highlighter-copy-buttons{display:none}.mynah-overlay>.mynah-overlay-container .mynah-card .mynah-syntax-highlighter-copy-buttons~*:last-child,.mynah-overlay>.mynah-overlay-container .mynah-card * .mynah-syntax-highlighter-copy-buttons~*:last-child{margin-bottom:0 !important}.mynah-overlay>.mynah-overlay-container.background:before{content:\\\"\\\";background-color:transparent;transition:var(--mynah-short-transition-rev);position:absolute;top:calc(var(--mynah-button-border-width)*-1);left:calc(var(--mynah-button-border-width)*-1);right:calc(var(--mynah-button-border-width)*-1);bottom:calc(var(--mynah-button-border-width)*-1);width:auto;height:auto;pointer-events:none;box-sizing:border-box;opacity:0;border:var(--mynah-button-border-width) solid var(--mynah-color-border-default);box-shadow:var(--mynah-shadow-prioritization-menu)}.mynah-overlay>.mynah-overlay-container.background:after{content:\\\"\\\";position:absolute;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);left:0;top:0;opacity:0;border:var(--mynah-sizing-4);background-color:var(--mynah-card-bg);border-radius:inherit;transition:var(--mynah-short-transition-rev);transition-delay:20ms}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left{--overlayLeftPos: -100%;--overlayInnerHorizontalOrigin: right}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left:after,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left:after{left:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center{--overlayInnerHorizontalOrigin: center;--overlayLeftPos: -50%}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center:after{left:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top{--overlayTopPos: -100%;--overlayInnerVerticalOrigin: bottom}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top:after,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top:after{top:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center{--overlayInnerVerticalOrigin: center;--overlayTopPos: -50%}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center:after{top:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container{display:inline-block;overflow:hidden;z-index:10;position:relative;transform:translate3d(0, 0, 0) scale(0.85);transform-origin:var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);transition:var(--mynah-short-transition-rev);width:100%}.mynah-overlay>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(0.85);transition:var(--mynah-short-transition-rev)}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container,.mynah-overlay>.mynah-overlay-container:before{opacity:0;transition-delay:0ms}.mynah-overlay:not(.mynah-overlay-open),.mynah-overlay:not(.mynah-overlay-open) *{pointer-events:none !important}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transform:translate3d(0, 0, 0) scale(1)}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(1);transition-delay:50ms;opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transition-delay:20ms}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:after{transition-delay:0ms;left:0;top:0;width:100%;height:100%;opacity:1}.mynah-overlay.mynah-overlay-open.mynah-overlay-close-on-outside-click{pointer-events:all}.mynah-notification{display:inline-flex;flex-flow:row nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);padding:var(--mynah-sizing-5);overflow:hidden;position:relative}.mynah-notification.mynah-notification-clickable{pointer-events:all;cursor:pointer}.mynah-notification>.mynah-ui-icon{font-size:var(--mynah-sizing-6)}.mynah-notification>.mynah-ui-icon-ok-circled{color:var(--mynah-color-status-success)}.mynah-notification>.mynah-ui-icon-info{color:var(--mynah-color-status-info)}.mynah-notification>.mynah-ui-icon-warning{color:var(--mynah-color-status-warning)}.mynah-notification>.mynah-ui-icon-error{color:var(--mynah-color-status-error)}.mynah-notification>.mynah-notification-container{flex:1;max-width:50vw;min-width:200px;display:inline-flex;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);overflow:hidden;position:relative}.mynah-notification>.mynah-notification-container>.mynah-notification-title{margin:0}.mynah-notification>.mynah-notification-container>.mynah-notification-title:empty{display:none}.mynah-notification>.mynah-notification-container>.mynah-notification-content{font-size:var(--mynah-font-size-small);display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:flex-start;gap:var(--mynah-sizing-2)}.mynah-notification>.mynah-notification-container>.mynah-notification-content>.mynah-button{align-self:stretch;background-color:var(--mynah-color-alternate);color:var(--mynah-color-alternate-reverse)}.mynah-syntax-highlighter{display:flex;flex-flow:column nowrap;box-sizing:border-box;overflow:hidden;margin:var(--mynah-sizing-1) 0;background-color:var(--mynah-card-bg);max-width:100%;border:var(--mynah-border-width) solid var(--mynah-color-border-default);position:relative;border-radius:var(--mynah-card-radius);line-height:normal;color:var(--mynah-color-text-default)}.mynah-syntax-highlighter+*:not(:empty){margin-top:var(--mynah-sizing-2)}.mynah-syntax-highlighter:before,.mynah-syntax-highlighter>.line-numbers-rows:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-syntax-bg);opacity:.2;pointer-events:none;user-select:none}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:flex;align-items:center;justify-content:flex-end;padding:var(--mynah-sizing-half);padding-left:var(--mynah-sizing-3);order:256000;box-sizing:border-box;margin:0;margin-block:0 !important;position:relative;border-top:1px solid var(--mynah-color-border-default)}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-border-default);opacity:.25}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons>.mynah-syntax-highlighter-language{flex:1;font-size:var(--mynah-font-size-xsmall);display:inline-block;opacity:.65;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons .mynah-button{min-width:var(--mynah-sizing-6);height:calc(var(--mynah-sizing-6) + var(--mynah-sizing-half))}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons .mynah-button *{font-size:var(--mynah-font-size-xsmall);color:var(--mynah-color-text-strong)}.mynah-syntax-highlighter.mynah-inline-code{display:inline-flex;max-width:100%;line-height:normal;padding:0 !important;margin:0;margin-block-start:0;margin-block-end:0;overflow:visible;border:none;color:var(--mynah-color-syntax-attr);margin-left:2px;margin-right:2px;padding-bottom:1px !important;margin-bottom:-1px;background-color:transparent !important}.mynah-syntax-highlighter.mynah-inline-code>pre{padding:0}.mynah-syntax-highlighter.mynah-inline-code:after{content:\\\"\\\";position:absolute;box-sizing:border-box;top:0;height:100%;left:-2px;width:calc(100% + 4px);border-radius:calc(var(--mynah-card-radius)/2);border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);z-index:-1}.mynah-syntax-highlighter.mynah-inline-code:before{left:-2px;width:calc(100% + 4px);border-radius:calc(var(--mynah-card-radius)/2);box-sizing:border-box}.mynah-syntax-highlighter>pre{padding:var(--mynah-sizing-2);margin:0;overflow-x:auto;overflow-y:hidden;position:relative}.mynah-syntax-highlighter>pre *,.mynah-syntax-highlighter>pre{font-size:var(--mynah-syntax-code-font-size) !important;font-family:var(--mynah-syntax-code-font-family) !important}.mynah-syntax-highlighter>pre>code{color:var(--mynah-color-syntax-code);filter:brightness(0.95);white-space:pre}.mynah-syntax-highlighter>pre>code,.mynah-syntax-highlighter>pre{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;hyphens:none}.mynah-syntax-highlighter>pre>code::selection,.mynah-syntax-highlighter>pre::selection{text-shadow:none;background:#b3d4fc}.mynah-syntax-highlighter>pre .token.comment,.mynah-syntax-highlighter>pre .token.prolog,.mynah-syntax-highlighter>pre .token.doctype,.mynah-syntax-highlighter>pre .token.cdata{color:var(--mynah-color-syntax-comment)}.mynah-syntax-highlighter>pre .token.punctuation{color:currentColor}.mynah-syntax-highlighter>pre .token.namespace{opacity:.7}.mynah-syntax-highlighter>pre .token.property,.mynah-syntax-highlighter>pre .token.tag,.mynah-syntax-highlighter>pre .token.boolean,.mynah-syntax-highlighter>pre .token.number,.mynah-syntax-highlighter>pre .token.constant,.mynah-syntax-highlighter>pre .token.symbol,.mynah-syntax-highlighter>pre .token.deleted{color:var(--mynah-color-syntax-property)}.mynah-syntax-highlighter>pre .token.selector,.mynah-syntax-highlighter>pre .token.attr-name,.mynah-syntax-highlighter>pre .token.string,.mynah-syntax-highlighter>pre .token.char,.mynah-syntax-highlighter>pre .token.builtin,.mynah-syntax-highlighter>pre .token.inserted{color:var(--mynah-color-syntax-attr)}.mynah-syntax-highlighter>pre .token.operator,.mynah-syntax-highlighter>pre .token.entity,.mynah-syntax-highlighter>pre .token.url,.mynah-syntax-highlighter>pre .language-css .token.string,.mynah-syntax-highlighter>pre .style .token.string{color:var(--mynah-color-syntax-operator)}.mynah-syntax-highlighter>pre .token.atrule,.mynah-syntax-highlighter>pre .token.attr-value,.mynah-syntax-highlighter>pre .token.class-name,.mynah-syntax-highlighter>pre .token.keyword{color:var(--mynah-color-syntax-attr-value)}.mynah-syntax-highlighter>pre .token.function{color:var(--mynah-color-syntax-function);font-weight:500}.mynah-syntax-highlighter>pre .token.regex,.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.variable{color:var(--mynah-color-syntax-variable);font-weight:500}.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.bold{font-weight:bold}.mynah-syntax-highlighter>pre .token.italic{font-style:italic}.mynah-syntax-highlighter>pre .token.entity{cursor:help}.mynah-syntax-highlighter>pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber;position:relative}.mynah-syntax-highlighter>.line-numbers-rows{position:absolute;background-color:inherit;top:var(--mynah-sizing-2);font-size:100%;left:0;width:var(--mynah-sizing-12);overflow:hidden;text-overflow:clip;letter-spacing:-1px;border-right:1px solid var(--mynah-color-border-default)}.mynah-syntax-highlighter>.line-numbers-rows>span,.mynah-syntax-highlighter>.line-numbers-rows{pointer-events:none;user-select:none}.mynah-syntax-highlighter>.line-numbers-rows>span{display:block;color:var(--mynah-color-border-default);padding-right:.8em;text-align:right}.mynah-ui-syntax-highlighter-highlight-tooltip{max-width:80vw;min-width:10vw;max-height:80vh;background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);border:var(--mynah-border-width) solid var(--mynah-color-border-default);padding:var(--mynah-sizing-5)}.mynah-ui-syntax-highlighter-highlight-tooltip .mynah-card-body>p:first-child:last-of-type,.mynah-ui-syntax-highlighter-highlight-tooltip .mynah-card-body>p p:first-child{margin:0}.mynah-chat-related-content-preview-wrapper{max-width:80vw;max-height:80vh}.mynah-chat-related-content-preview-wrapper>.mynah-chat-related-content-preview-content{padding:var(--mynah-sizing-3);background-color:var(--mynah-card-bg);border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:var(--mynah-card-radius)}.mynah-chat-prompt-overlay-buttons-container{display:inline-flex;flex-flow:column nowrap;gap:var(--mynah-sizing-2);justify-content:flex-start;align-items:flex-start}.mynah-chat-wrapper{transition:var(--mynah-bottom-panel-transition);position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;flex-flow:column nowrap;overflow:hidden;justify-content:space-around;align-items:stretch;display:none}.mynah-chat-wrapper>div[class^=mynah-chat]{width:100%;max-width:100%;box-sizing:border-box;padding-left:var(--mynah-sizing-4);padding-right:var(--mynah-sizing-4)}.mynah-chat-wrapper:after{transition:all 400ms cubic-bezier(0.25, 0, 0, 1);content:\\\"\\\";position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;background-color:#000;z-index:1000;opacity:0;pointer-events:none;transform:translate3d(0, 0, 0) scale(2);transform-origin:center center}.mynah-chat-wrapper>.mynah-chat-items-container{display:flex;flex:1 1 0%;overflow-x:hidden;overflow-y:auto;flex-flow:column-reverse nowrap;align-items:flex-start;padding:var(--mynah-sizing-4);gap:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card{display:inline-flex;flex-flow:column nowrap;position:relative;max-width:90%;transition:var(--mynah-text-flow-transition);transform:translate3d(0, min(50%, 25vh), 0) scale(0.95, 1.25);opacity:0;transform-origin:center bottom;gap:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.reveal{opacity:1;transform:translate3d(0, 0, 0) scale(1, 1)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-no-content{display:none !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream.typewriter-animating:before{content:\\\"\\\";pointer-events:none;position:absolute;overflow:hidden;border-bottom-right-radius:var(--mynah-card-radius);bottom:0;left:var(--mynah-border-width);right:var(--mynah-border-width);width:auto;height:var(--mynah-sizing-2);box-sizing:border-box;z-index:10;background-image:linear-gradient(90deg, var(--mynah-color-button) 0%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 50%, var(--mynah-color-button) 100%);background-position:0% bottom;background-size:200% var(--mynah-sizing-half);background-repeat:repeat-x;animation:horizontal-roll 1250ms linear infinite both}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream .typewriter-part{visibility:hidden}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card{max-width:100%;width:100%;padding:var(--mynah-sizing-3) 0 var(--mynah-sizing-3) 0;border-top:1px solid var(--mynah-color-border-default);margin-top:var(--mynah-sizing-3);padding-bottom:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-title{font-size:var(--mynah-font-size-large)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>span.invisible{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-code-result{min-width:70%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-card-icon-wrapper{background-color:var(--mynah-color-alternate);color:var(--mynah-color-alternate-reverse);padding:var(--mynah-sizing-2);border-radius:100%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-chat-items-spinner{overflow:visible;z-index:10000;gap:var(--mynah-sizing-2);justify-content:flex-start;align-items:center;transition:var(--mynah-very-short-transition)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-chat-items-spinner>span{position:relative;display:inline-block;width:var(--mynah-sizing-5);height:var(--mynah-sizing-5);border:var(--mynah-sizing-half) solid rgba(0,0,0,0);border-radius:50%;border-top-color:var(--mynah-color-button);animation:spinner-spin 1s ease-in-out infinite;transform-origin:center center;overflow:visible}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-chat-items-spinner>span:before{position:absolute;content:\\\"\\\";top:calc(-1*var(--mynah-sizing-half));left:calc(-1*var(--mynah-sizing-half));right:calc(-1*var(--mynah-sizing-half));bottom:calc(-1*var(--mynah-sizing-half));width:auto;height:auto;aspect-ratio:1;border:var(--mynah-sizing-half) solid var(--mynah-color-button);border-radius:50%;opacity:.15;box-sizing:border-box}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-chat-items-spinner>div{opacity:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body{padding-left:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>.mynah-syntax-highlighter{filter:contrast(1.15) brightness(0.85)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h1:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h2:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h3:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h4:first-child{margin-top:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content{margin-top:var(--mynah-sizing-3);padding-top:var(--mynah-sizing-4);border-top:var(--mynah-button-border-width) solid var(--mynah-color-border-default)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-title{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);margin:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content .mynah-source-link-title{font-size:var(--mynah-font-size-small);font-weight:400}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card :hover::before{box-shadow:var(--mynah-shadow-card) !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question{display:inline-flex;flex-flow:column nowrap;position:relative;gap:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-text{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);font-style:italic}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper{display:inline-flex;flex-flow:row wrap;max-width:100%;gap:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option{padding:var(--mynah-sizing-2);color:var(--mynah-color-text-default);border:var(--mynah-border-width) solid currentColor;border-radius:var(--mynah-card-radius);cursor:pointer;font-size:var(--mynah-font-size-xsmall);max-width:100%;overflow:hidden;display:inline-flex;gap:var(--mynah-sizing-2);align-items:center;user-select:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option *{pointer-events:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-disabled{opacity:.5 !important;cursor:default !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option:not(:hover){opacity:.75}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-success{color:var(--mynah-color-status-success)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-error{color:var(--mynah-color-status-error)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-warning{color:var(--mynah-color-status-warning)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-info{color:var(--mynah-color-status-info)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content{display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-2);overflow:hidden;position:relative}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item{max-width:100%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card{padding:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item .amzn-mynah-search-result-highlight{background-color:inherit;color:inherit}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:not(:nth-of-type(1)){display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:nth-of-type(1){margin-bottom:calc(-1*var(--mynah-sizing-4));pointer-events:none;position:relative;-webkit-mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-12)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-12)), transparent 100%);mask-size:100% 100%;-webkit-mask-image:linear-gradient(to top, transparent var(--mynah-sizing-1), black 70%)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:nth-of-type(2)~.mynah-chat-item-card-related-content-show-more{display:flex}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more{display:none;max-width:80%;z-index:10000;margin-block-start:0;margin-block-end:0;align-self:center;height:var(--mynah-sizing-8);filter:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more>span,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more>i{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt{align-self:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-chat-item-card-icon-wrapper{align-self:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-followup-question,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-followup-question,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content{align-items:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card{box-shadow:0px 0px 5px -5px var(--mynah-color-button);padding:var(--mynah-sizing-4);background-color:var(--mynah-color-button);border-bottom-right-radius:0;border:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card>.mynah-card-body{color:var(--mynah-color-button-reverse)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card{background-color:var(--mynah-color-status-warning)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-empty:empty{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream.mynah-chat-item-empty.stream-ended{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-card{border-bottom-left-radius:0;max-height:100%;flex:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-icon-wrapper{align-self:flex-start}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact{opacity:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header{opacity:1}.mynah-chat-wrapper.loading>.mynah-chat-items-container{padding-bottom:var(--mynah-sizing-14)}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child>.mynah-card{min-width:100px;min-height:var(--mynah-sizing-14)}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child>.mynah-card>.mynah-card-votes-wrapper{display:none}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child.mynah-chat-item-empty .mynah-chat-items-spinner{display:inline-flex}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child.mynah-chat-item-empty .mynah-chat-items-spinner>span{flex:0 0 auto}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child:not(.mynah-chat-item-empty):before{content:\\\"\\\";pointer-events:none;position:absolute;overflow:hidden;border-bottom-right-radius:var(--mynah-card-radius);bottom:0;left:var(--mynah-border-width);right:var(--mynah-border-width);width:auto;height:var(--mynah-sizing-2);box-sizing:border-box;z-index:10;background-image:linear-gradient(90deg, var(--mynah-color-button) 0%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 50%, var(--mynah-color-button) 100%);background-position:0% bottom;background-size:200% var(--mynah-sizing-half);background-repeat:repeat-x;animation:horizontal-roll 1250ms linear infinite both}.mynah-chat-wrapper.loading>.mynah-chat-overflowing-intermediate-block{display:flex;flex-flow:column nowrap;max-height:0;overflow:visible;justify-content:flex-end}.mynah-chat-wrapper.loading>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button{display:inline-flex}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block{display:flex;flex-flow:column nowrap;max-height:0;overflow:visible;justify-content:flex-end;align-items:center;border-bottom:1px solid var(--mynah-color-border-default)}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block.hidden{display:none}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button{margin-bottom:var(--mynah-sizing-2);display:none;min-height:var(--mynah-sizing-8);background-color:var(--mynah-card-bg);padding-left:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button:active{box-shadow:none;filter:none}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button *{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper{display:block;padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt{display:flex;flex-flow:column nowrap;overflow:hidden;box-sizing:border-box;border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper{display:flex;flex-flow:row nowrap;overflow:hidden;box-sizing:border-box;gap:var(--mynah-sizing-1);align-items:flex-start;position:relative;color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper{align-self:flex-start;display:inline-flex;align-items:center;position:relative;gap:var(--mynah-sizing-1);box-sizing:border-box}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper.hidden{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper>.mynah-chat-prompt-input-command-text{user-select:none;cursor:pointer;font-family:var(--mynah-font-family);font-size:var(--mynah-font-size-large);color:var(--mynah-color-text-input);font-weight:bold}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper{display:block;width:100%;position:relative;align-self:center}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input{font-family:var(--mynah-font-family);border:none;resize:none;background-color:rgba(0,0,0,0);font-size:var(--mynah-font-size-large);color:var(--mynah-color-text-input);outline:none;width:100%;max-height:20vh;min-height:1.5rem}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input::placeholder{color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input:not(.mynah-chat-prompt-input-sizer){position:absolute;height:100%;top:0;left:0;padding:0}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input-sizer{display:block;width:100%;opacity:0;visibility:hidden;pointer-events:none;overflow:hidden;white-space:pre-wrap;word-break:break-word}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button{background-color:transparent;width:auto;min-width:0;height:auto;padding-top:1px}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button i{font-size:calc(2*var(--mynah-font-size-xsmall));color:var(--mynah-color-button);height:var(--mynah-sizing-6);padding-left:0}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper.no-text~.mynah-chat-prompt-button:not([disabled]),.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button[disabled]{pointer-events:none;opacity:.25}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper.no-text~.mynah-chat-prompt-button:not([disabled]) i,.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button[disabled] i{color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper:empty{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item{position:relative;display:inline-block;max-width:250px;cursor:pointer}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:after{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;border-radius:var(--mynah-card-radius);opacity:0;transition:var(--mynah-short-transition-rev);z-index:8000;background-color:var(--mynah-color-alternate)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-chat-attachment-delete-icon{color:var(--mynah-color-alternate-reverse);opacity:0;transition:var(--mynah-short-transition-rev);position:absolute;left:50%;top:50%;width:30px;height:30px;margin-left:-15px;margin-top:-15px;z-index:9000}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-chat-attachment-delete-icon>i{width:30px;height:30px}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:hover:after{opacity:.75}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:hover>.mynah-chat-attachment-delete-icon{opacity:1}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card{pointer-events:none !important}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card *{pointer-events:none !important}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card>.mynah-card-body{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper.input-has-focus>.mynah-chat-prompt{border:var(--mynah-border-width) solid var(--mynah-color-button)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt-chars-indicator{width:100%;font-size:var(--mynah-font-size-xsmall);padding-top:var(--mynah-sizing-2);opacity:.5;display:flex;align-items:center;justify-content:flex-end;font-style:italic}.mynah-chat-wrapper>.mynah-chat-prompt-input-info{display:flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;padding:0 var(--mynah-sizing-4) var(--mynah-sizing-2) var(--mynah-sizing-4);font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-prompt-input-info:empty{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-input-info>*{margin:0;margin-block-start:0;margin-block-end:0;margin-top:0;margin-bottom:0}.mynah-chat-command-selector{display:flex;box-sizing:border-box;background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);width:100%;pointer-events:all;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start}.mynah-chat-command-selector>.mynah-chat-command-selector-group{display:flex;box-sizing:border-box;width:100%;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start;padding:var(--mynah-sizing-2)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-group-title{margin:0;color:var(--mynah-color-text-weak);opacity:.75;padding:var(--mynah-sizing-2) var(--mynah-sizing-3)}.mynah-chat-command-selector>.mynah-chat-command-selector-group:not(:last-child){border-bottom:1px solid var(--mynah-color-border-default)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command{display:flex;box-sizing:border-box;width:100%;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;overflow:hidden;cursor:pointer;padding:var(--mynah-sizing-2) var(--mynah-sizing-3);color:var(--mynah-color-text-default);border-radius:var(--mynah-card-radius);transition:var(--mynah-short-transition-rev);gap:var(--mynah-sizing-1)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command{background-color:var(--mynah-color-button)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover *,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command *{color:var(--mynah-color-button-reverse)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command>.mynah-chat-command-selector-command-name{font-family:var(--mynah-font-family);font-size:var(--mynah-font-size-large);font-weight:bold;flex:0 1 0%}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command>.mynah-chat-command-selector-command-description{font-size:var(--mynah-font-size-small);opacity:.75;flex:1 0 100%}.mynah-chat-item-tree-view-wrapper{margin:0;margin-block-end:0 !important;margin-block-start:0 !important}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container{background-color:var(--mynah-card-bg);color:var(--mynah-color-text-default);margin-block-start:0 !important;margin-block-end:0 !important;position:relative;border-radius:var(--mynah-card-radius);border:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;position:relative;padding:var(--mynah-sizing-3);gap:var(--mynah-sizing-3);border-bottom:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title>h4{margin:0}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-border-default);opacity:.25;pointer-events:none}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view{padding:var(--mynah-sizing-3);overflow:hidden;box-sizing:border-box;width:100%;overflow-y:hidden;overflow-x:auto}.mynah-chat-item-tree-view-wrapper-label{border-top-left-radius:var(--mynah-card-radius);border-top-right-radius:var(--mynah-card-radius);background-color:var(--mynah-color-alternate);margin-bottom:0px;padding:var(--mynah-sizing-4)}.mynah-chat-item-tree-view-wrapper-feedback-label{padding-left:var(--mynah-sizing-4)}.mynah-chat-item-tree-view-wrapper-feedback-div{float:right}.mynah-chat-item-tree-view-wrapper-feedback-div button:first-child{margin-right:var(--mynah-sizing-2)}.mynah-chat-item-tree-view-license{color:var(--mynah-color-text-weak)}.mynah-chat-item-tree-view-license:before{content:\\\"\\\";position:absolute;left:0;right:0;top:0;bottom:0;background-color:var(--mynah-color-button);opacity:.07;pointer-events:none}.mynah-chat-item-tree-view-license ul{margin:0;padding-left:var(--mynah-sizing-8)}.mynah-chat-item-tree-view-license ul>li:not(:first-child){margin-top:var(--mynah-sizing-2)}.mynah-chat-item-tree-view-license ul>li .mynah-card-body p{margin:0}.mynah-chat-item-tree-view-license .mynah-chat-item-tree-view-license-dropdown-button>span{max-width:unset}.outer-container{display:flex}.outer-container:not(:empty){margin-top:var(--mynah-sizing-3)}.snippet-card-container.vertical-overflow pre{position:relative;-webkit-mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-16)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-16)), transparent 100%);mask-size:100% 100%}.snippet-card-container{box-sizing:border-box;max-width:100%;max-height:calc(2*var(--mynah-sizing-12))}.snippet-card-container>.mynah-button{position:absolute;background-color:var(--mynah-card-bg) !important;width:var(--mynah-sizing-7) !important;min-width:var(--mynah-sizing-7) !important;max-width:var(--mynah-sizing-7) !important;height:var(--mynah-sizing-7) !important;border-radius:100%;right:calc(-1*var(--mynah-sizing-2));top:calc(-1*var(--mynah-sizing-2));border:var(--mynah-border-width) solid var(--mynah-color-border-default);opacity:1 !important;filter:brightness(0.95)}.snippet-card-container:not(:hover)>.mynah-button{display:none}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter{border:none}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter pre{text-overflow:ellipsis}.mynah-prompt-input-snippet-attachment-overlay{max-width:90vw;max-height:70vh}.mynah-prompt-input-snippet-attachment-overlay>.mynah-card-body>.mynah-syntax-highlighter{max-height:calc(70vh - var(--mynah-sizing-12)) !important}.snippet-card-container,.mynah-prompt-input-snippet-attachment-overlay{position:relative;overflow:visible;width:100%;box-sizing:border-box}.snippet-card-container>.mynah-card-body,.mynah-prompt-input-snippet-attachment-overlay>.mynah-card-body{max-height:100%}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter,.mynah-prompt-input-snippet-attachment-overlay>.mynah-card-body>.mynah-syntax-highlighter{user-select:none;pointer-events:none;margin:0;max-height:100%;overflow:hidden}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons,.mynah-prompt-input-snippet-attachment-overlay>.mynah-card-body>.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:none}.snippet-card-container pre,.mynah-prompt-input-snippet-attachment-overlay pre{text-overflow:ellipsis}.mynah-collapsible-content-wrapper{display:block;box-sizing:border-box;width:100%;overflow:hidden;position:relative}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox{display:none}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label{box-sizing:border-box;display:flex;flex-flow:column nowrap;overflow:hidden;align-items:flex-start;justify-content:stretch;padding:var(--mynah-sizing-2);gap:var(--mynah-sizing-2)}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-title-wrapper{gap:var(--mynah-sizing-2);display:flex;flex-flow:row nowrap;box-sizing:border-box;width:100%;overflow:hidden;justify-content:flex-start;align-items:flex-start;pointer-events:all;cursor:pointer;user-select:none}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-title-wrapper>.mynah-collapsible-content-label-title-text{flex:1;overflow:hidden}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-content-wrapper{overflow:hidden;box-sizing:border-box;width:100%}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox:checked+.mynah-collapsible-content-label>.mynah-collapsible-content-label-content-wrapper{display:none}body,html{background-color:var(--mynah-color-bg);color:var(--mynah-color-text-default);height:100%;width:100%;overflow:hidden;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:600}::-webkit-scrollbar{width:2px;height:2px;opacity:.25}::-webkit-scrollbar:horizontal{width:0px;height:0px}*:focus{outline:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/styles/_variables.scss\",\"webpack://./src/styles/_animations.scss\",\"webpack://./src/styles/components/_main-container.scss\",\"webpack://./src/styles/components/_button.scss\",\"webpack://./src/styles/components/_toggle.scss\",\"webpack://./src/styles/components/_icon.scss\",\"webpack://./src/styles/components/_nav-tabs.scss\",\"webpack://./src/styles/components/card/_card.scss\",\"webpack://./src/styles/components/_source-link-header.scss\",\"webpack://./src/styles/components/_votes-wrapper.scss\",\"webpack://./src/styles/components/card/_card-body.scss\",\"webpack://./src/styles/components/_feedback-form.scss\",\"webpack://./src/styles/components/_overlay.scss\",\"webpack://./src/styles/components/_notification.scss\",\"webpack://./src/styles/components/_syntax-highlighter.scss\",\"webpack://./src/styles/components/chat/_chat-wrapper.scss\",\"webpack://./src/styles/components/chat/_chat-items-container.scss\",\"webpack://./src/styles/components/chat/_chat-items-bottom-animator.scss\",\"webpack://./src/styles/_mixins.scss\",\"webpack://./src/styles/components/chat/_chat-overflowing-intermediate-block.scss\",\"webpack://./src/styles/components/chat/_chat-prompt-wrapper.scss\",\"webpack://./src/styles/components/chat/_chat-command-selector.scss\",\"webpack://./src/styles/components/chat/_chat-item-tree-view.scss\",\"webpack://./src/styles/components/chat/_chat-prompt-code-snippet.scss\",\"webpack://./src/styles/components/_collapsible-content.scss\",\"webpack://./src/styles/styles.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\":root {\\n --mynah-font-family: var(--vscode-font-family), system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\",\\n \\\"Amazon Ember\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;\\n font-size: var(--vscode-font-size, 13px);\\n font-family: var(--mynah-font-family, \\\"system-ui\\\");\\n --mynah-max-width: 2560px;\\n --mynah-sizing-base: 0.25rem;\\n --mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);\\n --mynah-sizing-1: var(--mynah-sizing-base);\\n --mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);\\n --mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);\\n --mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);\\n --mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);\\n --mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);\\n --mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);\\n --mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);\\n --mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);\\n --mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);\\n --mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);\\n --mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);\\n --mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);\\n --mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);\\n --mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);\\n --mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);\\n --mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);\\n --mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);\\n --mynah-button-border-width: 1px;\\n --mynah-border-width: 1px;\\n\\n --mynah-color-text-default: var(--vscode-foreground);\\n --mynah-color-text-strong: var(--vscode-input-foreground);\\n --mynah-color-text-weak: var(--vscode-disabledForeground);\\n --mynah-color-text-link: var(--vscode-textLink-foreground);\\n --mynah-color-text-input: var(--vscode-input-foreground);\\n\\n --mynah-color-bg: var(--vscode-sideBar-background);\\n --mynah-color-bg-alt: var(--vscode-editorPane-background, var(--mynah-color-bg));\\n --mynah-color-tab-active: var(--vscode-tab-activeBackground, var(--vscode-editor-background, var(--mynah-card-bg)));\\n --mynah-color-light: rgba(0, 0, 0, 0.05);\\n\\n --mynah-color-deep: var(--vscode-checkbox-background);\\n --mynah-color-deep-reverse: var(--vscode-checkbox-foreground);\\n --mynah-color-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));\\n --mynah-color-input-bg: var(--vscode-input-background);\\n\\n --mynah-color-highlight: rgba(255, 179, 0, 0.25);\\n --mynah-color-highlight-text: #886411;\\n\\n --mynah-color-context-must-contain: #c7ebce;\\n --mynah-color-context-should-contain: var(--vscode-sideBar-background);\\n --mynah-color-context-must-not-contain: #f3cac7;\\n --mynah-color-context-reverse: rgba(0, 0, 0, 0.5);\\n --mynah-color-context-filter: 0.975;\\n\\n --mynah-color-syntax-bg: var(--vscode-terminal-dropBackground);\\n --mynah-color-syntax-variable: var(--vscode-debugTokenExpression-name);\\n --mynah-color-syntax-function: var(--vscode-gitDecoration-modifiedResourceForeground);\\n --mynah-color-syntax-operator: var(--vscode-debugTokenExpression-name);\\n --mynah-color-syntax-attr-value: var(--vscode-debugIcon-stepBackForeground);\\n --mynah-color-syntax-attr: var(--vscode-debugTokenExpression-string);\\n --mynah-color-syntax-property: var(--vscode-terminal-ansiCyan);\\n --mynah-color-syntax-comment: var(--vscode-debugConsole-sourceForeground);\\n --mynah-color-syntax-code: var(--vscode-terminal-ansiBlue);\\n --mynah-syntax-code-font-family: var(--vscode-editor-font-family);\\n --mynah-syntax-code-font-size: var(--vscode-editor-font-size, var(--mynah-font-size-medium));\\n\\n --mynah-color-status-info: var(--vscode-editorInfo-foreground);\\n --mynah-color-status-success: var(--vscode-terminal-ansiGreen);\\n --mynah-color-status-warning: var(--vscode-editorWarning-foreground);\\n --mynah-color-status-error: var(--vscode-editorError-foreground);\\n\\n --mynah-color-button: var(--vscode-button-background);\\n --mynah-color-button-reverse: var(--vscode-button-foreground);\\n\\n --mynah-color-alternate: var(--vscode-button-secondaryBackground);\\n --mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);\\n\\n --mynah-color-code-bg: rgba(0, 0, 0, 0.25);\\n --mynah-color-code-text: var(--vscode-textPreformat-foreground);\\n\\n --mynah-color-main: var(--vscode-button-background);\\n --mynah-color-main-reverse: var(--vscode-button-foreground);\\n\\n --mynah-card-bg: var(--vscode-editor-background);\\n\\n --mynah-shadow-generic: none; //0 5px 10px -10px rgba(0, 0, 0, 0.25);\\n --mynah-shadow-card: none; //0 10px 20px -15px rgba(0, 0, 0, 0.25);\\n --mynah-shadow-card-more: none; //0 10px 20px -10px rgba(0, 0, 0, 0.5);\\n --mynah-shadow-card-active: none; //0 10px 20px -10px rgba(0, 0, 0, 0.5);\\n --mynah-shadow-prioritization-menu: none; //0 10px 20px -10px #e7e7e7;\\n --mynah-shadow-feedback-form: none; //0 0px 40px 0px var(--mynah-color-bg);\\n\\n --mynah-font-size-xxsmall: 0.75rem;\\n --mynah-font-size-xsmall: 0.85rem;\\n --mynah-font-size-small: 0.95rem;\\n --mynah-font-size-medium: 1rem;\\n --mynah-font-size-large: 1.125rem;\\n --mynah-font-size-xlarge: 1.175rem;\\n\\n --mynah-card-radius: var(--mynah-sizing-2);\\n --mynah-button-radius: var(--mynah-sizing-1);\\n\\n --mynah-bottom-panel-transition: all 750ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-xx-short-transition: all 100ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-very-short-transition: all 500ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-transform: transform 500ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-long-transition: all 620ms cubic-bezier(0.35, 1, 0.15, 1);\\n --mynah-pretty-long-transition: all 700ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-very-long-transition: all 1500ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition: all 450ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-short-transition-rev: all 480ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-rev-opacity: opacity 650ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-reflection: all 900ms cubic-bezier(0.25, 1, 0, 1),\\n opacity 750ms 400ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo: all 500ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo-bounce: all 600ms cubic-bezier(0.25, 1, 0, 1),\\n transform 700ms cubic-bezier(0.25, 4, 0, 1);\\n --mynah-short-transition-bounce: all 750ms cubic-bezier(0.25, 1, 0, 1),\\n transform 1000ms cubic-bezier(0.15, 1.25, 0, 1);\\n --mynah-text-flow-transition: all 550ms cubic-bezier(0.35, 1.2, 0, 1),\\n transform 550ms cubic-bezier(0.2, 1.05, 0, 1);\\n\\n --mynah-mask-image: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(100% - var(--mynah-sizing-14)),\\n transparent\\n );\\n --mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);\\n --mynah-mask-image-main: linear-gradient(\\n to bottom,\\n transparent,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent\\n );\\n --mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);\\n\\n --mynah-mask-image-skeleton: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(50% - var(--mynah-sizing-14)),\\n transparent\\n );\\n\\n --mynah-policy-group-filter: saturate(0.5) brightness(0.85);\\n}\\n\",\"@keyframes horizontal-roll {\\n 0% {\\n background-position: 0% bottom;\\n }\\n 100% {\\n background-position: -200% bottom;\\n }\\n}\\n\\n@keyframes bounce {\\n from {\\n transform: translate3d(0, 0, 0);\\n }\\n to {\\n transform: translate3d(0, calc(-1 * var(--mynah-sizing-2)), 0);\\n }\\n}\\n\\n@keyframes spinner-spin {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes typewriter {\\n 0% {\\n visibility: hidden;\\n opacity: 0;\\n }\\n 1% {\\n visibility: visible;\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n visibility: visible;\\n }\\n}\\n@keyframes typewriter-visibility-only {\\n to {\\n visibility: visible;\\n }\\n}\\n\",\"$smoothbezier: cubic-bezier(0.25, 0, 0, 1);\\n$smoothduration: 400ms;\\n#mynah-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n margin: 0 auto;\\n width: 100%;\\n max-width: var(--mynah-max-width);\\n box-sizing: border-box;\\n height: 100%;\\n position: relative;\\n overflow: hidden;\\n justify-content: stretch;\\n align-items: stretch;\\n\\n > .mynah-ui-tab-contents-wrapper {\\n flex: 1;\\n position: relative;\\n }\\n}\\n\",\"button.mynah-button {\\n border: none;\\n min-width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n border-radius: var(--mynah-button-radius);\\n background-color: var(--mynah-color-button);\\n color: var(--mynah-color-button-reverse);\\n box-shadow: var(--mynah-shadow-generic);\\n cursor: pointer;\\n transition: var(--mynah-very-short-transition);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n outline: none;\\n overflow: hidden;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(1.00001);\\n padding: 0;\\n filter: brightness(0.9);\\n opacity: 0.85;\\n &.mynah-bottom-block-close-button {\\n position: absolute;\\n align-self: flex-end;\\n transform: translate3d(var(--mynah-sizing-2), calc(-100% - var(--mynah-sizing-6)), 0px);\\n background-color: var(--mynah-card-bg);\\n color: var(--mynah-color-text-default);\\n box-shadow: var(--mynah-shadow-feedback-form);\\n }\\n &[disabled=\\\"disabled\\\"] {\\n opacity: 0.25 !important;\\n pointer-events: none;\\n }\\n &.mynah-button-secondary {\\n background-color: transparent;\\n color: inherit;\\n box-shadow: none;\\n opacity: 0.75;\\n height: var(--mynah-sizing-6);\\n &:focus-visible,\\n &:hover {\\n opacity: 1;\\n }\\n &:active {\\n box-shadow: none;\\n }\\n }\\n &:focus-visible,\\n &:hover {\\n filter: brightness(1);\\n opacity: 1;\\n }\\n &:active {\\n filter: brightness(0.9);\\n opacity: 0.85;\\n }\\n &.mynah-icon-button {\\n width: var(--mynah-sizing-10);\\n height: var(--mynah-sizing-10);\\n }\\n > .mynah-mutating-next-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: var(--mynah-font-size-xlarge);\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n > .mynah-search-history-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: 2rem;\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n &.mynah-button-wait {\\n background-color: var(--mynah-color-light);\\n color: var(--mynah-color-text-default);\\n box-shadow: 0 5px 10px -10px var(--mynah-color-light);\\n pointer-events: none;\\n > .mynah-mutating-next-icon > i {\\n &:first-child {\\n display: none;\\n }\\n &:nth-child(2) {\\n display: block;\\n }\\n }\\n }\\n > span {\\n white-space: nowrap;\\n font-size: var(--mynah-font-size-medium);\\n max-width: 35vw;\\n transition: var(--mynah-very-long-transition);\\n overflow: hidden;\\n box-sizing: border-box;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-left: var(--mynah-sizing-3);\\n padding-right: var(--mynah-sizing-3);\\n }\\n > i + span {\\n padding-left: var(--mynah-sizing-base);\\n }\\n}\\n\",\".mynah-toggle-container {\\n flex-flow: row nowrap;\\n max-width: 100%;\\n overflow: hidden;\\n align-items: center;\\n position: relative;\\n background: var(--mynah-color-context-should-contain);\\n color: var(--mynah-color-context-reverse);\\n justify-content: flex-start;\\n overflow-y: hidden;\\n overflow-x: auto;\\n display: flex;\\n > span {\\n overflow: hidden;\\n height: 100%;\\n min-width: var(--mynah-sizing-8);\\n max-width: calc(3 * var(--mynah-sizing-15));\\n flex-shrink: 0;\\n > .mynah-toggle-option {\\n display: none;\\n &:not(:first-child) + .mynah-toggle-option-label {\\n margin-left: calc(-1 * var(--mynah-sizing-1));\\n }\\n &:not(:checked) + .mynah-toggle-option-label {\\n &.indication:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 50%;\\n margin-top: calc(-1 * var(--mynah-sizing-half));\\n left: var(--mynah-sizing-2);\\n height: var(--mynah-sizing-1);\\n width: var(--mynah-sizing-1);\\n background-color: var(--mynah-color-status-success);\\n border-radius: var(--mynah-sizing-1);\\n border: 1px solid var(--mynah-color-text-weak);\\n opacity: 0.75;\\n }\\n }\\n & + .mynah-toggle-option-label {\\n cursor: pointer;\\n pointer-events: all;\\n position: relative;\\n z-index: 100;\\n padding: 0 var(--mynah-sizing-3) 0 var(--mynah-sizing-5);\\n height: 100%;\\n box-sizing: border-box;\\n display: inline-flex;\\n overflow: hidden;\\n justify-content: stretch;\\n align-items: center;\\n color: var(--mynah-color-text-weak);\\n border-right: 1px solid var(--mynah-color-border-default);\\n border-top: 1px solid transparent;\\n background-color: var(--mynah-color-bg);\\n opacity: 0.75;\\n max-width: 100%;\\n &,\\n & * {\\n user-select: none;\\n }\\n > span {\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 100%;\\n display: block;\\n }\\n > .mynah-toggle-close-button {\\n margin-left: var(--mynah-sizing-3);\\n font-size: var(--mynah-font-size-xsmall);\\n min-width: 1em;\\n }\\n }\\n &:checked + .mynah-toggle-option-label {\\n border-top-color: var(--mynah-color-button);\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n background-color: var(--mynah-color-tab-active);\\n }\\n &[disabled=\\\"disabled\\\"] {\\n pointer-events: none !important;\\n & + .mynah-toggle-option-label {\\n pointer-events: none !important;\\n opacity: 0.25;\\n }\\n }\\n }\\n }\\n\\n &.mynah-toggle-direction-vertical {\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n }\\n}\\n\\n.mynah-toggle-disabled-tooltip-container {\\n max-width: 30vw;\\n display: inline-block;\\n padding: var(--mynah-sizing-3);\\n font-size: 80%;\\n opacity: 0.85;\\n}\\n\",\".mynah-ui-icon {\\n font-style: normal;\\n font-weight: normal;\\n display: inline-flex;\\n width: 1em;\\n height: 1em;\\n font-variant: normal;\\n text-transform: none;\\n -webkit-mask-size: 100%;\\n mask-size: 100%;\\n -webkit-mask-position: center center;\\n mask-position: center center;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n color: inherit;\\n background-color: currentColor;\\n > span {\\n display: none;\\n }\\n}\\n\",\".mynah-nav-tabs-wrapper {\\n border-top: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-color-bg);\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n box-shadow: var(--mynah-shadow-generic);\\n z-index: 100;\\n min-height: var(--mynah-sizing-10);\\n max-height: var(--mynah-sizing-10);\\n position: relative;\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: var(--mynah-button-border-width);\\n background-color: var(--mynah-color-border-default);\\n }\\n\\n > .mynah-toggle-container {\\n height: 100%;\\n background: none;\\n box-sizing: border-box;\\n > span {\\n white-space: nowrap;\\n }\\n }\\n &:empty {\\n display: none;\\n }\\n\\n &.mynah-nav-tabs-loading,\\n &.mynah-nav-tabs-loading * {\\n pointer-events: none;\\n }\\n}\\n\\n.mynah-nav-tabs-max-reached-overlay {\\n min-width: max(20vw, 100px);\\n max-width: 90vw;\\n}\\n\",\".mynah-card {\\n text-decoration: none;\\n outline: none;\\n position: relative;\\n transition: var(--mynah-short-transition-rev);\\n box-sizing: border-box;\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n transform: translate3d(0, 0, 0);\\n flex: auto 0 0;\\n width: 100%;\\n overflow: hidden;\\n border-radius: var(--mynah-card-radius);\\n\\n &.padding {\\n &-none {\\n padding: 0;\\n }\\n &-small {\\n padding: var(--mynah-sizing-1);\\n }\\n &-medium {\\n padding: var(--mynah-sizing-3);\\n }\\n &-large {\\n padding: var(--mynah-sizing-5);\\n }\\n }\\n &.background {\\n background-color: var(--mynah-card-bg);\\n }\\n &.border {\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n }\\n\\n > * {\\n z-index: 10;\\n position: relative;\\n }\\n\\n @import '../source-link-header';\\n @import '../votes-wrapper';\\n}\\n\\n@import 'card-body';\\n\",\"> .mynah-source-link-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n opacity: 1;\\n gap: var(--mynah-sizing-2);\\n transition: var(--mynah-very-short-transition);\\n > .mynah-source-thumbnail {\\n font-style: normal;\\n font-weight: normal;\\n display: none;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n font-variant: normal;\\n text-transform: none;\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: 100%;\\n background-size: 85%;\\n background-clip: content-box;\\n background-position: center center;\\n background-repeat: no-repeat;\\n align-self: flex-start;\\n box-sizing: border-box;\\n background-color: var(--mynah-card-bg);\\n position: relative;\\n overflow: hidden;\\n &:after {\\n content: \\\"\\\";\\n pointer-events: none;\\n box-sizing: border-box;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: auto;\\n border: 2px solid var(--mynah-card-bg);\\n border-radius: 100%;\\n }\\n }\\n > .mynah-source-link-title-wrapper {\\n flex: 1 1 0;\\n display: flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-half);\\n max-width: 100%;\\n overflow: hidden;\\n cursor: pointer;\\n &:hover > .mynah-source-link-title > .mynah-source-link-expand-icon {\\n opacity: 0.75;\\n align-self: baseline;\\n }\\n > .mynah-source-link-title {\\n font-size: var(--mynah-font-size-medium);\\n font-weight: 500;\\n color: var(--mynah-color-text-strong);\\n width: 100%;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-2);\\n white-space: normal;\\n text-overflow: ellipsis;\\n text-decoration: none;\\n outline: none;\\n overflow: hidden;\\n > .mynah-source-link-expand-icon {\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n display: inline;\\n padding: var(--mynah-sizing-1);\\n }\\n }\\n > .mynah-source-link-url {\\n font-size: var(--mynah-font-size-xsmall);\\n font-weight: 300;\\n color: var(--mynah-color-text-link);\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n text-decoration: none;\\n outline: none;\\n overflow: hidden;\\n max-width: 100%;\\n position: relative;\\n padding-bottom: var(--mynah-sizing-1);\\n display: inline-block;\\n transition: var(--mynah-short-transition-rev);\\n &:after {\\n content: \\\"\\\";\\n position: relative;\\n display: block;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 1px;\\n border-radius: var(--mynah-sizing-half);\\n background-color: currentColor;\\n transform: translate3d(-30%, 0, 0);\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n }\\n &:hover {\\n &:after {\\n transform: translate3d(0, 0, 0);\\n opacity: 1;\\n }\\n }\\n > span {\\n &:not(:last-child):after {\\n content: \\\">\\\";\\n margin-left: var(--mynah-sizing-1);\\n margin-right: var(--mynah-sizing-1);\\n }\\n &:nth-child(3) ~ span:not(:last-child) {\\n display: none;\\n }\\n &:last-child {\\n font-weight: bold;\\n }\\n &:nth-child(3):not(:last-child):after {\\n content: \\\"> ... >\\\";\\n }\\n }\\n }\\n > .mynah-title-meta-block {\\n display: flex;\\n flex-flow: row wrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n margin-bottom: var(--mynah-sizing-half);\\n &:empty {\\n display: none;\\n }\\n > .mynah-title-meta-block-item {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n padding: calc(var(--mynah-sizing-half) * 3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-button-radius);\\n opacity: 0.75;\\n > .mynah-icon {\\n opacity: 0.5;\\n font-size: var(--mynah-font-size-medium);\\n color: var(--mynah-color-text-weak);\\n }\\n > .mynah-title-meta-block-item-text {\\n font-size: var(--mynah-font-size-xxsmall);\\n color: var(--mynah-color-text-weak);\\n &::first-letter {\\n text-transform: capitalize;\\n }\\n }\\n &.approved-answer {\\n border-color: green;\\n position: relative;\\n &:before {\\n content: \\\"\\\";\\n border-radius: var(--mynah-button-radius);\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: green;\\n opacity: 0.04;\\n }\\n > .mynah-icon {\\n opacity: 1;\\n color: green;\\n border-radius: var(--mynah-button-radius);\\n width: var(--mynah-sizing-3);\\n height: var(--mynah-sizing-3);\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"> .mynah-card-votes-wrapper {\\n align-items: center;\\n gap: var(--mynah-sizing-2);\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n border-top: 1px solid var(--mynah-color-border-default);\\n padding-top: var(--mynah-sizing-3);\\n font-size: var(--mynah-font-size-small);\\n > span.mynah-feedback-thanks {\\n overflow: hidden;\\n }\\n > .mynah-button > span {\\n padding: 0;\\n font-size: var(--mynah-font-size-small);\\n color: var(--mynah-color-text-link);\\n }\\n > .mynah-vote-text {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-small);\\n }\\n > .mynah-card-vote {\\n position: relative;\\n overflow: visible;\\n display: inline-flex;\\n align-items: center;\\n box-sizing: border-box;\\n gap: var(--mynah-sizing-3);\\n > .mynah-vote-radio {\\n display: none;\\n }\\n > .mynah-vote-label {\\n z-index: 10;\\n cursor: pointer;\\n font-size: var(--mynah-font-size-small);\\n transition: var(--mynah-short-transition);\\n width: var(--mynah-sizing-5);\\n height: var(--mynah-sizing-5);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n color: var(--mynah-color-text-weak);\\n opacity: 0.5;\\n > * {\\n pointer-events: none;\\n }\\n > i {\\n height: calc(var(--mynah-sizing-6) + var(--mynah-sizing-half));\\n }\\n }\\n > .mynah-vote-up-radio:checked {\\n & ~ .mynah-vote-up {\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n }\\n }\\n > .mynah-vote-down-radio:checked {\\n & ~ .mynah-vote-down {\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n }\\n }\\n }\\n}\\n\",\".mynah-card-body {\\n flex: 1;\\n overflow: hidden;\\n position: relative;\\n display: block;\\n\\n a {\\n pointer-events: bounding-box;\\n color: var(--mynah-color-text-link);\\n }\\n\\n > *:not(pre) {\\n font-size: var(--mynah-font-size-medium);\\n }\\n span[start][end] {\\n display: none;\\n }\\n > p:first-child {\\n &,\\n & h1:first-child,\\n & h2:first-child,\\n & h3:first-child,\\n & h4:first-child,\\n & h5:first-child {\\n margin-top: 0;\\n }\\n }\\n > p:first-child:last-of-type,\\n > p p:first-child {\\n margin: 0;\\n }\\n &,\\n & > div {\\n > *:not(div):not(pre) {\\n margin-block-start: 0.75em;\\n margin-block-end: 0.75em;\\n padding-bottom: 1px !important;\\n &:first-child {\\n margin-block-start: 0;\\n }\\n user-select: text;\\n &:empty {\\n display: none;\\n }\\n }\\n > p:last-of-type {\\n margin-block-end: 0;\\n }\\n mark[reference-tracker] {\\n background-color: var(--mynah-color-highlight);\\n color: inherit;\\n cursor: help;\\n }\\n .amzn-mynah-search-result-highlight {\\n background-color: var(--mynah-color-highlight);\\n color: var(--mynah-color-highlight-text);\\n }\\n .amzn-mynah-search-result-ellipsis {\\n display: inline-block;\\n position: relative;\\n padding-left: var(--mynah-sizing-2);\\n margin-top: var(--mynah-sizing-1);\\n margin-bottom: var(--mynah-sizing-1);\\n font-size: calc(1em + var(--mynah-sizing-1)) !important;\\n user-select: none;\\n cursor: default;\\n height: var(--mynah-sizing-7);\\n\\n &:before {\\n pointer-events: none;\\n content: \\\"\\\";\\n width: calc(1em + var(--mynah-sizing-2));\\n height: calc(1em + var(--mynah-sizing-2));\\n position: absolute;\\n left: 0;\\n top: 0;\\n background-color: currentColor;\\n opacity: 0.1;\\n border-radius: var(--mynah-sizing-1);\\n }\\n }\\n }\\n}\\n\",\"#mynah-feedback-form-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n position: absolute;\\n bottom: 0;\\n left: var(--mynah-sizing-2);\\n right: var(--mynah-sizing-2);\\n width: auto;\\n box-sizing: border-box;\\n z-index: 9999999;\\n opacity: 0;\\n transform: translate3d(0, 5vh, 0);\\n transition: var(--mynah-bottom-panel-transition);\\n overflow: visible;\\n &:before {\\n transition: all 400ms cubic-bezier(0.25, 0, 0, 1);\\n content: \\\"\\\";\\n position: absolute;\\n right: calc(-1 * var(--mynah-sizing-2));\\n bottom: 0;\\n left: 0;\\n width: 100vw;\\n height: 100vh;\\n background-color: black;\\n opacity: 0;\\n pointer-events: none;\\n transform: translate3d(0, 0, 0) scale(2);\\n transform-origin: center center;\\n z-index: -1;\\n }\\n > .mynah-bottom-block-close-button {\\n transform: translate3d(calc(-1 * var(--mynah-sizing-1)), calc(-100% - var(--mynah-sizing-3)), 0px);\\n }\\n & + #mynah-wrapper {\\n transition: var(--mynah-bottom-panel-transition);\\n }\\n &:not(.mynah-feedback-form-show) {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n &.mynah-feedback-form-show {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n &:before {\\n opacity: 0.15;\\n }\\n & + #mynah-wrapper {\\n transform: translate3d(0, 0px, 0) scale(0.95);\\n transform-origin: top center;\\n opacity: 0.25;\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n }\\n}\\n\\n.mynah-feedback-form {\\n pointer-events: all;\\n box-sizing: border-box;\\n transition: var(--mynah-short-transition-rev);\\n transform: translate3d(0, 0, 0);\\n display: flex;\\n flex-flow: column;\\n gap: var(--mynah-sizing-4);\\n align-items: stretch;\\n transform-origin: right bottom;\\n z-index: 10;\\n position: relative;\\n border: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n border-top-right-radius: var(--mynah-card-radius);\\n border-top-left-radius: var(--mynah-card-radius);\\n border-bottom: none;\\n box-shadow: 0px -25px 20px -25px rgba(0, 0, 0, 0.15);\\n background-color: var(--mynah-color-bg);\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-feedback-form-header {\\n display: flex;\\n box-sizing: border-box;\\n align-items: center;\\n margin-bottom: var(--mynah-sizing-4);\\n > h4 {\\n flex: 1;\\n margin: 0;\\n }\\n }\\n\\n > .mynah-feedback-form-comment {\\n background-color: transparent;\\n padding: var(--mynah-sizing-3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n resize: none;\\n width: 100%;\\n height: 100px;\\n max-height: 25vh;\\n border-radius: var(--mynah-sizing-2);\\n font-size: var(--mynah-font-size-small);\\n outline: none;\\n color: var(--mynah-color-text-input);\\n background-color: var(--mynah-card-bg);\\n box-sizing: border-box;\\n font-family: inherit;\\n }\\n\\n > .mynah-feedback-form-select-wrapper {\\n position: relative;\\n display: flex;\\n box-sizing: border-box;\\n padding: var(--mynah-sizing-3);\\n justify-content: flex-end;\\n align-items: center;\\n > .mynah-feedback-form-select {\\n position: absolute;\\n width: 100%;\\n left: 0;\\n color: var(--mynah-color-text-default);\\n border-radius: var(--mynah-card-radius);\\n padding: var(--mynah-sizing-3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n -webkit-appearance: none;\\n appearance: none;\\n text-indent: 1px;\\n text-overflow: clip;\\n outline: none;\\n }\\n > .mynah-feedback-form-select-handle {\\n color: var(--mynah-color-text-weak);\\n pointer-events: none;\\n }\\n }\\n\\n > .mynah-feedback-form-buttons-container {\\n display: flex;\\n justify-content: flex-end;\\n align-items: center;\\n gap: var(--mynah-sizing-1);\\n box-sizing: border-box;\\n }\\n}\\n\",\".mynah-overlay {\\n position: fixed;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n box-sizing: border-box;\\n pointer-events: none;\\n z-index: 1000000;\\n &.mynah-overlay-dim-outside {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-bg);\\n transition: var(--mynah-short-transition-rev-opacity);\\n opacity: 0.45;\\n }\\n }\\n > .mynah-overlay-container {\\n --overlayLeftPos: 0;\\n --overlayTopPos: 0;\\n --overlayInnerHorizontalOrigin: left;\\n --overlayInnerVerticalOrigin: top;\\n position: absolute;\\n display: block;\\n overflow: visible;\\n border-radius: var(--mynah-card-radius);\\n\\n .mynah-card,\\n .mynah-card * {\\n pointer-events: none !important;\\n .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n & ~ *:last-child {\\n margin-bottom: 0 !important;\\n }\\n }\\n }\\n\\n &.background {\\n &:before {\\n content: \\\"\\\";\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: calc(var(--mynah-button-border-width) * -1);\\n left: calc(var(--mynah-button-border-width) * -1);\\n right: calc(var(--mynah-button-border-width) * -1);\\n bottom: calc(var(--mynah-button-border-width) * -1);\\n width: auto;\\n height: auto;\\n pointer-events: none;\\n box-sizing: border-box;\\n opacity: 0;\\n border: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n box-shadow: var(--mynah-shadow-prioritization-menu);\\n }\\n\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n left: 0;\\n top: 0;\\n opacity: 0;\\n border: var(--mynah-sizing-4);\\n background-color: var(--mynah-card-bg);\\n border-radius: inherit;\\n transition: var(--mynah-short-transition-rev);\\n transition-delay: 20ms;\\n }\\n }\\n\\n &.horizontal-direction {\\n &-to-left,\\n &-from-end-to-left {\\n --overlayLeftPos: -100%;\\n --overlayInnerHorizontalOrigin: right;\\n &:after {\\n left: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerHorizontalOrigin: center;\\n --overlayLeftPos: -50%;\\n &:after {\\n left: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n &.vertical-direction {\\n &-to-top,\\n &-from-end-to-top {\\n --overlayTopPos: -100%;\\n --overlayInnerVerticalOrigin: bottom;\\n &:after {\\n top: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerVerticalOrigin: center;\\n --overlayTopPos: -50%;\\n &:after {\\n top: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n\\n > .mynah-overlay-inner-container {\\n display: inline-block;\\n overflow: hidden;\\n z-index: 10;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transform-origin: var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);\\n transition: var(--mynah-short-transition-rev);\\n width: 100%;\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transition: var(--mynah-short-transition-rev);\\n }\\n > .mynah-overlay-inner-container,\\n &:before {\\n opacity: 0;\\n transition-delay: 0ms;\\n }\\n\\n transform: translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0);\\n }\\n &:not(.mynah-overlay-open) {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n\\n &.mynah-overlay-open {\\n > .mynah-overlay-container {\\n > .mynah-overlay-inner-container {\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(1);\\n transition-delay: 50ms;\\n opacity: 1;\\n }\\n > .mynah-overlay-inner-container {\\n transition-delay: 20ms;\\n }\\n > .mynah-overlay-inner-container {\\n opacity: 1;\\n }\\n &:after {\\n transition-delay: 0ms;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 1;\\n }\\n }\\n &.mynah-overlay-close-on-outside-click {\\n pointer-events: all;\\n }\\n }\\n}\\n\",\".mynah-notification {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n padding: var(--mynah-sizing-5);\\n overflow: hidden;\\n position: relative;\\n &.mynah-notification-clickable {\\n pointer-events: all;\\n cursor: pointer;\\n }\\n > .mynah-ui-icon {\\n font-size: var(--mynah-sizing-6);\\n &- {\\n &ok-circled {\\n color: var(--mynah-color-status-success);\\n }\\n &info {\\n color: var(--mynah-color-status-info);\\n }\\n &warning {\\n color: var(--mynah-color-status-warning);\\n }\\n &error {\\n color: var(--mynah-color-status-error);\\n }\\n }\\n }\\n > .mynah-notification-container {\\n flex: 1;\\n max-width: 50vw;\\n min-width: 200px;\\n display: inline-flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n overflow: hidden;\\n position: relative;\\n > .mynah-notification-title {\\n margin: 0;\\n &:empty {\\n display: none;\\n }\\n }\\n > .mynah-notification-content {\\n font-size: var(--mynah-font-size-small);\\n display: flex;\\n flex-flow: column nowrap;\\n justify-content: flex-start;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-2);\\n > .mynah-button {\\n align-self: stretch;\\n background-color: var(--mynah-color-alternate);\\n color: var(--mynah-color-alternate-reverse);\\n }\\n }\\n }\\n}\\n\",\".mynah-syntax-highlighter {\\n display: flex;\\n flex-flow: column nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n margin: var(--mynah-sizing-1) 0;\\n background-color: var(--mynah-card-bg);\\n max-width: 100%;\\n & + *:not(:empty) {\\n margin-top: var(--mynah-sizing-2);\\n }\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n position: relative;\\n border-radius: var(--mynah-card-radius);\\n line-height: normal;\\n color: var(--mynah-color-text-default);\\n &:before,\\n & > .line-numbers-rows:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-syntax-bg);\\n opacity: 0.2;\\n pointer-events: none;\\n user-select: none;\\n }\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n padding: var(--mynah-sizing-half);\\n padding-left: var(--mynah-sizing-3);\\n order: 256000;\\n box-sizing: border-box;\\n margin: 0;\\n margin-block: 0 !important;\\n position: relative;\\n border-top: 1px solid var(--mynah-color-border-default);\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-border-default);\\n opacity: 0.25;\\n }\\n > .mynah-syntax-highlighter-language {\\n flex: 1;\\n font-size: var(--mynah-font-size-xsmall);\\n display: inline-block;\\n opacity: 0.65;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n .mynah-button {\\n min-width: var(--mynah-sizing-6);\\n height: calc(var(--mynah-sizing-6) + var(--mynah-sizing-half));\\n * {\\n font-size: var(--mynah-font-size-xsmall);\\n color: var(--mynah-color-text-strong);\\n }\\n }\\n }\\n &.mynah-inline-code {\\n display: inline-flex;\\n max-width: 100%;\\n line-height: normal;\\n padding: 0 !important;\\n margin: 0;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n overflow: visible;\\n border: none;\\n color: var(--mynah-color-syntax-attr);\\n margin-left: 2px;\\n margin-right: 2px;\\n padding-bottom: 1px !important;\\n margin-bottom: -1px;\\n background-color: transparent !important;\\n > pre {\\n padding: 0;\\n }\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n box-sizing: border-box;\\n top: 0;\\n height: 100%;\\n left: -2px;\\n width: calc(100% + 4px);\\n border-radius: calc(var(--mynah-card-radius) / 2);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n z-index: -1;\\n }\\n &:before {\\n left: -2px;\\n width: calc(100% + 4px);\\n border-radius: calc(var(--mynah-card-radius) / 2);\\n box-sizing: border-box;\\n }\\n }\\n > pre {\\n padding: var(--mynah-sizing-2);\\n margin: 0;\\n overflow-x: auto;\\n overflow-y: hidden;\\n position: relative;\\n\\n *,\\n & {\\n font-size: var(--mynah-syntax-code-font-size) !important;\\n font-family: var(--mynah-syntax-code-font-family) !important;\\n }\\n > code {\\n color: var(--mynah-color-syntax-code);\\n filter: brightness(0.95);\\n white-space: pre;\\n }\\n\\n > code,\\n & {\\n text-align: left;\\n white-space: pre;\\n word-spacing: normal;\\n word-break: normal;\\n word-wrap: normal;\\n tab-size: 4;\\n hyphens: none;\\n }\\n > code::selection,\\n &::selection {\\n text-shadow: none;\\n background: #b3d4fc;\\n }\\n\\n .token.comment,\\n .token.prolog,\\n .token.doctype,\\n .token.cdata {\\n color: var(--mynah-color-syntax-comment);\\n }\\n\\n .token.punctuation {\\n color: currentColor;\\n }\\n\\n .token.namespace {\\n opacity: 0.7;\\n }\\n\\n .token.property,\\n .token.tag,\\n .token.boolean,\\n .token.number,\\n .token.constant,\\n .token.symbol,\\n .token.deleted {\\n color: var(--mynah-color-syntax-property);\\n }\\n\\n .token.selector,\\n .token.attr-name,\\n .token.string,\\n .token.char,\\n .token.builtin,\\n .token.inserted {\\n color: var(--mynah-color-syntax-attr);\\n }\\n\\n .token.operator,\\n .token.entity,\\n .token.url,\\n .language-css .token.string,\\n .style .token.string {\\n color: var(--mynah-color-syntax-operator);\\n }\\n\\n .token.atrule,\\n .token.attr-value,\\n .token.class-name,\\n .token.keyword {\\n color: var(--mynah-color-syntax-attr-value);\\n }\\n\\n .token.function {\\n color: var(--mynah-color-syntax-function);\\n font-weight: 500;\\n }\\n \\n .token.regex,\\n .token.important,\\n .token.variable {\\n color: var(--mynah-color-syntax-variable);\\n font-weight: 500;\\n }\\n\\n .token.important,\\n .token.bold {\\n font-weight: bold;\\n }\\n .token.italic {\\n font-style: italic;\\n }\\n\\n .token.entity {\\n cursor: help;\\n }\\n\\n &.line-numbers {\\n position: relative;\\n padding-left: 3.8em;\\n counter-reset: linenumber;\\n position: relative;\\n }\\n }\\n > .line-numbers-rows {\\n position: absolute;\\n background-color: inherit;\\n > span,\\n & {\\n pointer-events: none;\\n user-select: none;\\n }\\n top: var(--mynah-sizing-2);\\n font-size: 100%;\\n left: 0;\\n width: var(--mynah-sizing-12);\\n overflow: hidden;\\n text-overflow: clip;\\n letter-spacing: -1px;\\n border-right: 1px solid var(--mynah-color-border-default);\\n\\n > span {\\n display: block;\\n color: var(--mynah-color-border-default);\\n padding-right: 0.8em;\\n text-align: right;\\n }\\n }\\n}\\n\\n.mynah-ui-syntax-highlighter-highlight-tooltip {\\n max-width: 80vw;\\n min-width: 10vw;\\n max-height: 80vh;\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n padding: var(--mynah-sizing-5);\\n .mynah-card-body {\\n > p:first-child:last-of-type,\\n > p p:first-child {\\n margin: 0;\\n }\\n }\\n}\\n\",\".mynah-chat-related-content-preview-wrapper {\\n max-width: 80vw;\\n max-height: 80vh;\\n > .mynah-chat-related-content-preview-content {\\n padding: var(--mynah-sizing-3);\\n background-color: var(--mynah-card-bg);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-card-radius);\\n }\\n}\\n.mynah-chat-prompt-overlay-buttons-container {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-2);\\n justify-content: flex-start;\\n align-items: flex-start;\\n}\\n.mynah-chat-wrapper {\\n transition: var(--mynah-bottom-panel-transition);\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n justify-content: space-around;\\n align-items: stretch;\\n display: none;\\n > div[class^=\\\"mynah-chat\\\"] {\\n width: 100%;\\n max-width: 100%;\\n box-sizing: border-box;\\n padding-left: var(--mynah-sizing-4);\\n padding-right: var(--mynah-sizing-4);\\n }\\n &:after {\\n transition: all $smoothduration $smoothbezier;\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n background-color: black;\\n z-index: 1000;\\n opacity: 0;\\n pointer-events: none;\\n transform: translate3d(0, 0, 0) scale(2);\\n transform-origin: center center;\\n }\\n\\n @import \\\"chat-items-container\\\";\\n @import \\\"chat-overflowing-intermediate-block\\\";\\n @import \\\"chat-prompt-wrapper\\\";\\n}\\n\\n@import 'chat-command-selector';\\n@import \\\"chat-item-tree-view\\\";\\n@import \\\"chat-prompt-code-snippet\\\";\\n\",\"> .mynah-chat-items-container {\\n display: flex;\\n flex: 1 1 0%;\\n overflow-x: hidden;\\n overflow-y: auto;\\n flex-flow: column-reverse nowrap;\\n align-items: flex-start;\\n padding: var(--mynah-sizing-4);\\n gap: var(--mynah-sizing-4);\\n .mynah-chat-item-card {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n position: relative;\\n max-width: 90%;\\n transition: var(--mynah-text-flow-transition);\\n transform: translate3d(0, min(50%, 25vh), 0) scale(0.95, 1.25);\\n opacity: 0;\\n transform-origin: center bottom;\\n gap: var(--mynah-sizing-4);\\n &.reveal {\\n opacity: 1;\\n transform: translate3d(0, 0, 0) scale(1, 1);\\n }\\n &.mynah-chat-item-no-content {\\n display: none !important;\\n }\\n\\n &.mynah-chat-item-answer-stream {\\n &.typewriter-animating {\\n @import \\\"chat-items-bottom-animator\\\";\\n }\\n .typewriter-part {\\n visibility: hidden;\\n }\\n }\\n\\n .mynah-chat-item-card {\\n max-width: 100%;\\n width: 100%;\\n padding: var(--mynah-sizing-3) 0 var(--mynah-sizing-3) 0;\\n border-top: 1px solid var(--mynah-color-border-default);\\n margin-top: var(--mynah-sizing-3);\\n padding-bottom: 0;\\n .mynah-chat-item-card-related-content > .mynah-chat-item-card-related-content-title {\\n font-size: var(--mynah-font-size-large);\\n }\\n }\\n\\n > span.invisible {\\n display: none;\\n }\\n\\n &.mynah-chat-item-code-result {\\n min-width: 70%;\\n }\\n > .mynah-chat-item-card-icon-wrapper {\\n background-color: var(--mynah-color-alternate);\\n color: var(--mynah-color-alternate-reverse);\\n padding: var(--mynah-sizing-2);\\n border-radius: 100%;\\n }\\n > .mynah-card {\\n > .mynah-chat-items-spinner {\\n overflow: visible;\\n z-index: 10000;\\n gap: var(--mynah-sizing-2);\\n justify-content: flex-start;\\n align-items: center;\\n transition: var(--mynah-very-short-transition);\\n > span {\\n position: relative;\\n display: inline-block;\\n width: var(--mynah-sizing-5);\\n height: var(--mynah-sizing-5);\\n border: var(--mynah-sizing-half) solid rgba(0, 0, 0, 0);\\n border-radius: 50%;\\n border-top-color: var(--mynah-color-button);\\n animation: spinner-spin 1s ease-in-out infinite;\\n transform-origin: center center;\\n overflow: visible;\\n &:before {\\n position: absolute;\\n content: \\\"\\\";\\n top: calc(-1 * var(--mynah-sizing-half));\\n left: calc(-1 * var(--mynah-sizing-half));\\n right: calc(-1 * var(--mynah-sizing-half));\\n bottom: calc(-1 * var(--mynah-sizing-half));\\n width: auto;\\n height: auto;\\n aspect-ratio: 1; // Just to make sure that the spinner is a circle\\n border: var(--mynah-sizing-half) solid var(--mynah-color-button);\\n border-radius: 50%;\\n opacity: 0.15;\\n box-sizing: border-box;\\n }\\n }\\n > div {\\n opacity: 1;\\n }\\n }\\n > .mynah-card-body {\\n & > div {\\n > .mynah-syntax-highlighter {\\n filter: contrast(1.15) brightness(0.85);\\n }\\n > h1,\\n > h2,\\n > h3,\\n > h4 {\\n &:first-child {\\n margin-top: 0;\\n }\\n }\\n }\\n > .mynah-chat-item-card-related-content {\\n margin-top: var(--mynah-sizing-3);\\n padding-top: var(--mynah-sizing-4);\\n border-top: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n > .mynah-chat-item-card-related-content-title {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n margin: 0;\\n }\\n .mynah-source-link-title {\\n font-size: var(--mynah-font-size-small);\\n font-weight: 400;\\n }\\n }\\n padding-left: 0;\\n }\\n :hover::before {\\n box-shadow: var(--mynah-shadow-card) !important;\\n }\\n }\\n\\n > .mynah-chat-item-followup-question {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n position: relative;\\n gap: var(--mynah-sizing-2);\\n > .mynah-chat-item-followup-question-text {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n font-style: italic;\\n }\\n > .mynah-chat-item-followup-question-options-wrapper {\\n display: inline-flex;\\n flex-flow: row wrap;\\n max-width: 100%;\\n gap: var(--mynah-sizing-2);\\n > .mynah-chat-item-followup-question-option {\\n padding: var(--mynah-sizing-2);\\n color: var(--mynah-color-text-default);\\n border: var(--mynah-border-width) solid currentColor;\\n border-radius: var(--mynah-card-radius);\\n cursor: pointer;\\n font-size: var(--mynah-font-size-xsmall);\\n max-width: 100%;\\n overflow: hidden;\\n display: inline-flex;\\n gap: var(--mynah-sizing-2);\\n align-items: center;\\n user-select: none;\\n * {\\n pointer-events: none;\\n }\\n &-disabled {\\n opacity: 0.5 !important;\\n cursor: default !important;\\n }\\n &:not(:hover) {\\n opacity: 0.75;\\n }\\n &-status {\\n &-success {\\n color: var(--mynah-color-status-success);\\n }\\n &-error {\\n color: var(--mynah-color-status-error);\\n }\\n &-warning {\\n color: var(--mynah-color-status-warning);\\n }\\n &-info {\\n color: var(--mynah-color-status-info);\\n }\\n }\\n }\\n }\\n }\\n\\n .mynah-chat-item-card-related-content {\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-2);\\n overflow: hidden;\\n position: relative;\\n > .mynah-chat-item-card-related-content-item {\\n max-width: 100%;\\n > .mynah-card {\\n padding: 0;\\n }\\n .amzn-mynah-search-result-highlight {\\n background-color: inherit;\\n color: inherit;\\n }\\n }\\n &:not(.expanded) {\\n > .mynah-chat-item-card-related-content-item {\\n $maxItems: 1;\\n $selector: \\\"&\\\";\\n @for $i from 1 through $maxItems {\\n $selector: #{$selector} + \\\":not(:nth-of-type(\\\" + #{$i} + \\\"))\\\";\\n }\\n #{$selector} {\\n display: none;\\n }\\n &:nth-of-type(#{$maxItems}) {\\n margin-bottom: calc(-1 * var(--mynah-sizing-4));\\n pointer-events: none;\\n @include list-fader-bottom(var(--mynah-sizing-12));\\n -webkit-mask-image: linear-gradient(to top, transparent var(--mynah-sizing-1), black 70%);\\n }\\n &:nth-of-type(#{$maxItems + 1}) {\\n & ~ .mynah-chat-item-card-related-content-show-more {\\n display: flex;\\n }\\n }\\n }\\n }\\n\\n > .mynah-chat-item-card-related-content-show-more {\\n display: none;\\n max-width: 80%;\\n z-index: 10000;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n align-self: center;\\n height: var(--mynah-sizing-8);\\n filter: none;\\n > span,\\n > i {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n }\\n }\\n &.mynah-chat-item-system-prompt,\\n &.mynah-chat-item-prompt {\\n align-self: flex-end;\\n > .mynah-chat-item-card-icon-wrapper {\\n align-self: flex-end;\\n }\\n .mynah-chat-item-followup-question,\\n .mynah-chat-item-card-related-content {\\n align-items: flex-end;\\n }\\n\\n .mynah-syntax-highlighter {\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n }\\n }\\n\\n .mynah-chat-item-card-related-content > .mynah-card,\\n > .mynah-card {\\n box-shadow: 0px 0px 5px -5px var(--mynah-color-button);\\n padding: var(--mynah-sizing-4);\\n background-color: var(--mynah-color-button);\\n border-bottom-right-radius: 0;\\n border: none;\\n &,\\n > .mynah-card-body {\\n color: var(--mynah-color-button-reverse);\\n }\\n }\\n }\\n &.mynah-chat-item-system-prompt {\\n > .mynah-card {\\n background-color: var(--mynah-color-status-warning);\\n }\\n }\\n\\n &.mynah-chat-item-empty:empty {\\n display: none;\\n }\\n &.mynah-chat-item-answer-stream.mynah-chat-item-empty.stream-ended {\\n display: none;\\n }\\n &.mynah-chat-item-answer,\\n &.mynah-chat-item-answer-stream {\\n > .mynah-card {\\n border-bottom-left-radius: 0;\\n max-height: 100%;\\n flex: 1;\\n }\\n }\\n &.mynah-chat-item-ai-prompt,\\n &.mynah-chat-item-answer,\\n &.mynah-chat-item-answer-stream {\\n > .mynah-chat-item-card-icon-wrapper {\\n align-self: flex-start;\\n }\\n > .mynah-chat-item-card-related-content {\\n > .mynah-chat-item-card-related-content-item > .mynah-card-compact {\\n opacity: 1;\\n > .mynah-source-link-header {\\n opacity: 1;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n&.loading {\\n > .mynah-chat-items-container {\\n padding-bottom: var(--mynah-sizing-14);\\n > .mynah-chat-item-card.mynah-chat-item-answer-stream {\\n &:first-child {\\n > .mynah-card {\\n min-width: 100px;\\n min-height: var(--mynah-sizing-14);\\n > .mynah-card-votes-wrapper {\\n display: none;\\n }\\n }\\n &.mynah-chat-item-empty {\\n .mynah-chat-items-spinner {\\n display: inline-flex;\\n > span {\\n // Spinner's size should remain the same\\n flex: 0 0 auto;\\n }\\n }\\n }\\n &:not(.mynah-chat-item-empty) {\\n @import \\\"chat-items-bottom-animator\\\";\\n }\\n }\\n }\\n }\\n}\\n\",\"&:before {\\n content: \\\"\\\";\\n pointer-events: none;\\n position: absolute;\\n overflow: hidden;\\n border-bottom-right-radius: var(--mynah-card-radius);\\n bottom: 0; // calc(var(--mynah-sizing-6) + var(--mynah-border-width));\\n left: var(--mynah-border-width);\\n right: var(--mynah-border-width);\\n width: auto;\\n height: var(--mynah-sizing-2);\\n box-sizing: border-box;\\n z-index: 10;\\n background-image: linear-gradient(\\n 90deg,\\n var(--mynah-color-button) 0%,\\n rgba(255, 255, 255, 0) 25%,\\n rgba(255, 255, 255, 0) 50%,\\n var(--mynah-color-button) 100%\\n );\\n background-position: 0% bottom;\\n background-size: 200% var(--mynah-sizing-half);\\n background-repeat: repeat-x;\\n animation: horizontal-roll 1250ms linear infinite both;\\n}\",\"@mixin background-shadow {\\n overflow: visible;\\n &:before {\\n content: \\\"\\\";\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: inherit;\\n box-shadow: var(--mynah-shadow-card);\\n pointer-events: none;\\n filter: brightness(50%) saturate(250%) contrast(250%);\\n opacity: 0.4;\\n }\\n}\\n\\n@mixin lighten-darken {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n backdrop-filter: brightness(var(--mynah-color-context-filter));\\n }\\n}\\n\\n@mixin list-fader {\\n position: relative;\\n $listFader: linear-gradient(\\n to bottom,\\n transparent 0%,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n\\n@mixin list-fader-bottom($height: var(--mynah-sizing-6)) {\\n position: relative;\\n $listFader: linear-gradient(\\n to bottom,\\n black 30%,\\n black calc(100% - $height),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n@mixin list-fader-right($height: var(--mynah-sizing-6)) {\\n position: relative;\\n $listFader: linear-gradient(\\n to right,\\n black 30%,\\n black calc(100% - $height),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n\\n@mixin context-pill-group-background {\\n &:after,\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 2;\\n border-radius: calc(var(--mynah-button-radius) * 3 / 2);\\n border: var(--mynah-border-width) solid transparent;\\n }\\n &:after {\\n background-color: var(--mynah-card-bg);\\n z-index: 1;\\n }\\n}\\n\\n@mixin chatMode {\\n &[mode=\\\"chat\\\"] {\\n @content;\\n }\\n}\\n\",\"&.loading {\\n > .mynah-chat-overflowing-intermediate-block {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 0;\\n overflow: visible;\\n justify-content: flex-end;\\n > .mynah-chat-stop-chat-response-button {\\n display: inline-flex;\\n }\\n }\\n}\\n> .mynah-chat-overflowing-intermediate-block {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 0;\\n overflow: visible;\\n justify-content: flex-end;\\n align-items: center;\\n border-bottom: 1px solid var(--mynah-color-border-default);\\n &.hidden {\\n display: none;\\n }\\n > .mynah-chat-stop-chat-response-button {\\n margin-bottom: var(--mynah-sizing-2);\\n display: none;\\n min-height: var(--mynah-sizing-8);\\n background-color: var(--mynah-card-bg);\\n padding-left: var(--mynah-sizing-2);\\n &:active {\\n box-shadow: none;\\n filter: none;\\n }\\n * {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n }\\n}\\n\",\"> .mynah-chat-prompt-wrapper {\\n display: block;\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-chat-prompt {\\n display: flex;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n box-sizing: border-box;\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-chat-prompt-input-wrapper {\\n display: flex;\\n flex-flow: row nowrap;\\n overflow: hidden;\\n box-sizing: border-box;\\n gap: var(--mynah-sizing-1);\\n align-items: flex-start;\\n position: relative;\\n color: var(--mynah-color-text-weak);\\n > .mynah-chat-prompt-input-command-wrapper {\\n align-self: flex-start;\\n display: inline-flex;\\n align-items: center;\\n position: relative;\\n gap: var(--mynah-sizing-1);\\n box-sizing: border-box;\\n &.hidden {\\n display: none;\\n }\\n > .mynah-chat-prompt-input-command-text {\\n user-select: none;\\n cursor: pointer;\\n font-family: var(--mynah-font-family);\\n font-size: var(--mynah-font-size-large);\\n color: var(--mynah-color-text-input);\\n font-weight: bold;\\n }\\n }\\n > .mynah-chat-prompt-input-inner-wrapper {\\n display: block;\\n width: 100%;\\n position: relative;\\n align-self: center;\\n > .mynah-chat-prompt-input {\\n font-family: var(--mynah-font-family);\\n border: none;\\n resize: none;\\n background-color: rgba(0, 0, 0, 0);\\n font-size: var(--mynah-font-size-large);\\n color: var(--mynah-color-text-input);\\n outline: none;\\n width: 100%;\\n max-height: 20vh;\\n min-height: 1.5rem;\\n &::placeholder {\\n color: var(--mynah-color-text-weak);\\n }\\n &:not(.mynah-chat-prompt-input-sizer) {\\n position: absolute;\\n height: 100%;\\n top: 0;\\n left: 0;\\n padding: 0;\\n }\\n }\\n > .mynah-chat-prompt-input-sizer {\\n display: block;\\n width: 100%;\\n opacity: 0;\\n visibility: hidden;\\n pointer-events: none;\\n overflow: hidden;\\n white-space: pre-wrap;\\n word-break: break-word;\\n }\\n & ~ .mynah-chat-prompt-button {\\n background-color: transparent;\\n width: auto;\\n min-width: 0;\\n height: auto;\\n padding-top: 1px;\\n i {\\n font-size: calc(2 * var(--mynah-font-size-xsmall));\\n color: var(--mynah-color-button);\\n height: var(--mynah-sizing-6);\\n padding-left: 0;\\n }\\n }\\n &.no-text ~ .mynah-chat-prompt-button:not([disabled]),\\n & ~ .mynah-chat-prompt-button[disabled] {\\n pointer-events: none;\\n opacity: 0.25;\\n i {\\n color: var(--mynah-color-text-weak);\\n }\\n }\\n }\\n }\\n > .mynah-chat-prompt-attachment-wrapper {\\n &:empty {\\n display: none;\\n }\\n > .mynah-chat-attachment-item {\\n position: relative;\\n display: inline-block;\\n max-width: 250px;\\n cursor: pointer;\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: var(--mynah-card-radius);\\n opacity: 0;\\n transition: var(--mynah-short-transition-rev);\\n z-index: 8000;\\n background-color: var(--mynah-color-alternate);\\n }\\n > .mynah-chat-attachment-delete-icon {\\n color: var(--mynah-color-alternate-reverse);\\n opacity: 0;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n width: 30px;\\n height: 30px;\\n margin-left: -15px;\\n margin-top: -15px;\\n z-index: 9000;\\n > i {\\n width: 30px;\\n height: 30px;\\n }\\n }\\n &:hover {\\n &:after {\\n opacity: 0.75;\\n }\\n > .mynah-chat-attachment-delete-icon {\\n opacity: 1;\\n }\\n }\\n > .mynah-card {\\n pointer-events: none !important;\\n * {\\n pointer-events: none !important;\\n }\\n > .mynah-card-body {\\n display: none;\\n }\\n }\\n }\\n }\\n }\\n &.input-has-focus > .mynah-chat-prompt {\\n border: var(--mynah-border-width) solid var(--mynah-color-button);\\n }\\n\\n > .mynah-chat-prompt-chars-indicator {\\n width: 100%;\\n font-size: var(--mynah-font-size-xsmall);\\n padding-top: var(--mynah-sizing-2);\\n opacity: 0.5;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n font-style: italic;\\n }\\n}\\n\\n> .mynah-chat-prompt-input-info {\\n display: flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n padding: 0 var(--mynah-sizing-4) var(--mynah-sizing-2) var(--mynah-sizing-4);\\n font-size: var(--mynah-font-size-xsmall);\\n &:empty {\\n display: none;\\n }\\n > * {\\n margin: 0;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n }\\n}\\n\",\".mynah-chat-command-selector {\\n display: flex;\\n box-sizing: border-box;\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n width: 100%;\\n pointer-events: all;\\n flex-flow: column nowrap;\\n align-items: stretch;\\n justify-content: flex-start;\\n > .mynah-chat-command-selector-group {\\n display: flex;\\n box-sizing: border-box;\\n width: 100%;\\n flex-flow: column nowrap;\\n align-items: stretch;\\n justify-content: flex-start;\\n padding: var(--mynah-sizing-2);\\n > .mynah-chat-command-selector-group-title {\\n margin: 0;\\n color: var(--mynah-color-text-weak);\\n opacity: 0.75;\\n padding: var(--mynah-sizing-2) var(--mynah-sizing-3);\\n }\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid var(--mynah-color-border-default);\\n }\\n\\n > .mynah-chat-command-selector-command {\\n display: flex;\\n box-sizing: border-box;\\n width: 100%;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n overflow: hidden;\\n cursor: pointer;\\n padding: var(--mynah-sizing-2) var(--mynah-sizing-3);\\n color: var(--mynah-color-text-default);\\n border-radius: var(--mynah-card-radius);\\n transition: var(--mynah-short-transition-rev);\\n gap: var(--mynah-sizing-1);\\n &:hover,\\n &.target-command {\\n background-color: var(--mynah-color-button);\\n &,\\n & * {\\n color: var(--mynah-color-button-reverse);\\n }\\n }\\n > .mynah-chat-command-selector-command-name {\\n font-family: var(--mynah-font-family);\\n font-size: var(--mynah-font-size-large);\\n font-weight: bold;\\n flex: 0 1 0%;\\n }\\n > .mynah-chat-command-selector-command-description {\\n font-size: var(--mynah-font-size-small);\\n opacity: 0.75;\\n flex: 1 0 100%;\\n }\\n }\\n }\\n}\\n\",\".mynah-chat-item-tree-view-wrapper {\\n margin: 0;\\n margin-block-end: 0 !important;\\n margin-block-start: 0 !important;\\n > .mynah-chat-item-tree-view-wrapper-container {\\n background-color: var(--mynah-card-bg);\\n color: var(--mynah-color-text-default);\\n margin-block-start: 0 !important;\\n margin-block-end: 0 !important;\\n position: relative;\\n border-radius: var(--mynah-card-radius);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n > .mynah-chat-item-tree-view-wrapper-title {\\n display: flex;\\n flex-flow: row nowrap;\\n justify-content: flex-start;\\n align-items: center;\\n position: relative;\\n padding: var(--mynah-sizing-3);\\n gap: var(--mynah-sizing-3);\\n border-bottom: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n > h4 {\\n margin: 0;\\n }\\n\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-border-default);\\n opacity: 0.25;\\n pointer-events: none;\\n }\\n }\\n > .mynah-chat-item-tree-view {\\n padding: var(--mynah-sizing-3);\\n overflow: hidden;\\n box-sizing: border-box;\\n width: 100%;\\n overflow-y: hidden;\\n overflow-x: auto;\\n }\\n }\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-label {\\n border-top-left-radius: var(--mynah-card-radius);\\n border-top-right-radius: var(--mynah-card-radius);\\n background-color: var(--mynah-color-alternate);\\n margin-bottom: 0px;\\n padding: var(--mynah-sizing-4);\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-feedback-label {\\n padding-left: var(--mynah-sizing-4);\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-feedback-div {\\n float: right;\\n\\n button:first-child {\\n margin-right: var(--mynah-sizing-2);\\n }\\n}\\n\\n.mynah-chat-item-tree-view-license {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n background-color: var(--mynah-color-button);\\n opacity: 0.07;\\n pointer-events: none;\\n }\\n\\n color: var(--mynah-color-text-weak);\\n\\n ul {\\n margin: 0;\\n padding-left: var(--mynah-sizing-8);\\n > li {\\n &:not(:first-child) {\\n margin-top: var(--mynah-sizing-2);\\n }\\n .mynah-card-body p {\\n margin: 0;\\n }\\n }\\n }\\n\\n .mynah-chat-item-tree-view-license-dropdown-button > span {\\n max-width: unset;\\n }\\n}\\n\",\".outer-container {\\n display: flex;\\n &:not(:empty) {\\n margin-top: var(--mynah-sizing-3);\\n }\\n}\\n\\n.snippet-card-container.vertical-overflow {\\n & pre {\\n // Show fading effect at the bottom when overflowing\\n @include list-fader-bottom(var(--mynah-sizing-16));\\n }\\n}\\n\\n.snippet-card-container {\\n box-sizing: border-box;\\n max-width: 100%;\\n max-height: calc(2 * var(--mynah-sizing-12));\\n > .mynah-button {\\n position: absolute;\\n background-color: var(--mynah-card-bg) !important;\\n width: var(--mynah-sizing-7) !important;\\n min-width: var(--mynah-sizing-7) !important;\\n max-width: var(--mynah-sizing-7) !important;\\n height: var(--mynah-sizing-7) !important;\\n border-radius: 100%;\\n right: calc(-1 * var(--mynah-sizing-2));\\n top: calc(-1 * var(--mynah-sizing-2));\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n opacity: 1 !important;\\n filter: brightness(0.95);\\n }\\n &:not(:hover) {\\n > .mynah-button {\\n display: none;\\n }\\n }\\n > .mynah-card-body > .mynah-syntax-highlighter {\\n border: none;\\n & pre {\\n text-overflow: ellipsis;\\n }\\n }\\n}\\n\\n.mynah-prompt-input-snippet-attachment-overlay {\\n max-width: 90vw;\\n max-height: 70vh;\\n > .mynah-card-body {\\n > .mynah-syntax-highlighter {\\n max-height: calc(70vh - var(--mynah-sizing-12)) !important;\\n }\\n }\\n}\\n.snippet-card-container,\\n.mynah-prompt-input-snippet-attachment-overlay {\\n position: relative;\\n overflow: visible;\\n width: 100%;\\n box-sizing: border-box;\\n > .mynah-card-body {\\n max-height: 100%;\\n > .mynah-syntax-highlighter {\\n user-select: none;\\n pointer-events: none;\\n margin: 0;\\n max-height: 100%;\\n overflow: hidden;\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n }\\n }\\n }\\n & pre {\\n text-overflow: ellipsis;\\n }\\n}\\n\",\".mynah-collapsible-content-wrapper {\\n display: block;\\n box-sizing: border-box;\\n width: 100%;\\n overflow: hidden;\\n position: relative;\\n > .mynah-collapsible-content-checkbox {\\n display: none;\\n & + .mynah-collapsible-content-label {\\n box-sizing: border-box;\\n display: flex;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n align-items: flex-start;\\n justify-content: stretch;\\n padding: var(--mynah-sizing-2);\\n gap: var(--mynah-sizing-2);\\n > .mynah-collapsible-content-label-title-wrapper {\\n gap: var(--mynah-sizing-2);\\n display: flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n width: 100%;\\n overflow: hidden;\\n justify-content: flex-start;\\n align-items: flex-start;\\n pointer-events: all;\\n cursor: pointer;\\n user-select: none;\\n > .mynah-collapsible-content-label-title-text {\\n flex: 1;\\n overflow: hidden;\\n }\\n }\\n > .mynah-collapsible-content-label-content-wrapper {\\n overflow: hidden;\\n box-sizing: border-box;\\n width: 100%;\\n }\\n }\\n\\n &:checked + .mynah-collapsible-content-label {\\n > .mynah-collapsible-content-label-content-wrapper {\\n display: none;\\n }\\n }\\n }\\n}\\n\",\"@import \\\"mixins\\\";\\n@import \\\"variables\\\";\\n@import \\\"animations\\\";\\n@import \\\"dark\\\";\\n@import \\\"favicons\\\";\\n\\n// Components\\n@import \\\"./components/main-container\\\";\\n@import \\\"./components/button\\\";\\n@import \\\"./components/toggle\\\";\\n@import \\\"./components/icon\\\";\\n@import \\\"./components/nav-tabs\\\";\\n@import \\\"./components/card/card\\\";\\n@import \\\"./components/feedback-form\\\";\\n@import \\\"./components/overlay\\\";\\n@import \\\"./components/notification\\\";\\n@import \\\"./components/syntax-highlighter\\\";\\n@import \\\"./components/chat/chat-wrapper\\\";\\n@import \\\"./components/collapsible-content\\\";\\n\\nbody,\\nhtml {\\n background-color: var(--mynah-color-bg);\\n color: var(--mynah-color-text-default);\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n margin: 0;\\n padding: 0;\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-weight: 600;\\n}\\n\\n::-webkit-scrollbar {\\n width: 2px;\\n height: 2px;\\n opacity: 0.25;\\n &:horizontal {\\n width: 0px;\\n height: 0px;\\n }\\n}\\n\\n*:focus {\\n outline: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","!function(e){var t=\"\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b\",a={pattern:/(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,lookbehind:!0,alias:\"punctuation\",inside:null},n={bash:a,environment:{pattern:RegExp(\"\\\\$\"+t),alias:\"constant\"},variable:[{pattern:/\\$?\\(\\([\\s\\S]+?\\)\\)/,greedy:!0,inside:{variable:[{pattern:/(^\\$\\(\\([\\s\\S]+)\\)\\)/,lookbehind:!0},/^\\$\\(\\(/],number:/\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,operator:/--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,punctuation:/\\(\\(?|\\)\\)?|,|;/}},{pattern:/\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,greedy:!0,inside:{variable:/^\\$\\(|^`|\\)$|`$/}},{pattern:/\\$\\{[^}]+\\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,punctuation:/[\\[\\]]/,environment:{pattern:RegExp(\"(\\\\{)\"+t),lookbehind:!0,alias:\"constant\"}}},/\\$(?:\\w+|[#?*!@$])/],entity:/\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\\s*\\/.*/,alias:\"important\"},comment:{pattern:/(^|[^\"{\\\\$])#.*/,lookbehind:!0},\"function-name\":[{pattern:/(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,lookbehind:!0,alias:\"function\"},{pattern:/\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,alias:\"function\"}],\"for-or-select\":{pattern:/(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,alias:\"variable\",lookbehind:!0},\"assign-left\":{pattern:/(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,inside:{environment:{pattern:RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\"+t),lookbehind:!0,alias:\"constant\"}},alias:\"variable\",lookbehind:!0},parameter:{pattern:/(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,alias:\"variable\",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,lookbehind:!0,greedy:!0,inside:n},{pattern:/(^|[^$\\\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,greedy:!0,inside:{entity:n.entity}}],environment:{pattern:RegExp(\"\\\\$?\"+t),alias:\"constant\"},variable:n.variable,function:{pattern:/(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,lookbehind:!0,alias:\"class-name\"},boolean:{pattern:/(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,lookbehind:!0},\"file-descriptor\":{pattern:/\\B&\\d\\b/,alias:\"important\"},operator:{pattern:/\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,inside:{\"file-descriptor\":{pattern:/^\\d/,alias:\"important\"}}},punctuation:/\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,number:{pattern:/(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,lookbehind:!0}},a.inside=e.languages.bash;for(var s=[\"comment\",\"function-name\",\"for-or-select\",\"assign-left\",\"parameter\",\"string\",\"environment\",\"function\",\"keyword\",\"builtin\",\"boolean\",\"file-descriptor\",\"operator\",\"punctuation\",\"number\"],o=n.variable[1].inside,i=0;i<s.length;i++)o[s[i]]=e.languages.bash[s[i]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash}(Prism);","Prism.languages.c=Prism.languages.extend(\"clike\",{comment:{pattern:/\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,greedy:!0},string:{pattern:/\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,greedy:!0},\"class-name\":{pattern:/(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,lookbehind:!0},keyword:/\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,function:/\\b[a-z_]\\w*(?=\\s*\\()/i,number:/(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore(\"c\",\"string\",{char:{pattern:/'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,greedy:!0}}),Prism.languages.insertBefore(\"c\",\"string\",{macro:{pattern:/(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,lookbehind:!0,greedy:!0,alias:\"property\",inside:{string:[{pattern:/^(#\\s*include\\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,\"macro-name\":[{pattern:/(^#\\s*define\\s+)\\w+\\b(?!\\()/i,lookbehind:!0},{pattern:/(^#\\s*define\\s+)\\w+\\b(?=\\()/i,lookbehind:!0,alias:\"function\"}],directive:{pattern:/^(#\\s*)[a-z]+/,lookbehind:!0,alias:\"keyword\"},\"directive-hash\":/^#/,punctuation:/##|\\\\(?=[\\r\\n])/,expression:{pattern:/\\S[\\s\\S]*/,inside:Prism.languages.c}}}}),Prism.languages.insertBefore(\"c\",\"function\",{constant:/\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/}),delete Prism.languages.c.boolean;","Prism.languages.clike={comment:[{pattern:/(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\\\:])\\/\\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\\\]/}},keyword:/\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,boolean:/\\b(?:false|true)\\b/,function:/\\b\\w+(?=\\()/,number:/\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,punctuation:/[{}[\\];(),.:]/};","!function(e){function n(e,n){return e.replace(/<<(\\d+)>>/g,(function(e,s){return\"(?:\"+n[+s]+\")\"}))}function s(e,s,a){return RegExp(n(e,s),a||\"\")}function a(e,n){for(var s=0;s<n;s++)e=e.replace(/<<self>>/g,(function(){return\"(?:\"+e+\")\"}));return e.replace(/<<self>>/g,\"[^\\\\s\\\\S]\")}var t=\"bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void\",r=\"class enum interface record struct\",i=\"add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)\",o=\"abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield\";function l(e){return\"\\\\b(?:\"+e.trim().replace(/ /g,\"|\")+\")\\\\b\"}var d=l(r),p=RegExp(l(t+\" \"+r+\" \"+i+\" \"+o)),c=l(r+\" \"+i+\" \"+o),u=l(t+\" \"+r+\" \"+o),g=a(\"<(?:[^<>;=+\\\\-*/%&|^]|<<self>>)*>\",2),b=a(\"\\\\((?:[^()]|<<self>>)*\\\\)\",2),h=\"@?\\\\b[A-Za-z_]\\\\w*\\\\b\",f=n(\"<<0>>(?:\\\\s*<<1>>)?\",[h,g]),m=n(\"(?!<<0>>)<<1>>(?:\\\\s*\\\\.\\\\s*<<1>>)*\",[c,f]),k=\"\\\\[\\\\s*(?:,\\\\s*)*\\\\]\",y=n(\"<<0>>(?:\\\\s*(?:\\\\?\\\\s*)?<<1>>)*(?:\\\\s*\\\\?)?\",[m,k]),w=n(\"[^,()<>[\\\\];=+\\\\-*/%&|^]|<<0>>|<<1>>|<<2>>\",[g,b,k]),v=n(\"\\\\(<<0>>+(?:,<<0>>+)+\\\\)\",[w]),x=n(\"(?:<<0>>|<<1>>)(?:\\\\s*(?:\\\\?\\\\s*)?<<2>>)*(?:\\\\s*\\\\?)?\",[v,m,k]),$={keyword:p,punctuation:/[<>()?,.:[\\]]/},_=\"'(?:[^\\r\\n'\\\\\\\\]|\\\\\\\\.|\\\\\\\\[Uux][\\\\da-fA-F]{1,8})'\",B='\"(?:\\\\\\\\.|[^\\\\\\\\\"\\r\\n])*\"';e.languages.csharp=e.languages.extend(\"clike\",{string:[{pattern:s(\"(^|[^$\\\\\\\\])<<0>>\",['@\"(?:\"\"|\\\\\\\\[^]|[^\\\\\\\\\"])*\"(?!\")']),lookbehind:!0,greedy:!0},{pattern:s(\"(^|[^@$\\\\\\\\])<<0>>\",[B]),lookbehind:!0,greedy:!0}],\"class-name\":[{pattern:s(\"(\\\\busing\\\\s+static\\\\s+)<<0>>(?=\\\\s*;)\",[m]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\busing\\\\s+<<0>>\\\\s*=\\\\s*)<<1>>(?=\\\\s*;)\",[h,x]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\busing\\\\s+)<<0>>(?=\\\\s*=)\",[h]),lookbehind:!0},{pattern:s(\"(\\\\b<<0>>\\\\s+)<<1>>\",[d,f]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\bcatch\\\\s*\\\\(\\\\s*)<<0>>\",[m]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\bwhere\\\\s+)<<0>>\",[h]),lookbehind:!0},{pattern:s(\"(\\\\b(?:is(?:\\\\s+not)?|as)\\\\s+)<<0>>\",[y]),lookbehind:!0,inside:$},{pattern:s(\"\\\\b<<0>>(?=\\\\s+(?!<<1>>|with\\\\s*\\\\{)<<2>>(?:\\\\s*[=,;:{)\\\\]]|\\\\s+(?:in|when)\\\\b))\",[x,u,h]),inside:$}],keyword:p,number:/(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:[dflmu]|lu|ul)?\\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\\?\\.?|::|[{}[\\];(),.:]/}),e.languages.insertBefore(\"csharp\",\"number\",{range:{pattern:/\\.\\./,alias:\"operator\"}}),e.languages.insertBefore(\"csharp\",\"punctuation\",{\"named-parameter\":{pattern:s(\"([(,]\\\\s*)<<0>>(?=\\\\s*:)\",[h]),lookbehind:!0,alias:\"punctuation\"}}),e.languages.insertBefore(\"csharp\",\"class-name\",{namespace:{pattern:s(\"(\\\\b(?:namespace|using)\\\\s+)<<0>>(?:\\\\s*\\\\.\\\\s*<<0>>)*(?=\\\\s*[;{])\",[h]),lookbehind:!0,inside:{punctuation:/\\./}},\"type-expression\":{pattern:s(\"(\\\\b(?:default|sizeof|typeof)\\\\s*\\\\(\\\\s*(?!\\\\s))(?:[^()\\\\s]|\\\\s(?!\\\\s)|<<0>>)*(?=\\\\s*\\\\))\",[b]),lookbehind:!0,alias:\"class-name\",inside:$},\"return-type\":{pattern:s(\"<<0>>(?=\\\\s+(?:<<1>>\\\\s*(?:=>|[({]|\\\\.\\\\s*this\\\\s*\\\\[)|this\\\\s*\\\\[))\",[x,m]),inside:$,alias:\"class-name\"},\"constructor-invocation\":{pattern:s(\"(\\\\bnew\\\\s+)<<0>>(?=\\\\s*[[({])\",[x]),lookbehind:!0,inside:$,alias:\"class-name\"},\"generic-method\":{pattern:s(\"<<0>>\\\\s*<<1>>(?=\\\\s*\\\\()\",[h,g]),inside:{function:s(\"^<<0>>\",[h]),generic:{pattern:RegExp(g),alias:\"class-name\",inside:$}}},\"type-list\":{pattern:s(\"\\\\b((?:<<0>>\\\\s+<<1>>|record\\\\s+<<1>>\\\\s*<<5>>|where\\\\s+<<2>>)\\\\s*:\\\\s*)(?:<<3>>|<<4>>|<<1>>\\\\s*<<5>>|<<6>>)(?:\\\\s*,\\\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\\\s*(?:where|[{;]|=>|$))\",[d,f,h,x,p.source,b,\"\\\\bnew\\\\s*\\\\(\\\\s*\\\\)\"]),lookbehind:!0,inside:{\"record-arguments\":{pattern:s(\"(^(?!new\\\\s*\\\\()<<0>>\\\\s*)<<1>>\",[f,b]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:p,\"class-name\":{pattern:RegExp(x),greedy:!0,inside:$},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\\t ]*)#.*/m,lookbehind:!0,alias:\"property\",inside:{directive:{pattern:/(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,lookbehind:!0,alias:\"keyword\"}}}});var E=B+\"|\"+_,R=n(\"/(?![*/])|//[^\\r\\n]*[\\r\\n]|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/|<<0>>\",[E]),z=a(n(\"[^\\\"'/()]|<<0>>|\\\\(<<self>>*\\\\)\",[R]),2),S=\"\\\\b(?:assembly|event|field|method|module|param|property|return|type)\\\\b\",j=n(\"<<0>>(?:\\\\s*\\\\(<<1>>*\\\\))?\",[m,z]);e.languages.insertBefore(\"csharp\",\"class-name\",{attribute:{pattern:s(\"((?:^|[^\\\\s\\\\w>)?])\\\\s*\\\\[\\\\s*)(?:<<0>>\\\\s*:\\\\s*)?<<1>>(?:\\\\s*,\\\\s*<<1>>)*(?=\\\\s*\\\\])\",[S,j]),lookbehind:!0,greedy:!0,inside:{target:{pattern:s(\"^<<0>>(?=\\\\s*:)\",[S]),alias:\"keyword\"},\"attribute-arguments\":{pattern:s(\"\\\\(<<0>>*\\\\)\",[z]),inside:e.languages.csharp},\"class-name\":{pattern:RegExp(m),inside:{punctuation:/\\./}},punctuation:/[:,]/}}});var A=\":[^}\\r\\n]+\",F=a(n(\"[^\\\"'/()]|<<0>>|\\\\(<<self>>*\\\\)\",[R]),2),P=n(\"\\\\{(?!\\\\{)(?:(?![}:])<<0>>)*<<1>>?\\\\}\",[F,A]),U=a(n(\"[^\\\"'/()]|/(?!\\\\*)|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/|<<0>>|\\\\(<<self>>*\\\\)\",[E]),2),Z=n(\"\\\\{(?!\\\\{)(?:(?![}:])<<0>>)*<<1>>?\\\\}\",[U,A]);function q(n,a){return{interpolation:{pattern:s(\"((?:^|[^{])(?:\\\\{\\\\{)*)<<0>>\",[n]),lookbehind:!0,inside:{\"format-string\":{pattern:s(\"(^\\\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\\\}$)\",[a,A]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\\{|\\}$/,expression:{pattern:/[\\s\\S]+/,alias:\"language-csharp\",inside:e.languages.csharp}}},string:/[\\s\\S]+/}}e.languages.insertBefore(\"csharp\",\"string\",{\"interpolation-string\":[{pattern:s('(^|[^\\\\\\\\])(?:\\\\$@|@\\\\$)\"(?:\"\"|\\\\\\\\[^]|\\\\{\\\\{|<<0>>|[^\\\\\\\\{\"])*\"',[P]),lookbehind:!0,greedy:!0,inside:q(P,F)},{pattern:s('(^|[^@\\\\\\\\])\\\\$\"(?:\\\\\\\\.|\\\\{\\\\{|<<0>>|[^\\\\\\\\\"{])*\"',[Z]),lookbehind:!0,greedy:!0,inside:q(Z,U)}],char:{pattern:RegExp(_),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism);","!function(s){var e=/(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;s.languages.css={comment:/\\/\\*[\\s\\S]*?\\*\\//,atrule:{pattern:RegExp(\"@[\\\\w-](?:[^;{\\\\s\\\"']|\\\\s+(?!\\\\s)|\"+e.source+\")*?(?:;|(?=\\\\s*\\\\{))\"),inside:{rule:/^@[\\w-]+/,\"selector-function-argument\":{pattern:/(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,lookbehind:!0,alias:\"selector\"},keyword:{pattern:/(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,lookbehind:!0}}},url:{pattern:RegExp(\"\\\\burl\\\\((?:\"+e.source+\"|(?:[^\\\\\\\\\\r\\n()\\\"']|\\\\\\\\[^])*)\\\\)\",\"i\"),greedy:!0,inside:{function:/^url/i,punctuation:/^\\(|\\)$/,string:{pattern:RegExp(\"^\"+e.source+\"$\"),alias:\"url\"}}},selector:{pattern:RegExp(\"(^|[{}\\\\s])[^{}\\\\s](?:[^{};\\\"'\\\\s]|\\\\s+(?![\\\\s{])|\"+e.source+\")*(?=\\\\s*\\\\{)\"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,lookbehind:!0},important:/!important\\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined(\"style\",\"css\"),t.tag.addAttribute(\"style\",\"css\"))}(Prism);","!function(e){var n=/\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/,t=\"(?:[a-z]\\\\w*\\\\s*\\\\.\\\\s*)*(?:[A-Z]\\\\w*\\\\s*\\\\.\\\\s*)*\",s={pattern:RegExp(\"(^|[^\\\\w.])\"+t+\"[A-Z](?:[\\\\d_A-Z]*[a-z]\\\\w*)?\\\\b\"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,inside:{punctuation:/\\./}},punctuation:/\\./}};e.languages.java=e.languages.extend(\"clike\",{string:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,lookbehind:!0,greedy:!0},\"class-name\":[s,{pattern:RegExp(\"(^|[^\\\\w.])\"+t+\"[A-Z]\\\\w*(?=\\\\s+\\\\w+\\\\s*[;,=()]|\\\\s*(?:\\\\[[\\\\s,]*\\\\]\\\\s*)?::\\\\s*new\\\\b)\"),lookbehind:!0,inside:s.inside},{pattern:RegExp(\"(\\\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\\\s+)\"+t+\"[A-Z]\\\\w*\\\\b\"),lookbehind:!0,inside:s.inside}],keyword:n,function:[e.languages.clike.function,{pattern:/(::\\s*)[a-z_]\\w*/,lookbehind:!0}],number:/\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\\b[A-Z][A-Z_\\d]+\\b/}),e.languages.insertBefore(\"java\",\"string\",{\"triple-quoted-string\":{pattern:/\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,greedy:!0,alias:\"string\"},char:{pattern:/'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore(\"java\",\"class-name\",{annotation:{pattern:/(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,lookbehind:!0,alias:\"punctuation\"},generics:{pattern:/<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{\"class-name\":s,keyword:n,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(\"(\\\\bimport\\\\s+)\"+t+\"(?:[A-Z]\\\\w*|\\\\*)(?=\\\\s*;)\"),lookbehind:!0,inside:{namespace:s.inside.namespace,punctuation:/\\./,operator:/\\*/,\"class-name\":/\\w+/}},{pattern:RegExp(\"(\\\\bimport\\\\s+static\\\\s+)\"+t+\"(?:\\\\w+|\\\\*)(?=\\\\s*;)\"),lookbehind:!0,alias:\"static\",inside:{namespace:s.inside.namespace,static:/\\b\\w+$/,punctuation:/\\./,operator:/\\*/,\"class-name\":/\\w+/}}],namespace:{pattern:RegExp(\"(\\\\b(?:exports|import(?:\\\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\\\s+)(?!<keyword>)[a-z]\\\\w*(?:\\\\.[a-z]\\\\w*)*\\\\.?\".replace(/<keyword>/g,(function(){return n.source}))),lookbehind:!0,inside:{punctuation:/\\./}}})}(Prism);","Prism.languages.javascript=Prism.languages.extend(\"clike\",{\"class-name\":[Prism.languages.clike[\"class-name\"],{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\\})\\s*)catch\\b/,lookbehind:!0},{pattern:/(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,lookbehind:!0}],function:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,number:{pattern:RegExp(\"(^|[^\\\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\\\dA-Fa-f]+(?:_[\\\\dA-Fa-f]+)*n?|\\\\d+(?:_\\\\d+)*n|(?:\\\\d+(?:_\\\\d+)*(?:\\\\.(?:\\\\d+(?:_\\\\d+)*)?)?|\\\\.\\\\d+(?:_\\\\d+)*)(?:[Ee][+-]?\\\\d+(?:_\\\\d+)*)?)(?![\\\\w$])\"),lookbehind:!0},operator:/--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/}),Prism.languages.javascript[\"class-name\"][0].pattern=/(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/,Prism.languages.insertBefore(\"javascript\",\"keyword\",{regex:{pattern:RegExp(\"((?:^|[^$\\\\w\\\\xA0-\\\\uFFFF.\\\"'\\\\])\\\\s]|\\\\b(?:return|yield))\\\\s*)/(?:(?:\\\\[(?:[^\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}|(?:\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\])*\\\\])*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\\\s|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/)*(?:$|[\\r\\n,.;:})\\\\]]|//))\"),lookbehind:!0,greedy:!0,inside:{\"regex-source\":{pattern:/^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,lookbehind:!0,alias:\"language-regex\",inside:Prism.languages.regex},\"regex-delimiter\":/^\\/|\\/$/,\"regex-flags\":/^[a-z]+$/}},\"function-variable\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,alias:\"function\"},parameter:[{pattern:/(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/}),Prism.languages.insertBefore(\"javascript\",\"string\",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:\"comment\"},\"template-string\":{pattern:/`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,greedy:!0,inside:{\"template-punctuation\":{pattern:/^`|`$/,alias:\"string\"},interpolation:{pattern:/((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,lookbehind:!0,inside:{\"interpolation-punctuation\":{pattern:/^\\$\\{|\\}$/,alias:\"punctuation\"},rest:Prism.languages.javascript}},string:/[\\s\\S]+/}},\"string-property\":{pattern:/((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,lookbehind:!0,greedy:!0,alias:\"property\"}}),Prism.languages.insertBefore(\"javascript\",\"operator\",{\"literal-property\":{pattern:/((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,lookbehind:!0,alias:\"property\"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined(\"script\",\"javascript\"),Prism.languages.markup.tag.addAttribute(\"on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)\",\"javascript\")),Prism.languages.js=Prism.languages.javascript;","Prism.languages.json={property:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,greedy:!0},number:/-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,punctuation:/[{}[\\],]/,operator:/:/,boolean:/\\b(?:false|true)\\b/,null:{pattern:/\\bnull\\b/,alias:\"keyword\"}},Prism.languages.webmanifest=Prism.languages.json;","!function(t){var n=t.util.clone(t.languages.javascript),e=\"(?:\\\\{<S>*\\\\.{3}(?:[^{}]|<BRACES>)*\\\\})\";function a(t,n){return t=t.replace(/<S>/g,(function(){return\"(?:\\\\s|//.*(?!.)|/\\\\*(?:[^*]|\\\\*(?!/))\\\\*/)\"})).replace(/<BRACES>/g,(function(){return\"(?:\\\\{(?:\\\\{(?:\\\\{[^{}]*\\\\}|[^{}])*\\\\}|[^{}])*\\\\})\"})).replace(/<SPREAD>/g,(function(){return e})),RegExp(t,n)}e=a(e).source,t.languages.jsx=t.languages.extend(\"markup\",n),t.languages.jsx.tag.pattern=a(\"</?(?:[\\\\w.:-]+(?:<S>+(?:[\\\\w.:$-]+(?:=(?:\\\"(?:\\\\\\\\[^]|[^\\\\\\\\\\\"])*\\\"|'(?:\\\\\\\\[^]|[^\\\\\\\\'])*'|[^\\\\s{'\\\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*/?)?>\"),t.languages.jsx.tag.inside.tag.pattern=/^<\\/?[^\\s>\\/]*/,t.languages.jsx.tag.inside[\"attr-value\"].pattern=/=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/,t.languages.jsx.tag.inside.tag.inside[\"class-name\"]=/^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/,t.languages.jsx.tag.inside.comment=n.comment,t.languages.insertBefore(\"inside\",\"attr-name\",{spread:{pattern:a(\"<SPREAD>\"),inside:t.languages.jsx}},t.languages.jsx.tag),t.languages.insertBefore(\"inside\",\"special-attr\",{script:{pattern:a(\"=<BRACES>\"),alias:\"language-javascript\",inside:{\"script-punctuation\":{pattern:/^=(?=\\{)/,alias:\"punctuation\"},rest:t.languages.jsx}}},t.languages.jsx.tag);var s=function(t){return t?\"string\"==typeof t?t:\"string\"==typeof t.content?t.content:t.content.map(s).join(\"\"):\"\"},g=function(n){for(var e=[],a=0;a<n.length;a++){var o=n[a],i=!1;if(\"string\"!=typeof o&&(\"tag\"===o.type&&o.content[0]&&\"tag\"===o.content[0].type?\"</\"===o.content[0].content[0].content?e.length>0&&e[e.length-1].tagName===s(o.content[0].content[1])&&e.pop():\"/>\"===o.content[o.content.length-1].content||e.push({tagName:s(o.content[0].content[1]),openedBraces:0}):e.length>0&&\"punctuation\"===o.type&&\"{\"===o.content?e[e.length-1].openedBraces++:e.length>0&&e[e.length-1].openedBraces>0&&\"punctuation\"===o.type&&\"}\"===o.content?e[e.length-1].openedBraces--:i=!0),(i||\"string\"==typeof o)&&e.length>0&&0===e[e.length-1].openedBraces){var r=s(o);a<n.length-1&&(\"string\"==typeof n[a+1]||\"plain-text\"===n[a+1].type)&&(r+=s(n[a+1]),n.splice(a+1,1)),a>0&&(\"string\"==typeof n[a-1]||\"plain-text\"===n[a-1].type)&&(r=s(n[a-1])+r,n.splice(a-1,1),a--),n[a]=new t.Token(\"plain-text\",r,null,r)}o.content&&\"string\"!=typeof o.content&&g(o.content)}};t.hooks.add(\"after-tokenize\",(function(t){\"jsx\"!==t.language&&\"tsx\"!==t.language||g(t.tokens)}))}(Prism);","Prism.languages.less=Prism.languages.extend(\"css\",{comment:[/\\/\\*[\\s\\S]*?\\*\\//,{pattern:/(^|[^\\\\])\\/\\/.*/,lookbehind:!0}],atrule:{pattern:/@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,inside:{variable:/@+[\\w-]+/}},property:/(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/,operator:/[+\\-*\\/]/}),Prism.languages.insertBefore(\"less\",\"property\",{variable:[{pattern:/@[\\w-]+\\s*:/,inside:{punctuation:/:/}},/@@?[\\w-]+/],\"mixin-usage\":{pattern:/([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,lookbehind:!0,alias:\"function\"}});","Prism.languages.lua={comment:/^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,string:{pattern:/([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[^z]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,greedy:!0},number:/\\b0x[a-f\\d]+(?:\\.[a-f\\d]*)?(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|(?:\\.\\d*)?(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,keyword:/\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,function:/(?!\\d)\\w+(?=\\s*(?:[({]))/,operator:[/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\\.\\.(?!\\.)/,lookbehind:!0}],punctuation:/[\\[\\](){},;]|\\.+|:+/};","!function(n){function e(n){return n=n.replace(/<inner>/g,(function(){return\"(?:\\\\\\\\.|[^\\\\\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))\"})),RegExp(\"((?:^|[^\\\\\\\\])(?:\\\\\\\\{2})*)(?:\"+n+\")\")}var t=\"(?:\\\\\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\\\\\|\\r\\n`])+\",a=\"\\\\|?__(?:\\\\|__)+\\\\|?(?:(?:\\n|\\r\\n?)|(?![^]))\".replace(/__/g,(function(){return t})),i=\"\\\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\\\|?(?:\\n|\\r\\n?)\";n.languages.markdown=n.languages.extend(\"markup\",{}),n.languages.insertBefore(\"markdown\",\"prolog\",{\"front-matter-block\":{pattern:/(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,\"front-matter\":{pattern:/\\S+(?:\\s+\\S+)*/,alias:[\"yaml\",\"language-yaml\"],inside:n.languages.yaml}}},blockquote:{pattern:/^>(?:[\\t ]*>)*/m,alias:\"punctuation\"},table:{pattern:RegExp(\"^\"+a+i+\"(?:\"+a+\")*\",\"m\"),inside:{\"table-data-rows\":{pattern:RegExp(\"^(\"+a+i+\")(?:\"+a+\")*$\"),lookbehind:!0,inside:{\"table-data\":{pattern:RegExp(t),inside:n.languages.markdown},punctuation:/\\|/}},\"table-line\":{pattern:RegExp(\"^(\"+a+\")\"+i+\"$\"),lookbehind:!0,inside:{punctuation:/\\||:?-{3,}:?/}},\"table-header-row\":{pattern:RegExp(\"^\"+a+\"$\"),inside:{\"table-header\":{pattern:RegExp(t),alias:\"important\",inside:n.languages.markdown},punctuation:/\\|/}}}},code:[{pattern:/((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,lookbehind:!0,alias:\"keyword\"},{pattern:/^```[\\s\\S]*?^```$/m,greedy:!0,inside:{\"code-block\":{pattern:/^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,lookbehind:!0},\"code-language\":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,alias:\"important\",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\\s*)#.+/m,lookbehind:!0,alias:\"important\",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,lookbehind:!0,alias:\"punctuation\"},list:{pattern:/(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,lookbehind:!0,alias:\"punctuation\"},\"url-reference\":{pattern:/!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,inside:{variable:{pattern:/^(!?\\[)[^\\]]+/,lookbehind:!0},string:/(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,punctuation:/^[\\[\\]!:]|[<>]/},alias:\"url\"},bold:{pattern:e(\"\\\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\\\b|\\\\*\\\\*(?:(?!\\\\*)<inner>|\\\\*(?:(?!\\\\*)<inner>)+\\\\*)+\\\\*\\\\*\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\\s\\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\\*\\*|__/}},italic:{pattern:e(\"\\\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\\\b|\\\\*(?:(?!\\\\*)<inner>|\\\\*\\\\*(?:(?!\\\\*)<inner>)+\\\\*\\\\*)+\\\\*\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\\s\\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:e(\"(~~?)(?:(?!~)<inner>)+\\\\2\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\\s\\S]+(?=\\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},\"code-snippet\":{pattern:/(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:[\"code\",\"keyword\"]},url:{pattern:e('!?\\\\[(?:(?!\\\\])<inner>)+\\\\](?:\\\\([^\\\\s)]+(?:[\\t ]+\"(?:\\\\\\\\.|[^\"\\\\\\\\])*\")?\\\\)|[ \\t]?\\\\[(?:(?!\\\\])<inner>)+\\\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\\[)[^\\]]+(?=\\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,lookbehind:!0},url:{pattern:/(^\\]\\()[^\\s)]+/,lookbehind:!0},string:{pattern:/(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,lookbehind:!0}}}}),[\"url\",\"bold\",\"italic\",\"strike\"].forEach((function(e){[\"url\",\"bold\",\"italic\",\"strike\",\"code-snippet\"].forEach((function(t){e!==t&&(n.languages.markdown[e].inside.content.inside[t]=n.languages.markdown[t])}))})),n.hooks.add(\"after-tokenize\",(function(n){\"markdown\"!==n.language&&\"md\"!==n.language||function n(e){if(e&&\"string\"!=typeof e)for(var t=0,a=e.length;t<a;t++){var i=e[t];if(\"code\"===i.type){var r=i.content[1],o=i.content[3];if(r&&o&&\"code-language\"===r.type&&\"code-block\"===o.type&&\"string\"==typeof r.content){var l=r.content.replace(/\\b#/g,\"sharp\").replace(/\\b\\+\\+/g,\"pp\"),s=\"language-\"+(l=(/[a-z][\\w-]*/i.exec(l)||[\"\"])[0].toLowerCase());o.alias?\"string\"==typeof o.alias?o.alias=[o.alias,s]:o.alias.push(s):o.alias=[s]}}else n(i.content)}}(n.tokens)})),n.hooks.add(\"wrap\",(function(e){if(\"code-block\"===e.type){for(var t=\"\",a=0,i=e.classes.length;a<i;a++){var s=e.classes[a],d=/language-(.+)/.exec(s);if(d){t=d[1];break}}var p=n.languages[t];if(p)e.content=n.highlight(e.content.replace(r,\"\").replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi,(function(n,e){var t;return\"#\"===(e=e.toLowerCase())[0]?(t=\"x\"===e[1]?parseInt(e.slice(2),16):Number(e.slice(1)),l(t)):o[e]||n})),p,t);else if(t&&\"none\"!==t&&n.plugins.autoloader){var u=\"md-\"+(new Date).valueOf()+\"-\"+Math.floor(1e16*Math.random());e.attributes.id=u,n.plugins.autoloader.loadLanguages(t,(function(){var e=document.getElementById(u);e&&(e.innerHTML=n.highlight(e.textContent,n.languages[t],t))}))}}}));var r=RegExp(n.languages.markup.tag.pattern.source,\"gi\"),o={amp:\"&\",lt:\"<\",gt:\">\",quot:'\"'},l=String.fromCodePoint||String.fromCharCode;n.languages.md=n.languages.markdown}(Prism);","Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\\s\\S])*?-->/,greedy:!0},prolog:{pattern:/<\\?[\\s\\S]+?\\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,greedy:!0,inside:{\"internal-subset\":{pattern:/(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/\"[^\"]*\"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\\]]/,\"doctype-tag\":/^DOCTYPE/i,name:/[^\\s<>'\"]+/}},cdata:{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,greedy:!0},tag:{pattern:/<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,greedy:!0,inside:{tag:{pattern:/^<\\/?[^\\s>\\/]+/,inside:{punctuation:/^<\\/?/,namespace:/^[^\\s>\\/:]+:/}},\"special-attr\":[],\"attr-value\":{pattern:/=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:\"attr-equals\"},{pattern:/^(\\s*)[\"']|[\"']$/,lookbehind:!0}]}},punctuation:/\\/?>/,\"attr-name\":{pattern:/[^\\s>\\/]+/,inside:{namespace:/^[^\\s>\\/:]+:/}}}},entity:[{pattern:/&[\\da-z]{1,8};/i,alias:\"named-entity\"},/&#x?[\\da-f]{1,8};/i]},Prism.languages.markup.tag.inside[\"attr-value\"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside[\"internal-subset\"].inside=Prism.languages.markup,Prism.hooks.add(\"wrap\",(function(a){\"entity\"===a.type&&(a.attributes.title=a.content.replace(/&/,\"&\"))})),Object.defineProperty(Prism.languages.markup.tag,\"addInlined\",{value:function(a,e){var s={};s[\"language-\"+e]={pattern:/(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\\[CDATA\\[|\\]\\]>$/i;var t={\"included-cdata\":{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,inside:s}};t[\"language-\"+e]={pattern:/[\\s\\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp(\"(<__[^>]*>)(?:<!\\\\[CDATA\\\\[(?:[^\\\\]]|\\\\](?!\\\\]>))*\\\\]\\\\]>|(?!<!\\\\[CDATA\\\\[)[^])*?(?=</__>)\".replace(/__/g,(function(){return a})),\"i\"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore(\"markup\",\"cdata\",n)}}),Object.defineProperty(Prism.languages.markup.tag,\"addAttribute\",{value:function(a,e){Prism.languages.markup.tag.inside[\"special-attr\"].push({pattern:RegExp(\"(^|[\\\"'\\\\s])(?:\"+a+\")\\\\s*=\\\\s*(?:\\\"[^\\\"]*\\\"|'[^']*'|[^\\\\s'\\\">=]+(?=[\\\\s>]))\",\"i\"),lookbehind:!0,inside:{\"attr-name\":/^[^\\s=]+/,\"attr-value\":{pattern:/=[\\s\\S]+/,inside:{value:{pattern:/(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,lookbehind:!0,alias:[e,\"language-\"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:\"attr-equals\"},/\"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend(\"markup\",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;","!function($){var e=[\"$eq\",\"$gt\",\"$gte\",\"$in\",\"$lt\",\"$lte\",\"$ne\",\"$nin\",\"$and\",\"$not\",\"$nor\",\"$or\",\"$exists\",\"$type\",\"$expr\",\"$jsonSchema\",\"$mod\",\"$regex\",\"$text\",\"$where\",\"$geoIntersects\",\"$geoWithin\",\"$near\",\"$nearSphere\",\"$all\",\"$elemMatch\",\"$size\",\"$bitsAllClear\",\"$bitsAllSet\",\"$bitsAnyClear\",\"$bitsAnySet\",\"$comment\",\"$elemMatch\",\"$meta\",\"$slice\",\"$currentDate\",\"$inc\",\"$min\",\"$max\",\"$mul\",\"$rename\",\"$set\",\"$setOnInsert\",\"$unset\",\"$addToSet\",\"$pop\",\"$pull\",\"$push\",\"$pullAll\",\"$each\",\"$position\",\"$slice\",\"$sort\",\"$bit\",\"$addFields\",\"$bucket\",\"$bucketAuto\",\"$collStats\",\"$count\",\"$currentOp\",\"$facet\",\"$geoNear\",\"$graphLookup\",\"$group\",\"$indexStats\",\"$limit\",\"$listLocalSessions\",\"$listSessions\",\"$lookup\",\"$match\",\"$merge\",\"$out\",\"$planCacheStats\",\"$project\",\"$redact\",\"$replaceRoot\",\"$replaceWith\",\"$sample\",\"$set\",\"$skip\",\"$sort\",\"$sortByCount\",\"$unionWith\",\"$unset\",\"$unwind\",\"$setWindowFields\",\"$abs\",\"$accumulator\",\"$acos\",\"$acosh\",\"$add\",\"$addToSet\",\"$allElementsTrue\",\"$and\",\"$anyElementTrue\",\"$arrayElemAt\",\"$arrayToObject\",\"$asin\",\"$asinh\",\"$atan\",\"$atan2\",\"$atanh\",\"$avg\",\"$binarySize\",\"$bsonSize\",\"$ceil\",\"$cmp\",\"$concat\",\"$concatArrays\",\"$cond\",\"$convert\",\"$cos\",\"$dateFromParts\",\"$dateToParts\",\"$dateFromString\",\"$dateToString\",\"$dayOfMonth\",\"$dayOfWeek\",\"$dayOfYear\",\"$degreesToRadians\",\"$divide\",\"$eq\",\"$exp\",\"$filter\",\"$first\",\"$floor\",\"$function\",\"$gt\",\"$gte\",\"$hour\",\"$ifNull\",\"$in\",\"$indexOfArray\",\"$indexOfBytes\",\"$indexOfCP\",\"$isArray\",\"$isNumber\",\"$isoDayOfWeek\",\"$isoWeek\",\"$isoWeekYear\",\"$last\",\"$last\",\"$let\",\"$literal\",\"$ln\",\"$log\",\"$log10\",\"$lt\",\"$lte\",\"$ltrim\",\"$map\",\"$max\",\"$mergeObjects\",\"$meta\",\"$min\",\"$millisecond\",\"$minute\",\"$mod\",\"$month\",\"$multiply\",\"$ne\",\"$not\",\"$objectToArray\",\"$or\",\"$pow\",\"$push\",\"$radiansToDegrees\",\"$range\",\"$reduce\",\"$regexFind\",\"$regexFindAll\",\"$regexMatch\",\"$replaceOne\",\"$replaceAll\",\"$reverseArray\",\"$round\",\"$rtrim\",\"$second\",\"$setDifference\",\"$setEquals\",\"$setIntersection\",\"$setIsSubset\",\"$setUnion\",\"$size\",\"$sin\",\"$slice\",\"$split\",\"$sqrt\",\"$stdDevPop\",\"$stdDevSamp\",\"$strcasecmp\",\"$strLenBytes\",\"$strLenCP\",\"$substr\",\"$substrBytes\",\"$substrCP\",\"$subtract\",\"$sum\",\"$switch\",\"$tan\",\"$toBool\",\"$toDate\",\"$toDecimal\",\"$toDouble\",\"$toInt\",\"$toLong\",\"$toObjectId\",\"$toString\",\"$toLower\",\"$toUpper\",\"$trim\",\"$trunc\",\"$type\",\"$week\",\"$year\",\"$zip\",\"$count\",\"$dateAdd\",\"$dateDiff\",\"$dateSubtract\",\"$dateTrunc\",\"$getField\",\"$rand\",\"$sampleRate\",\"$setField\",\"$unsetField\",\"$comment\",\"$explain\",\"$hint\",\"$max\",\"$maxTimeMS\",\"$min\",\"$orderby\",\"$query\",\"$returnKey\",\"$showDiskLoc\",\"$natural\"],t=\"(?:\"+(e=e.map((function($){return $.replace(\"$\",\"\\\\$\")}))).join(\"|\")+\")\\\\b\";$.languages.mongodb=$.languages.extend(\"javascript\",{}),$.languages.insertBefore(\"mongodb\",\"string\",{property:{pattern:/(?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)(?=\\s*:)/,greedy:!0,inside:{keyword:RegExp(\"^(['\\\"])?\"+t+\"(?:\\\\1)?$\")}}}),$.languages.mongodb.string.inside={url:{pattern:/https?:\\/\\/[-\\w@:%.+~#=]{1,256}\\.[a-z0-9()]{1,6}\\b[-\\w()@:%+.~#?&/=]*/i,greedy:!0},entity:{pattern:/\\b(?:(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\b/,greedy:!0}},$.languages.insertBefore(\"mongodb\",\"constant\",{builtin:{pattern:RegExp(\"\\\\b(?:\"+[\"ObjectId\",\"Code\",\"BinData\",\"DBRef\",\"Timestamp\",\"NumberLong\",\"NumberDecimal\",\"MaxKey\",\"MinKey\",\"RegExp\",\"ISODate\",\"UUID\"].join(\"|\")+\")\\\\b\"),alias:\"keyword\"}})}(Prism);","Prism.languages.objectivec=Prism.languages.extend(\"c\",{string:{pattern:/@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,greedy:!0},keyword:/\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,operator:/-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/}),delete Prism.languages.objectivec[\"class-name\"],Prism.languages.objc=Prism.languages.objectivec;","Prism.languages.python={comment:{pattern:/(^|[^\\\\])#.*/,lookbehind:!0,greedy:!0},\"string-interpolation\":{pattern:/(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,lookbehind:!0,inside:{\"format-spec\":{pattern:/(:)[^:(){}]+(?=\\}$)/,lookbehind:!0},\"conversion-option\":{pattern://,alias:\"punctuation\"},rest:null}},string:/[\\s\\S]+/}},\"triple-quoted-string\":{pattern:/(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,greedy:!0,alias:\"string\"},string:{pattern:/(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,greedy:!0},function:{pattern:/((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,lookbehind:!0},\"class-name\":{pattern:/(\\bclass\\s+)\\w+/i,lookbehind:!0},decorator:{pattern:/(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,lookbehind:!0,alias:[\"annotation\",\"punctuation\"],inside:{punctuation:/\\./}},keyword:/\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,builtin:/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,boolean:/\\b(?:False|None|True)\\b/,number:/\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,operator:/[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\\];(),.:]/},Prism.languages.python[\"string-interpolation\"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;","!function(a){var e={pattern:/\\\\[\\\\(){}[\\]^$+*?|.]/,alias:\"escape\"},n=/\\\\(?:x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u\\{[\\da-fA-F]+\\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,t=\"(?:[^\\\\\\\\-]|\"+n.source+\")\",s=RegExp(t+\"-\"+t),i={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:\"variable\"};a.languages.regex={\"char-class\":{pattern:/((?:^|[^\\\\])(?:\\\\\\\\)*)\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/,lookbehind:!0,inside:{\"char-class-negation\":{pattern:/(^\\[)\\^/,lookbehind:!0,alias:\"operator\"},\"char-class-punctuation\":{pattern:/^\\[|\\]$/,alias:\"punctuation\"},range:{pattern:s,inside:{escape:n,\"range-punctuation\":{pattern:/-/,alias:\"operator\"}}},\"special-escape\":e,\"char-set\":{pattern:/\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,alias:\"class-name\"},escape:n}},\"special-escape\":e,\"char-set\":{pattern:/\\.|\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,alias:\"class-name\"},backreference:[{pattern:/\\\\(?![123][0-7]{2})[1-9]/,alias:\"keyword\"},{pattern:/\\\\k<[^<>']+>/,alias:\"keyword\",inside:{\"group-name\":i}}],anchor:{pattern:/[$^]|\\\\[ABbGZz]/,alias:\"function\"},escape:n,group:[{pattern:/\\((?:\\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:\"punctuation\",inside:{\"group-name\":i}},{pattern:/\\)/,alias:\"punctuation\"}],quantifier:{pattern:/(?:[+*?]|\\{\\d+(?:,\\d*)?\\})[?+]?/,alias:\"number\"},alternation:{pattern:/\\|/,alias:\"keyword\"}}}(Prism);","Prism.languages.scala=Prism.languages.extend(\"java\",{\"triple-quoted-string\":{pattern:/\"\"\"[\\s\\S]*?\"\"\"/,greedy:!0,alias:\"string\"},string:{pattern:/(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},keyword:/<-|=>|\\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\\b/,number:/\\b0x(?:[\\da-f]*\\.)?[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e\\d+)?[dfl]?/i,builtin:/\\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\\b/,symbol:/'[^\\d\\s\\\\]\\w*/}),Prism.languages.insertBefore(\"scala\",\"triple-quoted-string\",{\"string-interpolation\":{pattern:/\\b[a-z]\\w*(?:\"\"\"(?:[^$]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*?\"\"\"|\"(?:[^$\"\\r\\n]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*\")/i,greedy:!0,inside:{id:{pattern:/^\\w+/,greedy:!0,alias:\"function\"},escape:{pattern:/\\\\\\$\"|\\$[$\"]/,greedy:!0,alias:\"symbol\"},interpolation:{pattern:/\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,greedy:!0,inside:{punctuation:/^\\$\\{?|\\}$/,expression:{pattern:/[\\s\\S]+/,inside:Prism.languages.scala}}},string:/[\\s\\S]+/}}}),delete Prism.languages.scala[\"class-name\"],delete Prism.languages.scala.function,delete Prism.languages.scala.constant;","Prism.languages.scss=Prism.languages.extend(\"css\",{comment:{pattern:/(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,lookbehind:!0},atrule:{pattern:/@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,inside:{rule:/@[\\w-]+/}},url:/(?:[-a-z]+-)?url(?=\\()/i,selector:{pattern:/(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:\"important\"},placeholder:/%[-\\w]+/,variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}},property:{pattern:/(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,inside:{variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}}}),Prism.languages.insertBefore(\"scss\",\"atrule\",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore(\"scss\",\"important\",{variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}),Prism.languages.insertBefore(\"scss\",\"function\",{\"module-modifier\":{pattern:/\\b(?:as|hide|show|with)\\b/i,alias:\"keyword\"},placeholder:{pattern:/%[-\\w]+/,alias:\"selector\"},statement:{pattern:/\\B!(?:default|optional)\\b/i,alias:\"keyword\"},boolean:/\\b(?:false|true)\\b/,null:{pattern:/\\bnull\\b/,alias:\"keyword\"},operator:{pattern:/(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|not|or)(?=\\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss;","!function(e){var a=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend(\"jsx\",a),delete e.languages.tsx.parameter,delete e.languages.tsx[\"literal-property\"];var t=e.languages.tsx.tag;t.pattern=RegExp(\"(^|[^\\\\w$]|(?=</))(?:\"+t.pattern.source+\")\",t.pattern.flags),t.lookbehind=!0}(Prism);","!function(e){e.languages.typescript=e.languages.extend(\"javascript\",{\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/}),e.languages.typescript.keyword.push(/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,/\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,/\\btype\\b(?=\\s*(?:[\\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript[\"literal-property\"];var s=e.languages.extend(\"typescript\",{});delete s[\"class-name\"],e.languages.typescript[\"class-name\"].inside=s,e.languages.insertBefore(\"typescript\",\"function\",{decorator:{pattern:/@[$\\w\\xA0-\\uFFFF]+/,inside:{at:{pattern:/^@/,alias:\"operator\"},function:/^[\\s\\S]+/}},\"generic-function\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,greedy:!0,inside:{function:/^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,generic:{pattern:/<[\\s\\S]+/,alias:\"class-name\",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);","!function(a){function e(e,n){a.languages[e]&&a.languages.insertBefore(e,\"comment\",{\"doc-comment\":n})}var n=a.languages.markup.tag,t={pattern:/\\/\\/\\/.*/,greedy:!0,alias:\"comment\",inside:{tag:n}},g={pattern:/'''.*/,greedy:!0,alias:\"comment\",inside:{tag:n}};e(\"csharp\",t),e(\"fsharp\",t),e(\"vbnet\",g)}(Prism);","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined' || !document.createRange) {\n\t\treturn;\n\t}\n\n\tPrism.plugins.KeepMarkup = true;\n\n\tPrism.hooks.add('before-highlight', function (env) {\n\t\tif (!env.element.children.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Prism.util.isActive(env.element, 'keep-markup', true)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dropTokens = Prism.util.isActive(env.element, 'drop-tokens', false);\n\t\t/**\n\t\t * Returns whether the given element should be kept.\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t * @returns {boolean}\n\t\t */\n\t\tfunction shouldKeep(element) {\n\t\t\tif (dropTokens && element.nodeName.toLowerCase() === 'span' && element.classList.contains('token')) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tvar pos = 0;\n\t\tvar data = [];\n\t\tfunction processElement(element) {\n\t\t\tif (!shouldKeep(element)) {\n\t\t\t\t// don't keep this element and just process its children\n\t\t\t\tprocessChildren(element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar o = {\n\t\t\t\t// Store original element so we can restore it after highlighting\n\t\t\t\telement: element,\n\t\t\t\tposOpen: pos\n\t\t\t};\n\t\t\tdata.push(o);\n\n\t\t\tprocessChildren(element);\n\n\t\t\to.posClose = pos;\n\t\t}\n\t\tfunction processChildren(element) {\n\t\t\tfor (var i = 0, l = element.childNodes.length; i < l; i++) {\n\t\t\t\tvar child = element.childNodes[i];\n\t\t\t\tif (child.nodeType === 1) { // element\n\t\t\t\t\tprocessElement(child);\n\t\t\t\t} else if (child.nodeType === 3) { // text\n\t\t\t\t\tpos += child.data.length;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tprocessChildren(env.element);\n\n\t\tif (data.length) {\n\t\t\t// data is an array of all existing tags\n\t\t\tenv.keepMarkup = data;\n\t\t}\n\t});\n\n\tPrism.hooks.add('after-highlight', function (env) {\n\t\tif (env.keepMarkup && env.keepMarkup.length) {\n\n\t\t\tvar walk = function (elt, nodeState) {\n\t\t\t\tfor (var i = 0, l = elt.childNodes.length; i < l; i++) {\n\n\t\t\t\t\tvar child = elt.childNodes[i];\n\n\t\t\t\t\tif (child.nodeType === 1) { // element\n\t\t\t\t\t\tif (!walk(child, nodeState)) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (child.nodeType === 3) { // text\n\t\t\t\t\t\tif (!nodeState.nodeStart && nodeState.pos + child.data.length > nodeState.node.posOpen) {\n\t\t\t\t\t\t\t// We found the start position\n\t\t\t\t\t\t\tnodeState.nodeStart = child;\n\t\t\t\t\t\t\tnodeState.nodeStartPos = nodeState.node.posOpen - nodeState.pos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (nodeState.nodeStart && nodeState.pos + child.data.length >= nodeState.node.posClose) {\n\t\t\t\t\t\t\t// We found the end position\n\t\t\t\t\t\t\tnodeState.nodeEnd = child;\n\t\t\t\t\t\t\tnodeState.nodeEndPos = nodeState.node.posClose - nodeState.pos;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnodeState.pos += child.data.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (nodeState.nodeStart && nodeState.nodeEnd) {\n\t\t\t\t\t\t// Select the range and wrap it with the element\n\t\t\t\t\t\tvar range = document.createRange();\n\t\t\t\t\t\trange.setStart(nodeState.nodeStart, nodeState.nodeStartPos);\n\t\t\t\t\t\trange.setEnd(nodeState.nodeEnd, nodeState.nodeEndPos);\n\t\t\t\t\t\tnodeState.node.element.innerHTML = '';\n\t\t\t\t\t\tnodeState.node.element.appendChild(range.extractContents());\n\t\t\t\t\t\trange.insertNode(nodeState.node.element);\n\t\t\t\t\t\trange.detach();\n\n\t\t\t\t\t\t// Process is over\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t\t// For each tag, we walk the DOM to reinsert it\n\t\t\tenv.keepMarkup.forEach(function (node) {\n\t\t\t\twalk(env.element, {\n\t\t\t\t\tnode: node,\n\t\t\t\t\tpos: 0\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Store new highlightedCode for later hooks calls\n\t\t\tenv.highlightedCode = env.element.innerHTML;\n\t\t}\n\t});\n}());\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t/**\n\t * Plugin name which is used as a class name for <pre> which is activating the plugin\n\t *\n\t * @type {string}\n\t */\n\tvar PLUGIN_NAME = 'line-numbers';\n\n\t/**\n\t * Regular expression used for determining line breaks\n\t *\n\t * @type {RegExp}\n\t */\n\tvar NEW_LINE_EXP = /\\n(?!$)/g;\n\n\n\t/**\n\t * Global exports\n\t */\n\tvar config = Prism.plugins.lineNumbers = {\n\t\t/**\n\t\t * Get node for provided line number\n\t\t *\n\t\t * @param {Element} element pre element\n\t\t * @param {number} number line number\n\t\t * @returns {Element|undefined}\n\t\t */\n\t\tgetLine: function (element, number) {\n\t\t\tif (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar lineNumberRows = element.querySelector('.line-numbers-rows');\n\t\t\tif (!lineNumberRows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;\n\t\t\tvar lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);\n\n\t\t\tif (number < lineNumberStart) {\n\t\t\t\tnumber = lineNumberStart;\n\t\t\t}\n\t\t\tif (number > lineNumberEnd) {\n\t\t\t\tnumber = lineNumberEnd;\n\t\t\t}\n\n\t\t\tvar lineIndex = number - lineNumberStart;\n\n\t\t\treturn lineNumberRows.children[lineIndex];\n\t\t},\n\n\t\t/**\n\t\t * Resizes the line numbers of the given element.\n\t\t *\n\t\t * This function will not add line numbers. It will only resize existing ones.\n\t\t *\n\t\t * @param {HTMLElement} element A `<pre>` element with line numbers.\n\t\t * @returns {void}\n\t\t */\n\t\tresize: function (element) {\n\t\t\tresizeElements([element]);\n\t\t},\n\n\t\t/**\n\t\t * Whether the plugin can assume that the units font sizes and margins are not depended on the size of\n\t\t * the current viewport.\n\t\t *\n\t\t * Setting this to `true` will allow the plugin to do certain optimizations for better performance.\n\t\t *\n\t\t * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tassumeViewportIndependence: true\n\t};\n\n\t/**\n\t * Resizes the given elements.\n\t *\n\t * @param {HTMLElement[]} elements\n\t */\n\tfunction resizeElements(elements) {\n\t\telements = elements.filter(function (e) {\n\t\t\tvar codeStyles = getStyles(e);\n\t\t\tvar whiteSpace = codeStyles['white-space'];\n\t\t\treturn whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line';\n\t\t});\n\n\t\tif (elements.length == 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar infos = elements.map(function (element) {\n\t\t\tvar codeElement = element.querySelector('code');\n\t\t\tvar lineNumbersWrapper = element.querySelector('.line-numbers-rows');\n\t\t\tif (!codeElement || !lineNumbersWrapper) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t/** @type {HTMLElement} */\n\t\t\tvar lineNumberSizer = element.querySelector('.line-numbers-sizer');\n\t\t\tvar codeLines = codeElement.textContent.split(NEW_LINE_EXP);\n\n\t\t\tif (!lineNumberSizer) {\n\t\t\t\tlineNumberSizer = document.createElement('span');\n\t\t\t\tlineNumberSizer.className = 'line-numbers-sizer';\n\n\t\t\t\tcodeElement.appendChild(lineNumberSizer);\n\t\t\t}\n\n\t\t\tlineNumberSizer.innerHTML = '0';\n\t\t\tlineNumberSizer.style.display = 'block';\n\n\t\t\tvar oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\treturn {\n\t\t\t\telement: element,\n\t\t\t\tlines: codeLines,\n\t\t\t\tlineHeights: [],\n\t\t\t\toneLinerHeight: oneLinerHeight,\n\t\t\t\tsizer: lineNumberSizer,\n\t\t\t};\n\t\t}).filter(Boolean);\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lines = info.lines;\n\t\t\tvar lineHeights = info.lineHeights;\n\t\t\tvar oneLinerHeight = info.oneLinerHeight;\n\n\t\t\tlineHeights[lines.length - 1] = undefined;\n\t\t\tlines.forEach(function (line, index) {\n\t\t\t\tif (line && line.length > 1) {\n\t\t\t\t\tvar e = lineNumberSizer.appendChild(document.createElement('span'));\n\t\t\t\t\te.style.display = 'block';\n\t\t\t\t\te.textContent = line;\n\t\t\t\t} else {\n\t\t\t\t\tlineHeights[index] = oneLinerHeight;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lineHeights = info.lineHeights;\n\n\t\t\tvar childIndex = 0;\n\t\t\tfor (var i = 0; i < lineHeights.length; i++) {\n\t\t\t\tif (lineHeights[i] === undefined) {\n\t\t\t\t\tlineHeights[i] = lineNumberSizer.children[childIndex++].getBoundingClientRect().height;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar wrapper = info.element.querySelector('.line-numbers-rows');\n\n\t\t\tlineNumberSizer.style.display = 'none';\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\tinfo.lineHeights.forEach(function (height, lineNumber) {\n\t\t\t\twrapper.children[lineNumber].style.height = height + 'px';\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Returns style declarations for the element\n\t *\n\t * @param {Element} element\n\t */\n\tfunction getStyles(element) {\n\t\tif (!element) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);\n\t}\n\n\tvar lastWidth = undefined;\n\twindow.addEventListener('resize', function () {\n\t\tif (config.assumeViewportIndependence && lastWidth === window.innerWidth) {\n\t\t\treturn;\n\t\t}\n\t\tlastWidth = window.innerWidth;\n\n\t\tresizeElements(Array.prototype.slice.call(document.querySelectorAll('pre.' + PLUGIN_NAME)));\n\t});\n\n\tPrism.hooks.add('complete', function (env) {\n\t\tif (!env.code) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar code = /** @type {Element} */ (env.element);\n\t\tvar pre = /** @type {HTMLElement} */ (code.parentNode);\n\n\t\t// works only for <code> wrapped inside <pre> (not inline)\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort if line numbers already exists\n\t\tif (code.querySelector('.line-numbers-rows')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only add line numbers if <code> or one of its ancestors has the `line-numbers` class\n\t\tif (!Prism.util.isActive(code, PLUGIN_NAME)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the class 'line-numbers' from the <code>\n\t\tcode.classList.remove(PLUGIN_NAME);\n\t\t// Add the class 'line-numbers' to the <pre>\n\t\tpre.classList.add(PLUGIN_NAME);\n\n\t\tvar match = env.code.match(NEW_LINE_EXP);\n\t\tvar linesNum = match ? match.length + 1 : 1;\n\t\tvar lineNumbersWrapper;\n\n\t\tvar lines = new Array(linesNum + 1).join('<span></span>');\n\n\t\tlineNumbersWrapper = document.createElement('span');\n\t\tlineNumbersWrapper.setAttribute('aria-hidden', 'true');\n\t\tlineNumbersWrapper.className = 'line-numbers-rows';\n\t\tlineNumbersWrapper.innerHTML = lines;\n\n\t\tif (pre.hasAttribute('data-start')) {\n\t\t\tpre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);\n\t\t}\n\n\t\tenv.element.appendChild(lineNumbersWrapper);\n\n\t\tresizeElements([pre]);\n\n\t\tPrism.hooks.run('line-numbers', env);\n\t});\n\n\tPrism.hooks.add('line-numbers', function (env) {\n\t\tenv.plugins = env.plugins || {};\n\t\tenv.plugins.lineNumbers = true;\n\t});\n\n}());\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading…';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '✖ Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQ3MV80MzEzKSI+IDxwYXRoIGQ9Ik02IDExLjI1QzguODk5NSAxMS4yNSAxMS4yNSA4Ljg5OTUgMTEuMjUgNkMxMS4yNSAzLjEwMDUxIDguODk5NSAwLjc1IDYgMC43NUMzLjEwMDUxIDAuNzUgMC43NSAzLjEwMDUxIDAuNzUgNkMwLjc1IDguODk5NSAzLjEwMDUxIDExLjI1IDYgMTEuMjVaIiBzdHJva2U9IiM5QkE3QjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPHBhdGggZD0iTTguMjUgNkgzLjc1IiBzdHJva2U9IiM5QkE3QjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQ3MV80MzEzIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FsZW5kYXIiPiA8cGF0aCBkPSJNMjAsM2gtMXYyYzAsMS4xMDQtMC44OTYsMi0yLDJzLTItMC44OTYtMi0yVjNIOXYyYzAsMS4xMDQtMC44OTYsMi0yLDJTNSw2LjEwNCw1LDVWM0g0QzIuODk1LDMsMiwzLjg5NSwyLDV2MTR2MSBjMCwxLjEwNSwwLjg5NSwyLDIsMmgxNmMxLjEwNSwwLDItMC44OTUsMi0ydi0xVjVDMjIsMy44OTUsMjEuMTA1LDMsMjAsM3ogTTcsMTguNUM3LDE4Ljc3NSw2Ljc3NSwxOSw2LjUsMTloLTEgQzUuMjI1LDE5LDUsMTguNzc1LDUsMTguNXYtMUM1LDE3LjIyNSw1LjIyNSwxNyw1LjUsMTdoMUM2Ljc3NSwxNyw3LDE3LjIyNSw3LDE3LjVWMTguNXogTTcsMTQuNUM3LDE0Ljc3NSw2Ljc3NSwxNSw2LjUsMTVoLTEgQzUuMjI1LDE1LDUsMTQuNzc1LDUsMTQuNXYtMUM1LDEzLjIyNSw1LjIyNSwxMyw1LjUsMTNoMUM2Ljc3NSwxMyw3LDEzLjIyNSw3LDEzLjVWMTQuNXogTTcsMTAuNUM3LDEwLjc3NSw2Ljc3NSwxMSw2LjUsMTFoLTEgQzUuMjI1LDExLDUsMTAuNzc1LDUsMTAuNXYtMUM1LDkuMjI1LDUuMjI1LDksNS41LDloMUM2Ljc3NSw5LDcsOS4yMjUsNyw5LjVWMTAuNXogTTExLDE4LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTksOSwxOC43NzUsOSwxOC41di0xQzksMTcuMjI1LDkuMjI1LDE3LDkuNSwxN2gxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTguNXogTTExLDE0LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTUsOSwxNC43NzUsOSwxNC41di0xQzksMTMuMjI1LDkuMjI1LDEzLDkuNSwxM2gxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTQuNXogTTExLDEwLjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTEsOSwxMC43NzUsOSwxMC41di0xQzksOS4yMjUsOS4yMjUsOSw5LjUsOWgxQzEwLjc3NSw5LDExLDkuMjI1LDExLDkuNVYxMC41eiBNMTUsMTguNWMwLDAuMjc1LTAuMjI1LDAuNS0wLjUsMC41aC0xIGMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNVYxOC41eiBNMTUsMTQuNWMwLDAuMjc1LTAuMjI1LDAuNS0wLjUsMC41IGgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNVYxNC41eiBNMTUsMTAuNSBjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMUMxMyw5LjIyNSwxMy4yMjUsOSwxMy41LDloMUMxNC43NzUsOSwxNSw5LjIyNSwxNSw5LjVWMTAuNXogTTE5LDE4LjUgYzAsMC4yNzUtMC4yMjUsMC41LTAuNSwwLjVoLTFjLTAuMjc1LDAtMC41LTAuMjI1LTAuNS0wLjV2LTFjMC0wLjI3NSwwLjIyNS0wLjUsMC41LTAuNWgxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTguNXogTTE5LDE0LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNSBWMTQuNXogTTE5LDEwLjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMUMxNyw5LjIyNSwxNy4yMjUsOSwxNy41LDloMUMxOC43NzUsOSwxOSw5LjIyNSwxOSw5LjUgVjEwLjV6IE02LDVWMmMwLTAuNTUyLDAuNDQ4LTEsMS0xczEsMC40NDgsMSwxdjNjMCwwLjU1Mi0wLjQ0OCwxLTEsMVM2LDUuNTUyLDYsNXogTTE2LDVWMmMwLTAuNTUyLDAuNDQ3LTEsMS0xczEsMC40NDgsMSwxdjMgYzAsMC41NTItMC40NDcsMS0xLDFTMTYsNS41NTIsMTYsNXoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDI0IDI0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+IDxnIGlkPSJjYW5jZWwiPiA8cGF0aCBkPSJNMTkuMDcxLDE3LjY1N0wxMy40MTQsMTJsNS42NTctNS42NTdjMC4zOS0wLjM5LDAuMzktMS4wMjQsMC0xLjQxNHMtMS4wMjQtMC4zOS0xLjQxNCwwTDEyLDEwLjU4Nkw2LjM0Myw0LjkyOSBjLTAuMzktMC4zOS0xLjAyNC0wLjM5LTEuNDE0LDBzLTAuMzksMS4wMjQsMCwxLjQxNEwxMC41ODYsMTJsLTUuNjU3LDUuNjU3Yy0wLjM5MSwwLjM5MS0wLjM5LDEuMDI0LDAsMS40MTRzMS4wMjMsMC4zOTEsMS40MTQsMCBMMTIsMTMuNDE0bDUuNjU3LDUuNjU3YzAuMzksMC4zOSwxLjAyNCwwLjM5LDEuNDE0LDBTMTkuNDYyLDE4LjA0NywxOS4wNzEsMTcuNjU3eiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic21zIj4gPHBhdGggZD0iTTE4LjQ4MSwxMGgtMS45NDdjLTIuMTg4LDAtNC4xNDIsMS42MDItNC40NzksMy44NDhDMTEuNjMsMTYuNjc4LDEzLjY5OCwxOSwxNi4zNDcsMTloMS4xSDE4IGMwLjI2NCwwLjQwOSwwLjQ3NCwxLjA0MiwwLjQ3NCwxLjU3MWMwLDAuMjY1LTAuMDM5LDAuNjExLTAuMTE0LDAuOTM5Yy0wLjA3NSwwLjMyOSwwLjI1MiwwLjYwNCwwLjUzNiwwLjQ0MSBjMS45NjgtMS4xMzIsNC4wNDctNC4zMTcsNC4xMDMtNy4yNTlDMjMuMDQ4LDEyLjExMiwyMC45NjUsMTAsMTguNDgxLDEweiIvPiA8cGF0aCBzdHlsZT0ib3BhY2l0eTowLjU7IiBkPSJNMTYuOTIxLDcuNDUxQzE2LjQzMSw0LjI2OSwxMy41ODgsMiwxMC40MDYsMkg3LjU3M0MzLjk2LDIsMC45Myw0Ljk5MiwxLjAwMSw4LjY0OCBjMC4wODIsNC4xNjgsMy4xMDUsOC42NzksNS45NjgsMTAuMjgzYzAuNDE0LDAuMjMyLDAuODg5LTAuMTU5LDAuNzgtMC42MjRjLTAuMTA5LTAuNDY2LTAuMTY2LTAuOTU1LTAuMTY2LTEuMzMxIGMwLTAuNzUsMC4wMzMtMS4zOTYsMC40MTctMS45NzZoMC44MDRoMS42YzAuMjA2LDAsMC40MS0wLjAxNSwwLjYxMi0wLjAzNWMtMC4wMjktMC40MTctMC4wMTUtMC44NDEsMC4wNDktMS4yNjYgQzExLjQ2NywxMS4wMiwxMy44MTgsOSwxNi41MzMsOWgwLjQzM0MxNy4wMTIsOC40OTYsMTcuMDAyLDcuOTc4LDE2LjkyMSw3LjQ1MXoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzY0KSI+IDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMS44MTA2NiA2LjAwMDA2TDMuOTA1MzMgMy45MDUzOEwyLjg0NDY3IDIuODQ0NzNMMC4yMTk2NyA1LjQ2OTczQy0wLjA3MzIyMzMgNS43NjI2MiAtMC4wNzMyMjMzIDYuMjM3NDkgMC4yMTk2NyA2LjUzMDM4TDIuODQ0NjcgOS4xNTU0TDMuOTA1MzMgOC4wOTQ3NUwxLjgxMDY2IDYuMDAwMDZaTTQuMTU5NTggOC40ODg0Mkw2LjQ1NDU4IDIuOTM4NEw3Ljg0MDcyIDMuNTExNkw1LjU0NTc0IDkuMDYxNTdMNC4xNTk1OCA4LjQ4ODQyWk0xMS43ODAzIDUuNDY5NzNMOS4xNTUzMiAyLjg0NDczTDguMDk0NjcgMy45MDUzOEwxMC4xODkzIDYuMDAwMDZMOC4wOTQ2NyA4LjA5NDc1TDkuMTU1MzIgOS4xNTU0TDExLjc4MDMgNi41MzAzOEMxMi4wNzMyIDYuMjM3NDkgMTIuMDczMiA1Ljc2MjYyIDExLjc4MDMgNS40Njk3M1oiIGZpbGw9IndoaXRlIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzY0Ij4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE4OV80Mjk4OSkiPiA8cGF0aCBkPSJNNy41IDQuNUgxLjVWMTAuNUg3LjVWNC41WiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNMy43NSA0LjVWMS41SDEwLjVWOC4yNUg3LjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPC9nPiA8ZGVmcz4gPGNsaXBQYXRoIGlkPSJjbGlwMF8xODlfNDI5ODkiPiA8cmVjdCB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9IndoaXRlIiAvPiA8L2NsaXBQYXRoPiA8L2RlZnM+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDIuMjVDMCAxLjgzNTc5IDAuMzM1Nzg2IDEuNSAwLjc1IDEuNUgxMS4yNUMxMS42NjQyIDEuNSAxMiAxLjgzNTc5IDEyIDIuMjVWNC41SDEwLjVWM0gxLjVWOC4yNUg0LjVWOS43NUgwLjc1QzAuMzM1Nzg2IDkuNzUgMCA5LjQxNDIzIDAgOVYyLjI1Wk05Ljc1IDcuNUgxMlY5SDkuNzVWMTEuMjVIOC4yNVY5SDZWNy41SDguMjVWNS4yNUg5Ljc1VjcuNVoiIGZpbGw9IndoaXRlIiAvPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTExLjcwNjcgMy4yNjY2N0wxMi4wMjY3IDQuMDEzMzNWMTIuOTczM0wxMS4wMTMzIDEzLjk4NjdIMkwwLjk4NjY2NyAxMi45NzMzVjAuOTczMzMzTDIgMC4wMTMzMzMzSDguMDI2NjdMOC43MiAwLjI4TDExLjcwNjcgMy4yNjY2N1pNMTEuMDEzMyAxMi45NzMzVjQuOTczMzNINy4wMTMzM1YwLjk3MzMzM0gyVjEyLjk3MzNIMTEuMDEzM1pNOC4wMjY2NyA0LjAxMzMzSDExLjAxMzNMOC4wMjY2NyAwLjk3MzMzM1Y0LjAxMzMzWiIgZmlsbD0iI0M1QzVDNSIvPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wLjc1IDMuODU2NjZMMS43MTMzNSAyLjg5MzMxTDYgNy4xNzk0M0wxMC4yODY3IDIuODkzMzFMMTEuMjUgMy44NTY2Nkw2IDkuMTA2NjZMMC43NSAzLjg1NjY2WiIgZmlsbD0iI0QxRDVEQiIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4gPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTEyIDEzLjc1QzEyLjk2NjUgMTMuNzUgMTMuNzUgMTIuOTY2NSAxMy43NSAxMkMxMy43NSAxMS4wMzM1IDEyLjk2NjUgMTAuMjUgMTIgMTAuMjVDMTEuMDMzNSAxMC4yNSAxMC4yNSAxMS4wMzM1IDEwLjI1IDEyQzEwLjI1IDEyLjk2NjUgMTEuMDMzNSAxMy43NSAxMiAxMy43NVoiIGZpbGw9IiMwMDAwMDAiLz4gPHBhdGggZD0iTTEyIDYuNzVDMTIuOTY2NSA2Ljc1IDEzLjc1IDUuOTY2NSAxMy43NSA1QzEzLjc1IDQuMDMzNSAxMi45NjY1IDMuMjUgMTIgMy4yNUMxMS4wMzM1IDMuMjUgMTAuMjUgNC4wMzM1IDEwLjI1IDVDMTAuMjUgNS45NjY1IDExLjAzMzUgNi43NSAxMiA2Ljc1WiIgZmlsbD0iIzAwMDAwMCIvPiA8cGF0aCBkPSJNMTIgMjAuNzVDMTIuOTY2NSAyMC43NSAxMy43NSAxOS45NjY1IDEzLjc1IDE5QzEzLjc1IDE4LjAzMzUgMTIuOTY2NSAxNy4yNSAxMiAxNy4yNUMxMS4wMzM1IDE3LjI1IDEwLjI1IDE4LjAzMzUgMTAuMjUgMTlDMTAuMjUgMTkuOTY2NSAxMS4wMzM1IDIwLjc1IDEyIDIwLjc1WiIgZmlsbD0iIzAwMDAwMCIvPiA8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjQ0Nzk5IDAuMTA2NjkxQzEuMDc4ODYgLTAuMDc3OTk5OSAwLjYzNDE5MiAtMC4wMTY5MjYxIDAuMzI4NTI4IDAuMjYwNDQ0QzAuMDIyODY0NCAwLjUzNzgxMyAtMC4wODA5OCAwLjk3NDQ4MiAwLjA2NzEwMDEgMS4zNTk3NkwyLjYyMTIyIDguMDA1MDVMMC4wNjcyODQ3IDE0LjYzOTdDLTAuMDgwOTg2OSAxNS4wMjQ5IDAuMDIyNjE2OCAxNS40NjE2IDAuMzI4MTEgMTUuNzM5MUMwLjYzMzYwNCAxNi4wMTY2IDEuMDc4MjIgMTYuMDc4IDEuNDQ3NDQgMTUuODkzNUwxNS40NDY0IDguODk5OTFDMTUuNzg1MyA4LjczMDYzIDE1Ljk5OTQgOC4zODQ0MiAxNS45OTk1IDguMDA1NjRDMTUuOTk5NiA3LjYyNjg1IDE1Ljc4NTcgNy4yODA1MiAxNS40NDcgNy4xMTEwM0wxLjQ0Nzk5IDAuMTA2NjkxWk00LjM3OTYxIDcuMDA1MzNMMi44NTkwMyAzLjA0OTA3TDEwLjc2NjEgNy4wMDUzM0g0LjM3OTYxWk00LjM3OTIzIDkuMDA1MzNMMi44NTk5NCAxMi45NTIyTDEwLjc2MDIgOS4wMDUzM0g0LjM3OTIzWiIgZmlsbD0iIzA5NzJEMyIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iZXJyb3JfaW5saW5lIj4gPHBhdGggZD0iTTEyLDFDNS45MiwxLDEsNS45MiwxLDEyYzAsNi4wOCw0LjkyLDExLDExLDExczExLTQuOTIsMTEtMTFDMjMsNS45MiwxOC4wOCwxLDEyLDF6IE0xMiwxOGMtMC41NSwwLTEtMC40NS0xLTFzMC40NS0xLDEtMSBzMSwwLjQ1LDEsMVMxMi41NSwxOCwxMiwxOHogTTEzLDEzLjg3NkMxMywxNC40OTUsMTIuNTUsMTUsMTIsMTVzLTEtMC41MDUtMS0xLjEyNFY3LjEyNEMxMSw2LjUwNSwxMS40NSw2LDEyLDZzMSwwLjUwNSwxLDEuMTI0IFYxMy44NzZ6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYzKSI+IDxwYXRoIGQ9Ik03LjUgMS41SDEwLjVWNC41IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgLz4gPHBhdGggZD0iTTQuNSA3LjVMMTAuNSAxLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMTAuNSA2Ljc4NlYxMC41SDEuNVYxLjVINS4yNSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzYzIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icmVkZXllIj4gPHBhdGggc3R5bGU9Im9wYWNpdHk6MC41OyIgZD0iTTE1LDEyYy0xLjEwNSwwLTItMC44OTUtMi0yYzAtMC42NCwwLjMwNi0xLjIwMiwwLjc3My0xLjU2OUMxMy4yMzYsOC4xNjQsMTIuNjQsOCwxMiw4IGMtMi4yMDksMC00LDEuNzkxLTQsNGMwLDIuMjA5LDEuNzkxLDQsNCw0czQtMS43OTEsNC00YzAtMC4wOS0wLjAyMS0wLjE3NC0wLjAyNi0wLjI2M0MxNS42ODQsMTEuOSwxNS4zNTUsMTIsMTUsMTJ6Ii8+IDxwYXRoIGQ9Ik0yMi44NDIsMTEuNDZDMjIuNjUyLDExLjE2LDE4LjAwMSw0LDEyLDRTMS4zNDgsMTEuMTYsMS4xNTgsMTEuNDZjLTAuMjEsMC4zMy0wLjIxLDAuNzUsMCwxLjA4IEMxLjM0OCwxMi44NCw1Ljk5OSwyMCwxMiwyMHMxMC42NTItNy4xNiwxMC44NDItNy40NkMyMy4wNTMsMTIuMjEsMjMuMDUzLDExLjc5LDIyLjg0MiwxMS40NnogTTEyLDE3IGMtMi43NjIsMC01LjAwMS0yLjIzOS01LjAwMS01UzkuMjM4LDcsMTIsN3M1LjAwMSwyLjIzOSw1LjAwMSw1UzE0Ljc2MiwxNywxMiwxN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iaW5mb3JtYXRpb24iPiA8cGF0aCBkPSJNMTIsMUM1LjkyNSwxLDEsNS45MjUsMSwxMnM0LjkyNSwxMSwxMSwxMXMxMS00LjkyNSwxMS0xMVMxOC4wNzUsMSwxMiwxeiBNMTQsMTdjMCwxLjEwNS0wLjg5NSwyLTIsMnMtMi0wLjg5NS0yLTJ2LTUgYzAtMS4xMDUsMC44OTUtMiwyLTJzMiwwLjg5NSwyLDJWMTd6IE0xMiw4Yy0xLjEwNSwwLTItMC44OTUtMi0yYzAtMS4xMDUsMC44OTUtMiwyLTJzMiwwLjg5NSwyLDJDMTQsNy4xMDUsMTMuMTA1LDgsMTIsOHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FyZXRfbGVmdCI+IDxwYXRoIGQ9Ik0xNCwxOGMtMC4yNTYsMC0wLjUxMi0wLjA5OC0wLjcwNy0wLjI5M2wtNS01Yy0wLjM5MS0wLjM5MS0wLjM5MS0xLjAyMywwLTEuNDE0bDUtNWMwLjM5MS0wLjM5MSwxLjAyMy0wLjM5MSwxLjQxNCwwIHMwLjM5MSwxLjAyMywwLDEuNDE0TDEwLjQxNCwxMmw0LjI5Myw0LjI5M2MwLjM5MSwwLjM5MSwwLjM5MSwxLjAyMywwLDEuNDE0QzE0LjUxMiwxNy45MDIsMTQuMjU2LDE4LDE0LDE4eiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibGlnaHQiPiA8cGF0aCBkPSJNNy4xMDYsMTNoOS43ODlDMTguMTkyLDExLjcyOSwxOSw5Ljk2LDE5LDhjMC0zLjg2Ni0zLjEzNC03LTctN1M1LDQuMTM0LDUsOEM1LDkuOTYsNS44MDgsMTEuNzI5LDcuMTA2LDEzeiIvPiA8cGF0aCBzdHlsZT0ib3BhY2l0eTowLjU7IiBkPSJNMTQsMjFoMXYxYzAsMC41NTMtMC40NDcsMS0xLDFoLTRjLTAuNTUyLDAtMS0wLjQ0Ny0xLTF2LTFoMUgxNHogTTcsMTRjMCwwLDEsMS41LDEsM2MwLDEsMCwyLDEsM2g2IGMxLTEsMS0yLDEtM2MwLTEuNSwxLTMsMS0zSDd6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iaHlwZXJsaW5rIj4gPHBhdGggZD0iTTE2LjUsNWgtNGMtMi4xMywwLTMuOTgsMS4yMi00Ljg5LDNoMi40NWMwLjYzLTAuNjIsMS40OS0xLDIuNDQtMWg0YzEuOTMsMCwzLjUsMS41NywzLjUsMy41UzE4LjQzLDE0LDE2LjUsMTRoLTQgYy0xLjM5LDAtMi42LTAuODItMy4xNS0ySDcuMjFjMC42NSwyLjMsMi43OCw0LDUuMjksNGg0YzMuMDMsMCw1LjUtMi40Nyw1LjUtNS41QzIyLDcuNDcsMTkuNTMsNSwxNi41LDV6IE0xMS41LDE4aC00IEM1LjU3LDE4LDQsMTYuNDMsNCwxNC41UzUuNTcsMTEsNy41LDExaDRjMS4zOSwwLDIuNiwwLjgyLDMuMTUsMmgyLjE0Yy0wLjY1LTIuMy0yLjc4LTQtNS4yOS00aC00QzQuNDcsOSwyLDExLjQ3LDIsMTQuNSBDMiwxNy41Myw0LjQ3LDIwLDcuNSwyMGg0YzIuMTMsMCwzLjk4LTEuMjIsNC44OS0zaC0yLjQ1QzEzLjMxLDE3LjYyLDEyLjQ1LDE4LDExLjUsMTh6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iYW5ub3VuY2VyIj4gPHBhdGggZD0iTTIwLjg5OSwxOS4zOTRsLTYuNDktMTUuMDk1bC0xMS4xNCwxMS4xNGw4LjUzMSwzLjY1M2wtMS42NjksMS44MjFjLTAuMTA2LDAuMTE3LTAuMTUyLDAuMjc2LTAuMTIzLDAuNDMyIGMwLjAzLDAuMTU1LDAuMTMxLDAuMjg3LDAuMjcyLDAuMzU2bDIuNTcxLDEuMjVjMC4wNywwLjAzNCwwLjE0NSwwLjA1LDAuMjE5LDAuMDVjMC4xMzcsMCwwLjI3Mi0wLjA1NywwLjM2OS0wLjE2M2wyLTIuMTg3IGwyLjk0MiwxLjI2TDIwLjg5OSwxOS4zOTR6Ii8+IDxwYXRoIHN0eWxlPSJvcGFjaXR5OjAuNTsiIGQ9Ik05LjUsNkM5LjMzOSw2LDkuMTgsNS45MjIsOS4wODQsNS43NzdsLTItM2MtMC4xNTMtMC4yMy0wLjA5MS0wLjU0LDAuMTM5LTAuNjkzIHMwLjU0MS0wLjA5MiwwLjY5MywwLjEzOWwyLDNjMC4xNTMsMC4yMywwLjA5MSwwLjU0LTAuMTM5LDAuNjkzQzkuNjkyLDUuOTczLDkuNTk2LDYsOS41LDZ6IE00LjkxNiwxMC43NzcgYzAuMTUzLTAuMjMsMC4wOTEtMC41NC0wLjEzOS0wLjY5M2wtMy0yQzEuNTQ1LDcuOTMsMS4yMzYsNy45OTMsMS4wODQsOC4yMjNjLTAuMTUzLDAuMjMtMC4wOTEsMC41NCwwLjEzOSwwLjY5M2wzLDIgQzQuMzA4LDEwLjk3Myw0LjQwNCwxMSw0LjUsMTFDNC42NjEsMTEsNC44MiwxMC45MjIsNC45MTYsMTAuNzc3eiBNNi44NTQsNy44NTRjMC4xOTUtMC4xOTUsMC4xOTUtMC41MTIsMC0wLjcwN2wtNC00IGMtMC4xOTUtMC4xOTUtMC41MTItMC4xOTUtMC43MDcsMHMtMC4xOTUsMC41MTIsMCwwLjcwN2w0LDRDNi4yNDQsNy45NTEsNi4zNzIsOCw2LjUsOFM2Ljc1Niw3Ljk1MSw2Ljg1NCw3Ljg1NHogTTE4Ljg1NCwyMi44NTQgbDMtM2MwLjE5NS0wLjE5NSwwLjE5NS0wLjUxMiwwLTAuNzA3cy0wLjUxMi0wLjE5NS0wLjcwNywwbC0zLDNjLTAuMTk1LDAuMTk1LTAuMTk1LDAuNTEyLDAsMC43MDcgQzE4LjI0NCwyMi45NTEsMTguMzcyLDIzLDE4LjUsMjNTMTguNzU2LDIyLjk1MSwxOC44NTQsMjIuODU0eiBNMi44NTQsMTUuODU0bDEyLTEyYzAuMTk1LTAuMTk1LDAuMTk1LTAuNTEyLDAtMC43MDcgcy0wLjUxMi0wLjE5NS0wLjcwNywwbC0xMiwxMmMtMC4xOTUsMC4xOTUtMC4xOTUsMC41MTIsMCwwLjcwN0MyLjI0NCwxNS45NTEsMi4zNzIsMTYsMi41LDE2UzIuNzU2LDE1Ljk1MSwyLjg1NCwxNS44NTR6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibWVudSI+IDxwYXRoIGQ9Ik0yMSw4SDNDMi40NDgsOCwyLDcuNTUyLDIsN3MwLjQ0OC0xLDEtMWgxOGMwLjU1MywwLDEsMC40NDgsMSwxUzIxLjU1Myw4LDIxLDh6IE0yMiwxMmMwLTAuNTUyLTAuNDQ3LTEtMS0xSDMgYy0wLjU1MiwwLTEsMC40NDgtMSwxczAuNDQ4LDEsMSwxaDE4QzIxLjU1MywxMywyMiwxMi41NTIsMjIsMTJ6IE0yMiwxN2MwLTAuNTUzLTAuNDQ3LTEtMS0xSDNjLTAuNTUyLDAtMSwwLjQ0Ny0xLDFzMC40NDgsMSwxLDEgaDE4QzIxLjU1MywxOCwyMiwxNy41NTMsMjIsMTd6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icmVtb3ZlIj4gPHBhdGggZD0iTTIxLDEzSDNjLTAuNTUyLDAtMS0wLjQ0OC0xLTFzMC40NDgtMSwxLTFoMThjMC41NTIsMCwxLDAuNDQ4LDEsMVMyMS41NTIsMTMsMjEsMTN6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiBpZD0ic3ZnNDEiIHdpZHRoPSIyMi45NDU4MThtbSIgaGVpZ2h0PSIyNS45MjU4NDRtbSIgdmlld0JveD0iMCAwIDg2LjcyNDM1IDk3Ljk4NzQ0MyIgc29kaXBvZGk6ZG9jbmFtZT0iTXluYWhJY29uV2hpdGUuc3ZnIiBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEgKGM0ZThmOWUsIDIwMjEtMDUtMjQpIiB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPiA8c29kaXBvZGk6bmFtZWR2aWV3IGlkPSJuYW1lZHZpZXc2IiBwYWdlY29sb3I9IiNmZmZmZmYiIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiBib3JkZXJvcGFjaXR5PSIxLjAiIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiIHNob3dncmlkPSJmYWxzZSIgdW5pdHM9Im1tIiBmaXQtbWFyZ2luLXRvcD0iMCIgZml0LW1hcmdpbi1sZWZ0PSIwIiBmaXQtbWFyZ2luLXJpZ2h0PSIwIiBmaXQtbWFyZ2luLWJvdHRvbT0iMCIgaW5rc2NhcGU6em9vbT0iMi4yNTAwMDAxIiBpbmtzY2FwZTpjeD0iNTQuODg4ODg3IiBpbmtzY2FwZTpjeT0iODMuMzMzMzMxIiBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEyOTYiIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDMiIGlua3NjYXBlOndpbmRvdy14PSIwIiBpbmtzY2FwZTp3aW5kb3cteT0iMjMiIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9Imc0NyIgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIiAvPiA8ZGVmcyBpZD0iZGVmczQ1IiAvPiA8ZyBpZD0iZzQ3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEwLjU3MjU3LC04OS4zNDQxMzUpIj4gPHBhdGggaWQ9InBhdGgxMTkiIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuNjY2NjY3IiBkPSJtIDEzMi4zMDczLDE3NS42OTcyOCBjIC0xMC45OTE5LC02LjM5MTk2IC0yMC41NDgzLC0xMS43MTUyNiAtMjEuMDE0NzMsLTEyLjM1MzE0IC0xLC0xIC0wLjY2NjY2LC03LjEyMzE5IC0wLjY2NjY2LC0yNS4wOTAyNSAwLC0yMy40NDI5MiAwLjAwNCwtMjMuNTA2MTkgMS41LC0yNS4xMzk0NSAyLjI2NjQxLC0yLjQ3Mzk5IDM5LjY3MSwtMjMuNzcwMzA1IDQxLjc0OTg2LC0yMy43NzAzMDUgMi4wMDU4LDAgNDAuMzc5NDQsMjEuOTA4MTk1IDQyLjI2ODgxLDI0LjEzMjAwNSAxLjAyNzg2LDEuMjA5ODEgMS4xNTU3OCwyLjcxNDY4IDEuMTUyMjgsOS45NzEwOCBsIC0wLjAwNCw4Ljg5NjkyIGMgLTIuNDU5NDIsMS40Mzk5NCAtNS42MzMwNCwyLjY5MjU5IC03Ljk2NjE3LDQuMDM4NjQgLTAuMzcxOCwtMC4xNTMyNyAtMC4wNjg3LC0xLjAzODYzIC0wLjA1NDQsLTguODI2NTQgMC4wMjA2LC0xMS4yMTIxIDAuMDIwNiwtOS4yMTIxIC0xLjUxODY4LC0xMC4zMTg3NiAtMS41MjExNCwtMS4wOTM2NSAtMzIuNTE5MzMsLTE4LjU2MDAwOCAtMzMuODQ0MTYsLTE4LjU2MDAwOCAtMS4yNTIzNSwwIC0zMS4wNDUyOSwxNi45Njg1NjggLTMzLjExNjU5LDE4Ljg2MTU0OCAtMS40OTAxOCwxLjM2MTg5IC0xLjUsMS40OTg2NiAtMS41LDIwLjg4NzQgdiAxOS41MTY1MyBsIDIuMTY2NjcsMS42MDIyOSBjIDEuMTkxNjcsMC44ODEyNyA4LjQ4MzAzLDUuMjQ2NTQgMTYuMjAzMDMsOS43MDA2IDEwLjI1NTM0LDUuOTE2ODQgMTQuNjMzNjgsOC4wOTgzIDE2LjI1MzgxLDguMDk4MyAxLjYxNjk0LDAgNi4yMTA5MywtMi4yODA3NCAxNi45NjM2NCwtOC40MjE4IDguMTEwNCwtNC42MzE5OCAxNS4xODIwNCwtOS40ODY3MyAxNi4xNzAwNSwtMTAuMTg5NDUgMi4xNjY2NiwtMS41NDEwMyAyLjI0MjgsLTAuNzIyNDkgMi4yNDI4LC02LjIxODg5IHYgLTguMTY5ODYgYyAzLjM5NTIxLC0xLjg4NTk2IDYuMzcxNzgsLTMuMjg2OCA4LC00IDAsMiA3LjFlLTQsNS41ODU5OCAtMC4xMjA3OSwxMS43MDYxNSAtMC4yMDg5OCwxMC41MjY1NSAtMC4yNDA1LDEwLjcyNzI5IC0xLjg3OTIxLDExLjk2NjA3IC00LjAzMzQ2LDMuMDQ5MDggLTQwLjEwNzk0LDIzLjMyNjU0IC00MS40Nzg3NywyMy4zMTUyMSAtMC44MzY2NywtMC4wMDcgLTEwLjUxNDYsLTUuMjQyMzQgLTIxLjUwNjUsLTExLjYzNDI5IHogbSA2Ljk4NTI3LC0xMy4yNDU3NCAtMTMsLTcuNTI2NCAtMC4xODE3LC0xMi4xMjM4MyBjIC0wLjEyOTU3LC04LjY0NDk4IDAuMDMzNSwtMTIuMTIzODQgMC41Njg0MSwtMTIuMTIzODQgMC40MTI1NywwIDIuMjE5MDMsMC44MjUgNC4wMTQzNiwxLjgzMzMzIGwgMy4yNjQyNSwxLjgzMzM0IDYuNmUtNCw3LjM5NjY3IGMgMy40ZS00LDQuMzMwODQgMC4xMzU4NSw3LjQ3NDA5IDAuMzM0MDIsOC42MDMzMyA0LDIgNC4wMTIxMiwxLjk3OTEzIDkuMDUzODUsNC45MDE3MiAxMS4xODMwNiw2LjQ4MjYgOS42NTg0MSw2LjQ4MyAyMC45MjkyNCwtMC4wMDUgbCA5LjY2MzA1LC01LjU2MzA2IDAuMDEwMywtMTEuNTE3MTIgMC4wMTAzLC0xMS41MTcxMiAtMS44MzMzMywwLjk1NzQzIGMgLTEuMDA4MzQsMC41MjY1OSAtNS4yODMzNCwyLjkzMjY5IC05LjUsNS4zNDY4OSAtNC4yMTY2NywyLjQxNDIgLTguMTMyNDUsNC4zOTEwNiAtOC43MDE3NCw0LjM5MzAyIC0xLjEyNjk5LDAuMDA0IC0yMi44ODM1MiwtMTIuMTQ0MjIgLTI0LjgyMjk0LC0xMy44NjAyOCAtMC42NTUyNSwtMC41Nzk3OCAtMC44MDg3MywtMS4xMzY0OCAtMSwtMi4wMDI3NyAwLjI3ODA4LC0xLjM3ODY4IDIxLjE5MTI3LC0xMi4xMzM3MSAyNS43ODkyNSwtMTQuODAwMDUgMS40MDIwMiwwLjY2NjM0IDEyLjA2ODc2LDYuNTQyNDggMTIuMDY4NzYsNi41NDI0OCAtMi4zNzA1NywxLjcyOTcgLTQuNjY4MjcsMy4zNjg0MiAtNi42NjY3NCw1LjEyMzg2IC00LC0yIC0zLjQ4NzYzLC0xLjY5OTg0IC01LjQ2MTM1LC0yLjY0MTA0IC0zLjE3MjI4LDEuOTQzMTcgLTQuNTM4NjUsMi42NDEwNCAtOS44NzE5MSw2LjA0Nzg0IDIuMzMzMjYsMS41OTMyIDcuMzMzMjYsNC41OTMyIDkuOTUwNTcsNS41OTM1MyAyLjM4MjY5LC0xLjAwMDMzIDIuMzgyNjksLTEuMDAwMzMgMTAuNzgzNTYsLTUuMDg5OTYgOS45NzI5MiwtNC44NTQ5MiA4Ljg3NjYsLTUuNTIyNTcgMTQuNTc3MDYsLTEuOTI0MDIgbCAyLjcxMjA0LDEuNzEyMDMgLTAuMTc4MjgsMTYuMzg1NDEgLTAuNTExNjksMTUuOTE2MjEgLTEyLjY2NjU5LDguMDMxOTcgYyAtNi45ODU4LDQuNDI5NzUgLTEzLjMzMzQxLDYuOTY4MDMgLTE0LjY2NjY3LDcuNTgyNDYgLTEuNjY2NzQsLTAuNjE0NDMgLTcuMzQyMTEsLTMuMjY2MTIgLTE0LjY2NjY3LC03LjUwNjcgeiIgLz4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYwKSI+IDxwYXRoIGQ9Ik02IDEuNjI1QzMuMzc1IDEuNjI1IDMuMzc1IDUuMTI1IDMuMzc1IDUuMTI1TDAuNzUgOC4yNUgxMS4yNUw4LjYyNSA1LjEyNUM4LjYyNSA1LjEyNSA4LjYyNSAxLjYyNSA2IDEuNjI1WiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNNC4yNSA4LjYyNVY5LjVDNC4yNSA5Ljk2NDEzIDQuNDM0MzcgMTAuNDA5MiA0Ljc2MjU2IDEwLjczNzRDNS4wOTA3NSAxMS4wNjU2IDUuNTM1ODcgMTEuMjUgNiAxMS4yNUM2LjQ2NDEzIDExLjI1IDYuOTA5MjQgMTEuMDY1NiA3LjIzNzQzIDEwLjczNzRDNy41NjU2MiAxMC40MDkyIDcuNzUgOS45NjQxMyA3Ljc1IDkuNVY4LjYyNSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNNiAwLjc1VjEuNjI1IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPC9nPiA8ZGVmcz4gPGNsaXBQYXRoIGlkPSJjbGlwMF80MjZfMjM2MCI+IDxyZWN0IHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0id2hpdGUiIC8+IDwvY2xpcFBhdGg+IDwvZGVmcz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibGlzdF9jaGVjayI+IDxwYXRoIGQ9Ik0xMiwyM0M1LjkzNSwyMywxLDE4LjA2NSwxLDEyUzUuOTM1LDEsMTIsMWMxLjgzNywwLDMuNjU3LDAuNDYzLDUuMjYzLDEuMzM5YzAuNDg0LDAuMjY1LDAuNjYzLDAuODcyLDAuMzk4LDEuMzU3IHMtMC44NzIsMC42NjQtMS4zNTcsMC4zOTlDMTQuOTkyLDMuMzc4LDEzLjUwNCwzLDEyLDNjLTQuOTYyLDAtOSw0LjAzOC05LDljMCw0Ljk2Myw0LjAzOCw5LDksOWM0Ljk2MywwLDktNC4wMzcsOS05IGMwLTAuNTMzLTAuMDUyLTEuMDcxLTAuMTU3LTEuNjQ0Yy0wLjEwMS0wLjU0MywwLjI1OS0xLjA2NSwwLjgwMi0xLjE2NWMwLjU1Mi0wLjA5OSwxLjA2NCwwLjI2LDEuMTY1LDAuODAyIEMyMi45MzgsMTAuNjg4LDIzLDExLjM0NCwyMywxMkMyMywxOC4wNjUsMTguMDY1LDIzLDEyLDIzeiBNMTEuNzA3LDE1LjcwN2w5LTljMC4zOTEtMC4zOTEsMC4zOTEtMS4wMjMsMC0xLjQxNCBzLTEuMDIzLTAuMzkxLTEuNDE0LDBMMTEsMTMuNTg2bC0zLjI5My0zLjI5M2MtMC4zOTEtMC4zOTEtMS4wMjMtMC4zOTEtMS40MTQsMHMtMC4zOTEsMS4wMjMsMCwxLjQxNGw0LDQgQzEwLjQ4OCwxNS45MDIsMTAuNzQ0LDE2LDExLDE2UzExLjUxMiwxNS45MDIsMTEuNzA3LDE1LjcwN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjY1ODMgNS41NzAyTDAuNzUgNi40Nzg1TDQuMjI3MzUgOS45NTU4NUwxMS4yNSAyLjkzMzJMMTAuMzQxNyAyLjAyNDlMNC4yMjczNSA4LjEzOTI1TDEuNjU4MyA1LjU3MDJaIiBmaWxsPSJ3aGl0ZSIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icGF1c2UiPiA8cGF0aCBkPSJNOSwyMkg2Yy0wLjU1LDAtMS0wLjQ1LTEtMVYzYzAtMC41NSwwLjQ1LTEsMS0xaDNjMC41NSwwLDEsMC40NSwxLDF2MThDMTAsMjEuNTUsOS41NSwyMiw5LDIyeiBNMTksMjFWMyBjMC0wLjU1LTAuNDUtMS0xLTFoLTNjLTAuNTUsMC0xLDAuNDUtMSwxdjE4YzAsMC41NSwwLjQ1LDEsMSwxaDNDMTguNTUsMjIsMTksMjEuNTUsMTksMjF6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icGxheSI+IDxwYXRoIGQ9Ik0yMS41NDksMTEuMjA4TDcuMzI4LDIuMTNDNy4wNTIsMS45NTUsNi43MTUsMS45NTcsNi40NDEsMi4xMzZDNi4xNjgsMi4zMTUsNiwyLjY0NCw2LDN2MTggYzAsMC4zNTQsMC4xNjcsMC42ODMsMC40MzksMC44NjJDNi41NzgsMjEuOTU0LDYuNzMzLDIyLDYuODg5LDIyYzAuMTQ5LDAsMC4yOTgtMC4wNDIsMC40MzMtMC4xMjdsMTQuMjIzLTguOTIyIGMwLjI4LTAuMTc2LDAuNDU1LTAuNTA5LDAuNDU2LTAuODdDMjIuMDAxLDExLjcyLDIxLjgyOSwxMS4zODYsMjEuNTQ5LDExLjIwOHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iYWRkIj4gPHBhdGggZD0iTTIxLDExaC04VjNjMC0wLjU1Mi0wLjQ0OC0xLTEtMXMtMSwwLjQ0OC0xLDF2OEgzYy0wLjU1MiwwLTEsMC40NDgtMSwxczAuNDQ4LDEsMSwxaDh2OGMwLDAuNTUzLDAuNDQ4LDEsMSwxczEtMC40NDcsMS0xIHYtOGg4YzAuNTUyLDAsMS0wLjQ0OCwxLTFTMjEuNTUyLDExLDIxLDExeiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02IDEwLjUwMDJDOC40ODUyOCAxMC41MDAyIDEwLjUgOC40ODU0NyAxMC41IDYuMDAwMTlIMTJDMTIgOS4zMTM4OSA5LjMxMzcxIDEyLjAwMDIgNiAxMi4wMDAyQzIuNjg2MjkgMTIuMDAwMiAwIDkuMzEzODkgMCA2LjAwMDE5QzAgMi42ODY0OCAyLjY4NjI5IDAuMDAwMTg1NTIyIDUuOTkzNjYgMC4wMDAyMTIzMzZDNy43NDc3NCAtMC4wMTQ2MjA3IDkuMzg1MiAwLjc0ODUgMTAuNSAyLjAzMTc4VjAuMDAwMTg1NTIySDEyVjQuNTAwMTlINy41VjMuMDAwMTlIOS4zNTQwN0M4LjUyMjU5IDIuMDUyMjQgNy4zMDYxMiAxLjQ4OTE2IDYgMS41MDAxOUMzLjUxNDcyIDEuNTAwMTkgMS41IDMuNTE0OSAxLjUgNi4wMDAxOUMxLjUgOC40ODU0NyAzLjUxNDcyIDEwLjUwMDIgNiAxMC41MDAyWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYyKSI+IDxwYXRoIGQ9Ik02Ljc1IDEuNUgxMC41VjUuMjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNNS4yNSAxLjVIMS41VjUuMjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNNS4yNSAxMC41SDEuNVY2Ljc1IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgLz4gPHBhdGggZD0iTTYuNzUgMTAuNUgxMC41VjYuNzUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMS41IDEuNUwxMC41IDEwLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMTAuNSAxLjVMMS41IDEwLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzYyIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibWluaW1pemVfeDQwX21pcnJvcmVkIj4gPHBhdGggZD0iTTQuMDI0LDE0LjM0N2MtMC4wNTcsMC4xNzktMC4wMSwwLjM3NCwwLjEyMywwLjUwNmwxLjc5MywxLjc5M2wtMy42NDgsMy42NDhjLTAuMzg5LDAuMzg5LTAuMzg5LDEuMDI1LDAsMS40MTQgYzAuMzg5LDAuMzg5LDEuMDI1LDAuMzg5LDEuNDE0LDBsMy42NDgtMy42NDhsMS43OTMsMS43OTNjMC4xMzIsMC4xMzIsMC4zMjgsMC4xOCwwLjUwNiwwLjEyM2MwLjE3OC0wLjA1NywwLjMxLTAuMjA5LDAuMzQtMC4zOTQgbDEtNmMwLjAyNS0wLjE1OC0wLjAyNS0wLjMyMS0wLjE0LTAuNDM2Yy0wLjExNC0wLjExNC0wLjI3Ny0wLjE2NS0wLjQzNi0wLjE0bC02LDFDNC4yMzMsMTQuMDM3LDQuMDgxLDE0LjE2OSw0LjAyNCwxNC4zNDd6IE0xNC4zNDcsNC4wMjRjMC4xNzktMC4wNTcsMC4zNzQtMC4wMSwwLjUwNiwwLjEyM2wxLjc5MywxLjc5M2wzLjY0OC0zLjY0OGMwLjM4OS0wLjM4OSwxLjAyNS0wLjM4OSwxLjQxNCwwIGMwLjM4OSwwLjM4OSwwLjM4OSwxLjAyNSwwLDEuNDE0TDE4LjA2LDcuMzU0bDEuNzkzLDEuNzkzYzAuMTMyLDAuMTMyLDAuMTgsMC4zMjgsMC4xMjMsMC41MDZjLTAuMDU3LDAuMTc4LTAuMjA5LDAuMzEtMC4zOTQsMC4zNCBsLTYsMWMtMC4xNTgsMC4wMjUtMC4zMjEtMC4wMjUtMC40MzYtMC4xNGMtMC4xMTQtMC4xMTQtMC4xNjUtMC4yNzctMC4xNC0wLjQzNmwxLTZDMTQuMDM3LDQuMjMzLDE0LjE2OSw0LjA4MSwxNC4zNDcsNC4wMjR6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjk2OTk0IDcuMDYwNUw1LjAzMDQ0IDZMNC4wNjA2OSA1LjAzMDI1SDcuMjE4OTRDOC42MjUxOSA1LjAzMDI1IDkuMDAwMTkgNi40NDQ3NSA5LjAwMDE5IDcuMjgwMjVDOS4wMDAxOSA3Ljg5NiA4LjgyNDY5IDguNDgzMjUgOC41MTcxOSA4Ljg5Mjc1QzguMjAwNjkgOS4zMTU3NSA3Ljc2MzQ0IDkuNTMwMjUgNy4yMTg5NCA5LjUzMDI1SDMuMDAwMTlWMTEuMDMwMkg3LjIxODk0QzguMjMyMTkgMTEuMDMwMiA5LjExODY5IDEwLjU5MDcgOS43MTcxOSA5Ljc5Mjc1QzEwLjIyMTkgOS4xMiAxMC41MDAyIDguMjI3NSAxMC41MDAyIDcuMjgwMjVDMTAuNTAwMiA1LjQxNjUgOS4zNzI5NCAzLjUzMDI1IDcuMjE4OTQgMy41MzAyNUg0LjA2MDY5TDUuMDMwNDQgMi41NjA1TDMuOTY5OTQgMS41TDEuNzE5OTQgMy43NUMxLjQyNjY5IDQuMDQzMjUgMS40MjY2OSA0LjUxNzI1IDEuNzE5OTQgNC44MTA1TDMuOTY5OTQgNy4wNjA1WiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMDgwIiBoZWlnaHQ9IjEwODAiIHZpZXdCb3g9IjAgMCAxMDgwIDEwODAiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZGVzYz5DcmVhdGVkIHdpdGggRmFicmljLmpzIDUuMi40PC9kZXNjPiA8ZGVmcz4gPC9kZWZzPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDU0MCA1NDApIiBpZD0iZGJkNzU1MWEtNWNhNy00YzVmLWFlOTgtNzE4OGI0YjNlZGViIiA+IDxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiIHg9Ii01NDAiIHk9Ii01NDAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjEwODAiIGhlaWdodD0iMTA4MCIgLz4gPC9nPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDU0MCA1NDApIiBpZD0iM2ZlNzcxZGYtYjJiYy00NzRhLWE1NDAtYThlYWM4NTI1NzFlIiA+IDwvZz4gPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAtOTAgOTAgMCA1NDAgNTQwKSIgPiA8cGF0aCBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtZGFzaG9mZnNldDogMDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDQ7IGZpbGw6IHJnYigyMDksMjEzLDIxOSk7IGZpbGwtcnVsZTogZXZlbm9kZDsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIHRyYW5zbGF0ZSgtNiwgLTYpIiBkPSJNIDAuNzUgMy44NTY2NiBMIDEuNzEzMzUgMi44OTMzMSBMIDYgNy4xNzk0MyBMIDEwLjI4NjcgMi44OTMzMSBMIDExLjI1IDMuODU2NjYgTCA2IDkuMTA2NjYgTCAwLjc1IDMuODU2NjYgWiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPiA8L2c+IDwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic2VhcmNoIj4gPHBhdGggZD0iTTIyLjcwNywyMS4yOTNsLTUuNjgyLTUuNjgyQzE4LjI1OCwxNC4wNzEsMTksMTIuMTIyLDE5LDEwYzAtNC45NjItNC4wMzctOS05LTljLTQuOTYyLDAtOSw0LjAzOC05LDljMCw0Ljk2Myw0LjAzOCw5LDksOSBjMi4xMjIsMCw0LjA3MS0wLjc0Miw1LjYxMS0xLjk3NWw1LjY4Miw1LjY4MkMyMS40ODgsMjIuOTAyLDIxLjc0NCwyMywyMiwyM3MwLjUxMi0wLjA5OCwwLjcwNy0wLjI5MyBDMjMuMDk4LDIyLjMxNiwyMy4wOTgsMjEuNjg0LDIyLjcwNywyMS4yOTN6IE0xMCwxN2MtMy44NiwwLTctMy4xNDEtNy03YzAtMy44NiwzLjE0LTcsNy03YzMuODU5LDAsNywzLjE0LDcsNyBDMTcsMTMuODU5LDEzLjg1OSwxNywxMCwxN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic3Rhcl9vbiI+IDxwYXRoIGQ9Ik0yMi4xNDMsOC4yNjdsLTEuNTY5LTAuMjI4djBsLTQuODItMC43bC0yLjAxOC00LjA4NGMwLDAsMCwwLDAsMGwtMC44MzktMS42OTljLTAuMzY3LTAuNzQzLTEuNDI2LTAuNzQzLTEuNzkzLDAgbC0wLjgzOSwxLjY5OWMwLDAsMCwwLDAsMEw4LjI0Niw3LjM0TDIuNjc4LDguMTQ4YzAsMCwwLDAsMCwwTDEuODU3LDguMjY3Yy0wLjgyLDAuMTE5LTEuMTQ4LDEuMTI3LTAuNTU0LDEuNzA2bDAuNTk0LDAuNTc5bDAsMCBsNC4wMjgsMy45MjNsLTEuMDIyLDUuOTUyYzAsMCwwLDAsMCwwbC0wLjA2OSwwLjQwMmMtMC4xNCwwLjgxNywwLjcxNywxLjQ0LDEuNDUsMS4wNTRsMC42NDUtMC4zMzhsMCwwTDEyLDE4Ljg4Mmw0LjU5LDIuNDFsMCwwIGwxLjEyNSwwLjU5YzAuNzM0LDAuMzg1LDEuNTkxLTAuMjM4LDEuNDUtMS4wNTVsLTAuMjM0LTEuMzY0bDAsMGwtMC44NTctNC45OTFsMy44MjctMy43MjdsMCwwbDAuNzk2LTAuNzc1IEMyMy4yOTEsOS4zOTQsMjIuOTYzLDguMzg2LDIyLjE0Myw4LjI2N3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic2VsZWN0X3RleHQiPiA8cGF0aCBkPSJNMSw5aDJ2MkgxVjl6IE0xLDdoMlY1SDFWN3ogTTUsMjNoMnYtMkg1VjIzeiBNMSwzaDJWMUgxVjN6IE0xLDIzaDJ2LTJIMVYyM3ogTTExLDFIOXYyaDJWMXogTTE1LDFoLTJ2MmgyVjF6IE03LDFINXYyaDIgVjF6IE05LDIzaDJ2LTJIOVYyM3ogTTEsMTloMnYtMkgxVjE5eiBNMSwxNWgydi0ySDFWMTV6IE0yMSwxMWgyVjloLTJWMTF6IE0xMywyM2gydi0yaC0yVjIzeiBNMjEsMTVoMnYtMmgtMlYxNXogTTIxLDdoMlY1aC0yVjd6IE0yMSwxdjJoMlYxSDIxeiBNMjEsMTloMnYtMmgtMlYxOXogTTIxLDIzaDJ2LTJoLTJWMjN6IE0xNywyM2gydi0yaC0yVjIzeiBNMTcsM2gyVjFoLTJWM3ogTTE3Ljg5NSw3LjMwMyBDMTcuOTY1LDcuMjE5LDE4LDcuMDkzLDE4LDYuOTE4VjUuNTA0YzAtMC4xODktMC4wMzUtMC4zMjItMC4xMDUtMC4zOTJDMTcuODE4LDUuMDM1LDE3LjY4NSw1LDE3LjQ5Niw1SDE1LjVoLTAuNzc1aC01LjQ1SDguNSBINi41MDRDNi4zMjksNSw2LjE5Niw1LjAzNSw2LjExOSw1LjExMkM2LjAzNSw1LjE4Miw2LDUuMzE1LDYsNS41MDR2MS40MTRjMCwwLjE3NSwwLjAzNSwwLjMwMSwwLjExOSwwLjM4NSBjMC4wNzcsMC4wODQsMC4yMSwwLjExOSwwLjM4NSwwLjExOUg4LjVoMC43NzVoMS4yMTN2MTEuMDc0YzAsMC4xNzUsMC4wMzUsMC4zMDEsMC4xMTksMC4zODVDMTAuNjg0LDE4Ljk1OCwxMC44MTcsMTksMTAuOTkyLDE5IGgyLjAxNmMwLjE4OSwwLDAuMzIyLTAuMDQyLDAuMzk5LTAuMTE5YzAuMDctMC4wODQsMC4xMDUtMC4yMSwwLjEwNS0wLjM4NVY3LjQyMmgxLjIxM0gxNS41aDEuOTk2IEMxNy42ODUsNy40MjIsMTcuODE4LDcuMzg3LDE3Ljg5NSw3LjMwM3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjUgMC43NUMxLjA4NTc5IDAuNzUgMC43NSAxLjA4NTc5IDAuNzUgMS41VjYuNzVDMC43NSA3LjE2NDIxIDEuMDg1NzkgNy41IDEuNSA3LjVIMy4zMjU1Mkw1LjA3OTUxIDEwLjQyMTFMNS4wODA4NyAxMC40MjM0QzUuMzg4MjkgMTAuOTMxMyA1Ljk0NTcyIDExLjI1IDYuNTQ3NSAxMS4yNUM3LjQ5NDIxIDExLjI1IDguMjU3NSAxMC40ODY3IDguMjU3NSA5LjU0VjguMjg3NUg5LjMzNzVDMTAuODAyIDguMjg3NSAxMS44Njg5IDYuOTEzMzYgMTEuNTIwOCA1LjQ5ODMyTDExLjUyMDIgNS40OTYwM0wxMC43NjMxIDIuNDYwMDNMMTAuNzYyOCAyLjQ1ODk2QzEwLjUxNSAxLjQ1ODU2IDkuNjE1OTEgMC43NSA4LjU4IDAuNzVIMy43NUgxLjVaTTIuMjUgNlYyLjI1SDNWNkgyLjI1Wk00LjUgNi41NDIxM0w2LjM2NDEzIDkuNjQ2NjVMNi4zNjQ1NSA5LjY0NzM1QzYuNDAyMjUgOS43MDkwNiA2LjQ3NDU1IDkuNzUgNi41NDc1IDkuNzVDNi42NjU3OSA5Ljc1IDYuNzU3NSA5LjY1ODI5IDYuNzU3NSA5LjU0VjcuNTM3NUM2Ljc1NzUgNy4xMjMyOSA3LjA5MzI5IDYuNzg3NSA3LjUwNzUgNi43ODc1SDkuMzM3NUM5LjgyMjY4IDYuNzg3NSAxMC4xODA2IDYuMzMyMjcgMTAuMDY0NSA1Ljg1NzY1TDEwLjA2NDIgNS44NTY2OUw5LjMwNzI5IDIuODIxNDhMOS4zMDY5MiAyLjgxOTk4QzkuMjI0MzQgMi40ODU5NCA4LjkyMzcyIDIuMjUgOC41OCAyLjI1SDQuNVY2LjU0MjEzWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjM2NDU1IDIuMzUyNjRMNi4zNjQxMiAyLjM1MzM1TDQuNSA1LjQ1Nzg3VjkuNzVIOC41OEM4LjkyMzcyIDkuNzUgOS4yMjQzNCA5LjUxNDA2IDkuMzA2OTEgOS4xODAwMkwxMC4wNjQyIDYuMTQzMzJMMTAuMDY0NCA2LjE0MjQ4QzEwLjE4MDcgNS42Njc4MSA5LjgyMjcxIDUuMjEyNSA5LjMzNzUgNS4yMTI1SDcuNTA3NUM3LjA5MzI5IDUuMjEyNSA2Ljc1NzUgNC44NzY3MSA2Ljc1NzUgNC40NjI1VjIuNDZDNi43NTc1IDIuMzQxNzEgNi42NjU3OSAyLjI1IDYuNTQ3NSAyLjI1QzYuNDc0NTUgMi4yNSA2LjQwMjI2IDIuMjkwOTQgNi4zNjQ1NSAyLjM1MjY0Wk0zIDkuNzVWNkgyLjI1VjkuNzVIM1pNMy4zMjU1MiA0LjVMNS4wNzk1MSAxLjU3ODkxTDUuMDgwODcgMS41NzY2NEM1LjM4ODI5IDEuMDY4NzQgNS45NDU3MyAwLjc1IDYuNTQ3NSAwLjc1QzcuNDk0MjIgMC43NSA4LjI1NzUgMS41MTMyOSA4LjI1NzUgMi40NlYzLjcxMjVIOS4zMzc1QzEwLjgwMiAzLjcxMjUgMTEuODY4OSA1LjA4NjY2IDExLjUyMDggNi41MDE2OUwxMS41MjAyIDYuNTAzOTlMMTAuNzYzMSA5LjUzOTk3TDEwLjc2MjkgOS41NDA3NkMxMC41MTUyIDEwLjU0MTMgOS42MTYwMSAxMS4yNSA4LjU4IDExLjI1SDEuNUMxLjA4NTc5IDExLjI1IDAuNzUgMTAuOTE0MiAwLjc1IDEwLjVWNS4yNUMwLjc1IDQuODM1NzkgMS4wODU3OSA0LjUgMS41IDQuNUgzLjMyNTUyWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FyZXRfdXAiPiA8cGF0aCBkPSJNMTcsMTVjLTAuMjU2LDAtMC41MTItMC4wOTgtMC43MDctMC4yOTNMMTIsMTAuNDE0bC00LjI5Myw0LjI5M2MtMC4zOTEsMC4zOTEtMS4wMjMsMC4zOTEtMS40MTQsMHMtMC4zOTEtMS4wMjMsMC0xLjQxNCBsNS01YzAuMzkxLTAuMzkxLDEuMDIzLTAuMzkxLDEuNDE0LDBsNSw1YzAuMzkxLDAuMzkxLDAuMzkxLDEuMDIzLDAsMS40MTRDMTcuNTEyLDE0LjkwMiwxNy4yNTYsMTUsMTcsMTV6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icHJvZmlsZSI+IDxwYXRoIGQ9Ik03LDZjMC0yLjc2MSwyLjIzOS01LDUtNXM1LDIuMjM5LDUsNXMtMi4yMzksNS01LDVTNyw4Ljc2MSw3LDZ6IE0yMS45NDgsMTguNjg0QzIwLjg2OCwxNS40NDMsMTcuMDE1LDEyLDEyLDEyIHMtOC44NjksMy40NDMtOS45NDksNi42ODRjLTAuMTIsMC4zNTktMC4wMjYsMC43NTYsMC4yNDIsMS4wMjNDNC40MTcsMjEuODMsNy44NjQsMjMsMTIsMjNjNC4xMzcsMCw3LjU4NC0xLjE3LDkuNzA3LTMuMjkzIEMyMS45NzUsMTkuNDM5LDIyLjA2OCwxOS4wNDMsMjEuOTQ4LDE4LjY4NHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0id2FybmluZyI+IDxwYXRoIGQ9Ik0yMS44NTcsMTguNDgybC05LTE1LjAzYy0wLjM2MS0wLjYwNC0xLjM1NC0wLjYwNC0xLjcxNSwwbC05LDE1LjAzYy0wLjE4NiwwLjMwOS0wLjE5LDAuNjk1LTAuMDEzLDEuMDEgQzIuMzA3LDE5LjgwNiwyLjY0LDIwLDMsMjBoMThjMC4zNiwwLDAuNjkyLTAuMTk0LDAuODctMC41MDhDMjIuMDQ4LDE5LjE3NywyMi4wNDMsMTguNzkyLDIxLjg1NywxOC40ODJ6IE0xMiwxOCBjLTAuNTUyLDAtMS0wLjQ0OC0xLTFjMC0wLjU1MiwwLjQ0OC0xLDEtMXMxLDAuNDQ4LDEsMUMxMywxNy41NTIsMTIuNTUyLDE4LDEyLDE4eiBNMTMsMTRjMCwwLjU1My0wLjQ0OCwxLTEsMXMtMS0wLjQ0Ny0xLTFWOCBjMC0wLjU1MiwwLjQ0OC0xLDEtMXMxLDAuNDQ4LDEsMVYxNHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nexport interface ButtonProps {\n classNames?: string[];\n attributes?: Record<string, string>;\n icon?: HTMLElement | ExtendedHTMLElement | string;\n label?: HTMLElement | ExtendedHTMLElement | string;\n children?: Array<HTMLElement | ExtendedHTMLElement | string>;\n primary?: boolean;\n additionalEvents?: Record<string, (event?: any) => any>;\n onClick: (e: Event) => void;\n}\nexport class Button {\n render: ExtendedHTMLElement;\n constructor (props: ButtonProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'button',\n classNames: [\n 'mynah-button',\n ...(props.primary === false ? [ 'mynah-button-secondary' ] : []),\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n attributes: { ...props.attributes },\n events: {\n ...props.additionalEvents,\n click: props.onClick,\n },\n children: [\n ...(props.icon !== undefined ? [ props.icon ] : []),\n ...(props.label !== undefined ? [ { type: 'span', classNames: [ 'mynah-button-label' ], children: [ props.label ] } ] : []),\n ...(props.children ?? []),\n ],\n });\n }\n\n updateLabel = (label: HTMLElement | ExtendedHTMLElement | string): void => {\n (this.render.querySelector('.mynah-button-label') as ExtendedHTMLElement).replaceWith(\n DomBuilder.getInstance().build({ type: 'span', classNames: [ 'mynah-button-label' ], children: [ label ] })\n );\n };\n\n setEnabled = (enabled: boolean): void => {\n if (enabled) {\n this.render.removeAttribute('disabled');\n } else {\n this.render.setAttribute('disabled', 'disabled');\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n OnCopiedToClipboardFunction,\n OnInsertToCursorPositionFunction,\n ReferenceTrackerInformation,\n} from '../../static';\nimport { marked } from 'marked';\nimport unescapeHTML from 'unescape-html';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { SyntaxHighlighter } from '../syntax-highlighter';\nimport { generateUID } from '../../helper/guid';\n\nconst PREVIEW_DELAY = 500;\nexport const highlightersWithTooltip = {\n start: {\n markupStart: '<mark ',\n markupAttributes: (markerIndex: string) => `marker-index=${markerIndex}`,\n markupEnd: ' reference-tracker>'\n },\n end: {\n markup: '</mark>',\n },\n};\n\nexport const PARTS_CLASS_NAME = 'typewriter-part';\nexport const PARTS_CLASS_NAME_VISIBLE = 'typewriter';\n\nexport interface CardBodyProps {\n body: string;\n children?: Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject>;\n highlightRangeWithTooltip?: ReferenceTrackerInformation[];\n useParts?: boolean;\n onLinkClick?: (url: string, e: MouseEvent) => void;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n}\nexport class CardBody {\n render: ExtendedHTMLElement;\n props: CardBodyProps;\n private highlightRangeTooltip: Overlay | null;\n private highlightRangeTooltipTimeout: ReturnType<typeof setTimeout>;\n constructor (props: CardBodyProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-body' ],\n children: [\n ...this.getContentBodyChildren(this.props),\n ...(this.props.children ?? [])\n ],\n });\n\n Array.from(this.render.querySelectorAll('mark[reference-tracker]')).forEach((highlightRangeElement) => {\n highlightRangeElement.addEventListener('mouseenter', (e) => {\n const index = parseInt((e.target as HTMLElement).getAttribute('marker-index') ?? '0');\n if (props.highlightRangeWithTooltip?.[index] !== undefined) {\n this.showHighlightRangeTooltip(e as MouseEvent, props.highlightRangeWithTooltip[index].information);\n }\n });\n highlightRangeElement.addEventListener('mouseleave', this.hideHighlightRangeTooltip);\n });\n }\n\n private readonly processNode = (node: HTMLElement, contentString: string, matchingLanguage?: string): HTMLElement => {\n const elementFromNode: HTMLElement = node;\n if (elementFromNode.tagName?.toLowerCase() === 'a') {\n const url = elementFromNode.getAttribute('href') ?? '';\n return DomBuilder.getInstance().build(\n {\n type: 'a',\n events: {\n click: (e: MouseEvent) => {\n if (this.props.onLinkClick !== undefined) {\n this.props.onLinkClick(url, e);\n }\n },\n },\n attributes: { href: elementFromNode.getAttribute('href') ?? '', target: '_blank' },\n innerHTML: elementFromNode.innerHTML,\n });\n }\n if ((elementFromNode.tagName?.toLowerCase() === 'pre' && elementFromNode.querySelector('code') !== null) ||\n elementFromNode.tagName?.toLowerCase() === 'code'\n ) {\n const isBlockCode = elementFromNode.tagName?.toLowerCase() === 'pre' || elementFromNode.innerHTML.match(/\\r|\\n/) !== null;\n const codeElement = (elementFromNode.tagName?.toLowerCase() === 'pre' ? elementFromNode.querySelector('code') : elementFromNode);\n const snippetLanguage = Array.from(codeElement?.classList ?? []).find(className => className.match('language-'))?.replace('language-', '');\n const codeString = codeElement?.innerHTML ?? '';\n\n const highlighter = new SyntaxHighlighter({\n codeStringWithMarkup: unescapeHTML(codeString),\n language: snippetLanguage?.trim() !== '' ? snippetLanguage : matchingLanguage,\n keepHighlights: true,\n showCopyOptions: isBlockCode,\n block: isBlockCode,\n onCopiedToClipboard: (type, text) => {\n if (this.props.onCopiedToClipboard != null) {\n this.props.onCopiedToClipboard(type, text, this.getReferenceTrackerInformationFromElement(highlighter));\n }\n },\n onInsertToCursorPosition: (type, text) => {\n if (this.props.onInsertToCursorPosition != null) {\n this.props.onInsertToCursorPosition(type, text, this.getReferenceTrackerInformationFromElement(highlighter));\n }\n }\n }).render;\n if (this.props.useParts === true) {\n highlighter.classList.add(PARTS_CLASS_NAME);\n }\n return highlighter;\n }\n\n elementFromNode.childNodes.forEach((child) => {\n elementFromNode.replaceChild(this.processNode(child as HTMLElement, contentString), child);\n });\n return elementFromNode;\n };\n\n private readonly getReferenceTrackerInformationFromElement = (element: ExtendedHTMLElement | HTMLElement): ReferenceTrackerInformation[] => {\n // cloning the element\n // since we're gonna inject some unique items\n // to get the start indexes\n const codeElement = element.querySelector('code')?.cloneNode(true) as HTMLElement;\n\n if (codeElement !== undefined) {\n const markerElements = codeElement.querySelectorAll('mark[reference-tracker]');\n if (markerElements.length > 0) {\n return (Array.from(markerElements) as HTMLElement[]).map((mark: HTMLElement, index: number) => {\n // Generating a unique identifier element\n // to get the start index of it inside the code block\n const startIndexText = `__MARK${index}_${generateUID()}_START__`;\n const startIndexTextElement = DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: startIndexText\n });\n // Injecting that unique identifier for the start index inside the current mark element\n mark.insertAdjacentElement('afterbegin', startIndexTextElement);\n // finding that text inside the code element's inner text\n // to get the startIndex\n const startIndex = codeElement.innerText.indexOf(startIndexText);\n\n // when we get the start index, we need to remove the element\n // to get the next one's start index properly\n // we don't need to calculate the end index because it will be available\n startIndexTextElement.remove();\n\n // find the original reference tracker information\n const originalRefTrackerInfo = this.props.highlightRangeWithTooltip?.[parseInt(mark.getAttribute('marker-index') ?? '0')];\n return {\n ...originalRefTrackerInfo,\n recommendationContentSpan: {\n start: startIndex,\n end: startIndex + (\n (originalRefTrackerInfo?.recommendationContentSpan.end ?? 0) -\n (originalRefTrackerInfo?.recommendationContentSpan.start ?? 0))\n }\n };\n }) as ReferenceTrackerInformation[];\n }\n }\n\n return [];\n };\n\n private readonly showHighlightRangeTooltip = (e: MouseEvent, tooltipText: string): void => {\n clearTimeout(this.highlightRangeTooltipTimeout);\n this.highlightRangeTooltipTimeout = setTimeout(() => {\n this.highlightRangeTooltip = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: (e.currentTarget ?? e.target) as HTMLElement,\n removeOtherOverlays: true,\n dimOutside: false,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-ui-syntax-highlighter-highlight-tooltip' ],\n children: [\n new CardBody({\n body: tooltipText,\n }).render\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n };\n\n private readonly hideHighlightRangeTooltip = (): void => {\n clearTimeout(this.highlightRangeTooltipTimeout);\n if (this.highlightRangeTooltip !== null) {\n this.highlightRangeTooltip?.close();\n this.highlightRangeTooltip = null;\n }\n };\n\n private readonly getContentBodyChildren = (props: CardBodyProps): Array<HTMLElement | ExtendedHTMLElement | DomBuilderObject> => {\n let incomingBody = props.body;\n if (props.body !== undefined && props.highlightRangeWithTooltip !== undefined && props.highlightRangeWithTooltip.length > 0) {\n props.highlightRangeWithTooltip.forEach((highlightRangeWithTooltip, index) => {\n if (incomingBody !== undefined) {\n const generatedStartMarkup = `${highlightersWithTooltip.start.markupStart}${highlightersWithTooltip.start.markupAttributes(index.toString())}${highlightersWithTooltip.start.markupEnd}`;\n let calculatedStartIndex = (highlightRangeWithTooltip.recommendationContentSpan.start + (index * (generatedStartMarkup.length + highlightersWithTooltip.end.markup.length)));\n let calculatedEndIndex = (calculatedStartIndex + generatedStartMarkup.length - highlightRangeWithTooltip.recommendationContentSpan.start) + highlightRangeWithTooltip.recommendationContentSpan.end;\n if (calculatedEndIndex > incomingBody.length) {\n calculatedStartIndex = incomingBody.length - 1;\n }\n if (calculatedEndIndex > incomingBody.length) {\n calculatedEndIndex = incomingBody.length - 1;\n }\n incomingBody = incomingBody.slice(0, calculatedStartIndex) + generatedStartMarkup + incomingBody.slice(calculatedStartIndex);\n incomingBody = incomingBody.slice(0, calculatedEndIndex) + highlightersWithTooltip.end.markup + incomingBody.slice(calculatedEndIndex);\n }\n });\n }\n\n // Define marked extension (and revert it back since it is global)\n if (this.props.useParts === true) {\n marked.use({\n extensions: [ {\n name: 'text',\n renderer: (token) => {\n if (this.props.useParts !== true) {\n return false;\n }\n return token.text.split(' ').map((textPart: string) => `<span class=\"${PARTS_CLASS_NAME}\">${textPart}</span>`).join(' ');\n }\n } ]\n });\n } else {\n marked.use({\n extensions: [ {\n name: 'text',\n renderer: (token) => {\n return token.text;\n }\n } ]\n });\n }\n return [\n ...(Array.from(\n DomBuilder.getInstance().build({\n type: 'div',\n innerHTML: `${marked.parse(incomingBody, { breaks: true })}`,\n }).childNodes\n ).map(node => {\n const processedNode = this.processNode(node as HTMLElement, props.body);\n if (processedNode.querySelectorAll !== undefined) {\n Array.from(processedNode.querySelectorAll('*:empty')).forEach(emptyElement => { emptyElement.remove(); });\n }\n return processedNode;\n }))\n ];\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { EngagementType } from '../../static';\n\n/**\n * We'll not consider it as an engagement if the total spend time is lower than below constant and won't trigger the event\n */\nconst ENGAGEMENT_DURATION_LIMIT = 3000;\n\n/**\n * This 6(px) and 300(ms) are coming from a behavioral research and browser reaction to input devices to count the action as a mouse movement or a click event\n */\nconst ENGAGEMENT_MIN_SELECTION_DISTANCE = 6;\nconst ENGAGEMENT_MIN_CLICK_DURATION = 300;\nexport interface CardProps extends Partial<DomBuilderObject> {\n border?: boolean;\n background?: boolean;\n padding?: 'small' | 'medium' | 'large' | 'none';\n children?: Array<HTMLElement | ExtendedHTMLElement | string>;\n onCardEngaged?: (engagement: {\n engagementDurationTillTrigger: number;\n engagementType: EngagementType;\n totalMouseDistanceTraveled: {\n x: number;\n y: number;\n };\n selectionDistanceTraveled?: { x: number; y: number; selectedText?: string | undefined };\n }) => void;\n}\nexport class Card {\n private readonly props: CardProps;\n private engagementStartTime: number = -1;\n private totalMouseDistanceTraveled: { x: number; y: number } = { x: 0, y: 0 };\n private previousMousePosition!: { x: number; y: number };\n private mouseDownInfo!: { x: number; y: number; time: number };\n render: ExtendedHTMLElement;\n constructor (props: CardProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [\n 'mynah-card',\n `padding-${props.padding ?? 'large'}`,\n props.border !== false ? 'border' : '',\n props.background !== false ? 'background' : '',\n ...(props.classNames ?? [])\n ],\n persistent: props.persistent,\n innerHTML: props.innerHTML,\n children: [\n ...(props.children ?? []),\n ],\n events: {\n ...props.events,\n ...(props.onCardEngaged !== undefined\n ? {\n mouseenter: e => {\n if (this.engagementStartTime === -1) {\n this.engagementStartTime = new Date().getTime();\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n }\n },\n mousemove: e => {\n if (this.engagementStartTime === -1) {\n this.engagementStartTime = new Date().getTime();\n }\n this.totalMouseDistanceTraveled = {\n x:\n this.totalMouseDistanceTraveled.x +\n Math.abs(e.clientX - this.previousMousePosition.x),\n y:\n this.totalMouseDistanceTraveled.y +\n Math.abs(e.clientY - this.previousMousePosition.y),\n };\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n },\n mousedown: e => {\n this.mouseDownInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n },\n mouseup: e => {\n const mouseUpInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n if (\n this.mouseDownInfo !== undefined && // in case of down is prevented by default by some listener\n (Math.abs(this.mouseDownInfo.x - mouseUpInfo.x) > ENGAGEMENT_MIN_SELECTION_DISTANCE ||\n Math.abs(this.mouseDownInfo.y - mouseUpInfo.y) >\n ENGAGEMENT_MIN_SELECTION_DISTANCE) &&\n mouseUpInfo.time - this.mouseDownInfo.time > ENGAGEMENT_MIN_CLICK_DURATION\n ) {\n this.handleEngagement({\n x: Math.abs(this.mouseDownInfo.x - mouseUpInfo.x),\n y: Math.abs(this.mouseDownInfo.y - mouseUpInfo.y),\n selectedText: window?.getSelection()?.toString(),\n });\n }\n },\n mouseleave: () => {\n const engagementEndTime = new Date().getTime();\n if (this.engagementStartTime !== -1 && engagementEndTime - this.engagementStartTime > ENGAGEMENT_DURATION_LIMIT) {\n this.handleEngagement();\n } else {\n this.resetEngagement();\n }\n },\n }\n : {})\n },\n attributes: props.attributes\n });\n }\n\n private readonly resetEngagement = (): void => {\n this.engagementStartTime = -1;\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n this.previousMousePosition = { x: 0, y: 0 };\n this.mouseDownInfo = { x: 0, y: 0, time: -1 };\n };\n\n private readonly handleEngagement = (interactionDistanceTraveled?: {\n x: number;\n y: number;\n selectedText?: string;\n }): void => {\n if (this.props.onCardEngaged !== undefined) {\n this.props.onCardEngaged({\n engagementDurationTillTrigger: new Date().getTime() - this.engagementStartTime,\n engagementType:\n interactionDistanceTraveled !== undefined ? EngagementType.INTERACTION : EngagementType.TIME,\n totalMouseDistanceTraveled: this.totalMouseDistanceTraveled,\n selectionDistanceTraveled:\n Boolean(interactionDistanceTraveled?.x ?? 0) && Boolean(interactionDistanceTraveled?.y)\n ? interactionDistanceTraveled\n : undefined,\n });\n }\n this.resetEngagement();\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { ChatItem, ChatItemType, MynahEventNames } from '../../static';\nimport { Card } from '../card/card';\nimport { CardBody } from '../card/card-body';\nimport { Icon, MynahIcons } from '../icon';\nimport { ChatItemFollowUpContainer } from './chat-item-followup';\nimport { ChatItemSourceLinksContainer } from './chat-item-source-links';\nimport { ChatItemRelevanceVote } from './chat-item-relevance-vote';\nimport { ChatItemTreeViewWrapper } from './chat-item-tree-view-wrapper';\nimport { Config } from '../../helper/config';\nimport { generateUID } from '../../helper/guid';\n\nconst TYPEWRITER_STACK_TIME = 500;\nexport interface ChatItemCardProps {\n tabId: string;\n chatItem: ChatItem;\n}\nexport class ChatItemCard {\n readonly props: ChatItemCardProps;\n render: ExtendedHTMLElement;\n contentBody: CardBody;\n chatAvatar: ExtendedHTMLElement;\n updateStack: Array<Partial<ChatItem>> = [];\n typewriterItemIndex: number = 0;\n previousTypewriterItemIndex: number = 0;\n typewriterId: string;\n private updateTimer: ReturnType<typeof setTimeout> | undefined;\n constructor (props: ChatItemCardProps) {\n this.props = props;\n this.chatAvatar = this.getChatAvatar();\n MynahUITabsStore.getInstance()\n .getTabDataStore(this.props.tabId)\n .subscribe('showChatAvatars', (value: boolean) => {\n if (value) {\n this.chatAvatar = this.getChatAvatar();\n this.render.insertChild('afterbegin', this.chatAvatar);\n } else {\n this.chatAvatar.remove();\n }\n });\n this.render = this.generateCard();\n }\n\n private readonly generateCard = (): ExtendedHTMLElement => {\n const generatedCard = DomBuilder.getInstance().build({\n type: 'div',\n classNames: this.getCardClasses(),\n attributes: {\n messageId: this.props.chatItem.messageId ?? 'unknown',\n },\n children: [\n ...(this.props.chatItem.type === ChatItemType.ANSWER_STREAM\n ? [\n // Create an empty card with its child set to the loading spinner\n new Card({\n children: [\n DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-chat-items-spinner' ],\n children: [ { type: 'span' }, { type: 'div', children: [ Config.getInstance().config.texts.spinnerText ] } ],\n }),\n ]\n }).render,\n ]\n : [ ...this.getCardContent() ]),\n ],\n });\n\n setTimeout(() => {\n generatedCard.addClass('reveal');\n }, this.props.chatItem.type === ChatItemType.PROMPT ? 10 : 200);\n\n return generatedCard;\n };\n\n private readonly getCardClasses = (): string[] => {\n const emptyCheckDom = DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: typeof this.props.chatItem.body === 'string' ? this.props.chatItem.body : '',\n });\n const isChatItemEmpty = emptyCheckDom.innerText.trim() === '';\n const isNoContent =\n isChatItemEmpty &&\n this.props.chatItem.followUp === undefined &&\n this.props.chatItem.relatedContent === undefined &&\n this.props.chatItem.type === ChatItemType.ANSWER;\n return [\n 'mynah-chat-item-card',\n `mynah-chat-item-${this.props.chatItem.type ?? ChatItemType.ANSWER}`,\n ...(isChatItemEmpty ? [ 'mynah-chat-item-empty' ] : []),\n ...(isNoContent ? [ 'mynah-chat-item-no-content' ] : []),\n ];\n };\n\n private readonly getCardContent = (): Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject> => {\n if (MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId) === undefined) {\n return [];\n }\n return [\n ...(MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('showChatAvatars') === true ? [ this.chatAvatar ] : []),\n ...(this.props.chatItem.body !== undefined || this.props.chatItem.fileList !== undefined\n ? [\n new Card({\n onCardEngaged: engagement => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_ITEM_ENGAGEMENT, {\n engagement,\n messageId: this.props.chatItem.messageId,\n });\n },\n children: [\n ((): ExtendedHTMLElement => {\n const commonBodyProps = {\n body: this.props.chatItem.body ?? '',\n onLinkClick: (url: string, e: MouseEvent) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.LINK_CLICK, {\n messageId: this.props.chatItem.messageId,\n link: url,\n event: e,\n });\n }\n };\n if (this.props.chatItem.type === ChatItemType.CODE_RESULT && this.props.chatItem.fileList !== undefined) {\n const { filePaths = [], deletedFiles = [] } = this.props.chatItem.fileList;\n const referenceSuggestionLabel = this.props.chatItem.body ?? '';\n this.contentBody = new CardBody({\n ...commonBodyProps,\n ...{\n body: '' // Reset the body, since the tree view has the fully rendered element\n },\n children: [\n new ChatItemTreeViewWrapper({\n tabId: this.props.tabId,\n messageId: this.props.chatItem.messageId ?? '',\n files: filePaths,\n deletedFiles,\n references: this.props.chatItem.codeReference ?? [],\n referenceSuggestionLabel\n }).render\n ],\n });\n } else {\n this.contentBody = new CardBody({\n ...commonBodyProps,\n useParts: this.props.chatItem.type === ChatItemType.ANSWER_STREAM,\n highlightRangeWithTooltip: this.props.chatItem.codeReference,\n children: this.props.chatItem.relatedContent !== undefined\n ? [\n new ChatItemSourceLinksContainer({\n messageId: this.props.chatItem.messageId ?? 'unknown',\n tabId: this.props.tabId,\n relatedContent: this.props.chatItem.relatedContent?.content,\n title: this.props.chatItem.relatedContent?.title,\n }).render,\n ]\n : [],\n onCopiedToClipboard: (type, text, referenceTrackerInformation) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.COPY_CODE_TO_CLIPBOARD, {\n messageId: this.props.chatItem.messageId,\n type,\n text,\n referenceTrackerInformation,\n });\n },\n onInsertToCursorPosition: (type, text, referenceTrackerInformation) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.INSERT_CODE_TO_CURSOR_POSITION, {\n messageId: this.props.chatItem.messageId,\n type,\n text,\n referenceTrackerInformation,\n });\n },\n });\n }\n return this.contentBody.render;\n })(),\n ...(this.props.chatItem.canBeVoted === true && this.props.chatItem.messageId !== undefined\n ? [ new ChatItemRelevanceVote({ tabId: this.props.tabId, messageId: this.props.chatItem.messageId }).render ]\n : []),\n ],\n }).render,\n ]\n : ''),\n this.props.chatItem.followUp?.text !== undefined ? new ChatItemFollowUpContainer({ tabId: this.props.tabId, chatItem: this.props.chatItem }).render : '',\n ];\n };\n\n private readonly getChatAvatar = (): ExtendedHTMLElement =>\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-icon-wrapper' ],\n children: [ new Icon({ icon: this.props.chatItem.type === ChatItemType.PROMPT ? MynahIcons.USER : MynahIcons.MYNAH }).render ],\n });\n\n private readonly getInsertedTypewriterPartsCss = (): ExtendedHTMLElement => DomBuilder.getInstance().build({\n type: 'style',\n attributes: {\n type: 'text/css'\n },\n persistent: true,\n innerHTML: `\n ${\n (new Array(Math.max(0, (this.typewriterItemIndex ?? 0) - (this.previousTypewriterItemIndex ?? 0))).fill(null)).map((n, i) => {\n return `\n .${this.typewriterId} .typewriter-part[index=\"${i + this.previousTypewriterItemIndex}\"] {\n animation: none !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n `;\n }).join('')\n }\n `\n });\n\n private readonly getInsertingTypewriterPartsCss = (\n newWordsCount: number,\n timeForEach: number): ExtendedHTMLElement => (DomBuilder.getInstance().build({\n type: 'style',\n attributes: {\n type: 'text/css'\n },\n innerHTML: `\n ${\n (new Array(Math.max(0, newWordsCount ?? 0)).fill(null)).map((n, i) => {\n return `\n .${this.typewriterId} .typewriter-part[index=\"${i + this.typewriterItemIndex}\"] {\n animation: typewriter 100ms ease-out forwards;\n animation-delay: ${i * timeForEach}ms !important;\n }\n `;\n }).join('')\n }\n `\n }));\n\n public readonly updateCard = (): void => {\n if (this.updateTimer === undefined && this.updateCardStack.length > 0) {\n const updateWith: Partial<ChatItem> | undefined = this.updateStack.shift();\n if (updateWith !== undefined) {\n this.props.chatItem = {\n ...this.props.chatItem,\n ...updateWith,\n };\n\n const newCardContent = this.getCardContent();\n const upcomingWords = Array.from(this.contentBody.render.querySelectorAll('.typewriter-part'));\n for (let i = 0; i < upcomingWords.length; i++) {\n upcomingWords[i].setAttribute('index', i.toString());\n }\n if (this.typewriterId === undefined) {\n this.typewriterId = `typewriter-card-${generateUID()}`;\n }\n this.render.update({\n classNames: [ ...this.getCardClasses(), 'reveal', this.typewriterId, 'typewriter-animating' ],\n children: [\n ...newCardContent,\n this.getInsertedTypewriterPartsCss(),\n ],\n });\n\n // How many new words will be added\n const newWordsCount = upcomingWords.length - this.typewriterItemIndex;\n\n // For each stack, without exceeding 500ms in total\n // we're setting each words delay time according to the count of them.\n // Word appearence time cannot exceed 50ms\n // Stack's total appearence time cannot exceed 500ms\n const timeForEach = Math.min(50, Math.floor(TYPEWRITER_STACK_TIME / newWordsCount));\n\n // Generate animator style and inject into render\n // CSS animations ~100 times faster then js timeouts/intervals\n this.render.insertChild('beforeend', this.getInsertingTypewriterPartsCss(newWordsCount, timeForEach));\n\n // All the animator selectors injected\n // update the words count for a potential upcoming set\n this.previousTypewriterItemIndex = this.typewriterItemIndex;\n this.typewriterItemIndex = upcomingWords.length;\n\n // If there is another set\n // call the same function to check after current stack totally shown\n this.updateTimer = setTimeout(() => {\n this.render.removeClass('typewriter-animating');\n this.render.insertChild('beforeend', this.getInsertedTypewriterPartsCss());\n this.updateTimer = undefined;\n this.updateCard();\n }, timeForEach * newWordsCount);\n }\n }\n };\n\n public readonly updateCardStack = (updateWith: Partial<ChatItem>): void => {\n this.updateStack.push(updateWith);\n this.updateCard();\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { marked } from 'marked';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { ChatItem, MynahEventNames } from '../../static';\nimport { Icon } from '../icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\n\nconst PREVIEW_DELAY = 250;\nconst MAX_LENGTH = 40;\nexport interface ChatItemFollowUpProps {tabId: string; chatItem: ChatItem}\nexport class ChatItemFollowUpContainer {\n private readonly props: ChatItemFollowUpProps;\n render: ExtendedHTMLElement;\n private readonly itemAddListenerId: string;\n private followupTooltip: Overlay | null;\n private followupTooltipTimeout: ReturnType<typeof setTimeout>;\n constructor (props: ChatItemFollowUpProps) {\n this.props = props;\n this.props.chatItem = props.chatItem;\n this.itemAddListenerId = MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_ITEM_ADD, (data) => {\n if (data.tabId === this.props.tabId) {\n this.render.remove();\n MynahUIGlobalEvents.getInstance().removeListener(MynahEventNames.CHAT_ITEM_ADD, this.itemAddListenerId);\n }\n });\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-text' ],\n children: [ this.props.chatItem.followUp?.text ?? '' ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-options-wrapper' ],\n children: this.props.chatItem.followUp?.options?.map(followUpOption => (\n {\n type: 'div',\n classNames: [\n 'mynah-chat-item-followup-question-option',\n `mynah-chat-item-followup-question-option-status-${followUpOption.status ?? 'default'}`,\n followUpOption.disabled === true ? 'mynah-chat-item-followup-question-option-disabled' : ''\n ],\n children: [\n ...(followUpOption.icon !== undefined\n ? [\n new Icon({ icon: followUpOption.icon }).render\n ]\n : []),\n followUpOption.pillText.length > MAX_LENGTH ? `${followUpOption.pillText.substring(0, MAX_LENGTH - 3)}...` : followUpOption.pillText\n ],\n events: {\n ...(followUpOption.disabled !== true\n ? {\n click: (e) => {\n this.hideCroppedFollowupText();\n MynahUIGlobalEvents.getInstance().removeListener(MynahEventNames.CHAT_ITEM_ADD, this.itemAddListenerId);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.FOLLOW_UP_CLICKED, { tabId: this.props.tabId, messageId: this.props.chatItem.messageId, followUpOption });\n if ((this.render.parentElement as ExtendedHTMLElement)?.hasClass('mynah-chat-item-empty')) {\n this.render.parentElement?.remove();\n } else {\n this.render.remove();\n };\n }\n }\n : {}),\n ...(followUpOption.pillText.length > MAX_LENGTH || followUpOption.description !== undefined\n ? {\n mouseover: (e) => {\n let tooltipText = followUpOption.pillText.length > MAX_LENGTH ? followUpOption.pillText : '';\n if (followUpOption.description !== undefined) {\n if (tooltipText !== '') {\n tooltipText += '\\n\\n';\n }\n tooltipText += followUpOption.description;\n }\n this.showCroppedFollowupText(e, tooltipText);\n },\n mouseleave: this.hideCroppedFollowupText\n }\n : {})\n }\n }\n )) as DomBuilderObject[]\n },\n ]\n });\n\n // revert back if the extension is set before (because it only works globally)\n marked.use({\n extensions: [ {\n name: 'text',\n renderer: (token) => {\n return token.text;\n }\n } ]\n });\n\n Array.from(this.render.getElementsByClassName('mynah-chat-item-followup-question-option')).forEach(option => {\n option.innerHTML = marked(option.innerHTML, { breaks: true }).replace('<p>', '').replace('</p>', '');\n });\n Array.from(this.render.getElementsByTagName('a')).forEach(a => {\n const url = a.href;\n\n a.onclick = (event?: MouseEvent) => {\n MynahUIGlobalEvents\n .getInstance()\n .dispatch(MynahEventNames.LINK_CLICK, {\n tabId: this.props.tabId,\n messageId: this.props.chatItem.messageId,\n link: url,\n event,\n });\n };\n });\n }\n\n private readonly showCroppedFollowupText = (e: MouseEvent, content: string): void => {\n if (content.trim() !== undefined) {\n clearTimeout(this.followupTooltipTimeout);\n this.followupTooltipTimeout = setTimeout(() => {\n const elm: HTMLElement = e.target as HTMLElement;\n this.followupTooltip = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-content' ],\n innerHTML: marked(content, { breaks: true }).replace('<p>', '').replace('</p>', '')\n }\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n }\n };\n\n private readonly hideCroppedFollowupText = (): void => {\n clearTimeout(this.followupTooltipTimeout);\n if (this.followupTooltip !== null) {\n this.followupTooltip?.close();\n this.followupTooltip = null;\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload, MynahEventNames, RelevancyVoteType } from '../../static';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Icon, MynahIcons } from '../icon';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { Button } from '../button';\nimport { Config } from '../../helper/config';\n\nconst THANKS_REMOVAL_DURATION = 3500;\nexport interface ChatItemRelevanceVoteProps {\n tabId: string;\n messageId: string;\n}\nexport class ChatItemRelevanceVote {\n private readonly votingId: string;\n private sendFeedbackListenerId: string | undefined;\n render: ExtendedHTMLElement;\n props: ChatItemRelevanceVoteProps;\n constructor (props: ChatItemRelevanceVoteProps) {\n this.props = props;\n this.votingId = `${this.props.tabId}-${this.props.messageId}`;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-votes-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-card-vote' ],\n children: [\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.UP);\n },\n },\n attributes: {\n type: 'radio',\n id: `${this.votingId}-vote-up`,\n name: `${this.votingId}-vote`,\n value: 'up',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-up-radio' ],\n },\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.DOWN);\n },\n },\n attributes: {\n type: 'radio',\n id: `${this.votingId}-vote-down`,\n name: `${this.votingId}-vote`,\n value: 'down',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-down-radio' ],\n },\n {\n type: 'label',\n attributes: { for: `${this.votingId}-vote-up` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-up' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_UP }).render ],\n },\n {\n type: 'label',\n attributes: { for: `${this.votingId}-vote-down` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-down' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_DOWN }).render ],\n },\n ],\n },\n ],\n });\n }\n\n private readonly handleVoteChange = (vote: RelevancyVoteType): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CARD_VOTE, { messageId: this.props.messageId, tabId: this.props.tabId, vote });\n const newChildren = [\n Config.getInstance().config.texts.feedbackThanks,\n ...(vote === RelevancyVoteType.DOWN\n ? [\n new Button({\n label: Config.getInstance().config.texts.feedbackReportButtonLabel,\n onClick: () => {\n if (this.sendFeedbackListenerId === undefined) {\n this.sendFeedbackListenerId = MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FEEDBACK_SET, (data: FeedbackPayload) => {\n if (data.messageId === this.props.messageId && data.tabId === this.props.tabId) {\n MynahUIGlobalEvents.getInstance().removeListener(MynahEventNames.FEEDBACK_SET, this.sendFeedbackListenerId as string);\n this.render.remove();\n }\n });\n }\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SHOW_FEEDBACK_FORM, { tabId: this.props.tabId, messageId: this.props.messageId });\n },\n primary: false\n }).render\n ]\n : [])\n ];\n this.render.replaceChildren(...newChildren);\n\n if (vote === RelevancyVoteType.UP) {\n setTimeout(() => {\n this.render.remove();\n }, THANKS_REMOVAL_DURATION);\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahEventNames, SourceLink } from '../../static';\nimport { Button } from '../button';\nimport { Card } from '../card/card';\nimport { Icon, MynahIcons } from '../icon';\nimport { SourceLinkHeader } from '../source-link/source-link-header';\n\nconst MAX_ITEMS = 1;\nexport interface ChatItemSourceLinksContainerProps {\n tabId: string;\n messageId: string;\n title?: string;\n relatedContent?: SourceLink[];\n}\nexport class ChatItemSourceLinksContainer {\n private readonly props: ChatItemSourceLinksContainerProps;\n private readonly showMoreButtonBlock: Button;\n render: ExtendedHTMLElement;\n chatAvatar: ExtendedHTMLElement;\n constructor (props: ChatItemSourceLinksContainerProps) {\n this.props = props;\n this.showMoreButtonBlock = new Button({\n classNames: [ 'mynah-chat-item-card-related-content-show-more' ],\n primary: false,\n icon: new Icon({ icon: MynahIcons.DOWN_OPEN }).render,\n onClick: () => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SHOW_MORE_WEB_RESULTS_CLICK, { messageId: this.props.messageId });\n this.showMoreButtonBlock.render.remove();\n (this.render).addClass('expanded');\n },\n label: 'Show more',\n });\n\n if (this.props.relatedContent !== undefined) {\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-related-content',\n this.props.relatedContent !== undefined && this.props.relatedContent.length <= MAX_ITEMS ? 'expanded' : '' ],\n children: [\n ...(this.props.title !== undefined\n ? [ {\n type: 'span',\n classNames: [ 'mynah-chat-item-card-related-content-title' ],\n children: [ this.props.title ],\n } ]\n : []),\n ...this.props.relatedContent.map(sourceLink => DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-related-content-item' ],\n children: [\n new Card({\n background: false,\n border: false,\n padding: 'none',\n children: [\n new SourceLinkHeader({\n sourceLink,\n showCardOnHover: true,\n onClick: (e) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SOURCE_LINK_CLICK, {\n messageId: this.props.messageId,\n link: sourceLink.url,\n event: e\n });\n }\n }).render\n ]\n }).render\n ]\n })),\n this.showMoreButtonBlock.render\n ]\n });\n }\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { ReferenceTrackerInformation } from '../../static';\nimport { CardBody } from '../card/card-body';\nimport { CollapsibleContent } from '../collapsible-content';\n\nexport interface ChatItemTreeViewLicenseProps {\n referenceSuggestionLabel: string;\n references: ReferenceTrackerInformation[];\n}\n\nexport class ChatItemTreeViewLicense {\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewLicenseProps) {\n // If no references are found then just return an empty div\n if (props.references.length === 0) {\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'empty' ]\n });\n return;\n }\n\n this.render = new CollapsibleContent({\n title: Config.getInstance().config.texts.codeSuggestionWithReferenceTitle,\n classNames: [ 'mynah-chat-item-tree-view-license' ],\n children: [ this.buildDropdownChildren(props.references) ]\n }).render;\n }\n\n private readonly buildDropdownChildren = (references: ReferenceTrackerInformation[]): ExtendedHTMLElement => DomBuilder.getInstance().build({\n type: 'ul',\n classNames: [ 'mynah-chat-item-tree-view-license-container' ],\n children: references.map(ref => ({\n type: 'li',\n children: [\n new CardBody({\n body: ref.information\n }).render\n ]\n })),\n });\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { fileListToTree } from '../../helper/file-tree';\nimport { ReferenceTrackerInformation } from '../../static';\nimport { ChatItemTreeView } from './chat-item-tree-view';\nimport { ChatItemTreeViewLicense } from './chat-item-tree-view-license';\n\nexport interface ChatItemTreeViewWrapperProps {\n tabId: string;\n messageId: string;\n files: string[];\n deletedFiles: string[];\n referenceSuggestionLabel: string;\n references: ReferenceTrackerInformation[];\n}\n\nexport class ChatItemTreeViewWrapper {\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewWrapperProps) {\n const license = new ChatItemTreeViewLicense({\n referenceSuggestionLabel: props.referenceSuggestionLabel,\n references: props.references\n }).render;\n\n const tree = new ChatItemTreeView({\n messageId: props.messageId,\n tabId: props.tabId,\n node: fileListToTree(props.files, props.deletedFiles),\n }).render;\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper-container' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper-title' ],\n children: [\n {\n type: 'h4',\n children: [ `${Config.getInstance().config.texts.codeSuggestions}` ]\n },\n {\n type: 'span',\n children: [ `${props.files.length} ${Config.getInstance().config.texts.files}` ]\n },\n ]\n },\n license,\n tree,\n ]\n },\n {\n type: 'p',\n children: [ Config.getInstance().config.texts.clickFileToViewDiff ]\n }\n ]\n });\n }\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { cancelEvent, MynahUIGlobalEvents } from '../../helper/events';\nimport { FileNode, TreeNode } from '../../helper/file-tree';\nimport { MynahEventNames } from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\n\nexport interface ChatItemTreeViewProps {\n node: TreeNode;\n depth?: number;\n tabId: string;\n messageId: string;\n}\n\nexport class ChatItemTreeView {\n private readonly node: TreeNode;\n private isOpen: boolean;\n private readonly depth: number;\n private readonly tabId: string;\n private readonly messageId: string;\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewProps) {\n this.node = props.node;\n this.tabId = props.tabId;\n this.messageId = props.messageId;\n this.isOpen = true;\n this.depth = props.depth ?? 0;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: this.getClassNames(),\n children: [ ...(this.node.type === 'folder' ? this.buildFolderNode() : this.buildFileNode()) ],\n });\n }\n\n getClassNames (): string[] {\n return [\n 'mynah-chat-item-tree-view',\n this.node.type === 'file' ? 'mynah-chat-tree-view-file' : `mynah-chat-tree-view-folder-${this.isOpen ? 'open' : 'closed'}`,\n ];\n }\n\n updateTree (): void {\n this.render.update({\n classNames: this.getClassNames(),\n children: [ ...(this.node.type === 'folder' ? this.buildFolderNode() : this.buildFileNode()) ],\n });\n }\n\n buildFolderChildren (): ExtendedHTMLElement[] {\n if (this.node.type !== 'folder') return [];\n\n const folderChildren = this.isOpen\n ? this.node.children.map(childNode =>\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-pull-request-item' ],\n children: [ new ChatItemTreeView({ node: childNode, depth: this.depth + 1, tabId: this.tabId, messageId: this.messageId }).render ],\n })\n )\n : [];\n return folderChildren;\n }\n\n buildFolderNode (): ExtendedHTMLElement[] {\n if (this.node.type !== 'folder') return [];\n\n const folderItem = new Button({\n icon: new Icon({ icon: this.isOpen ? MynahIcons.DOWN_OPEN : MynahIcons.RIGHT_OPEN }).render,\n label: `${this.node.name} ${this.node.children.length} files`,\n primary: false,\n onClick: e => {\n cancelEvent(e);\n this.isOpen = !this.isOpen;\n this.updateTree();\n },\n }).render;\n folderItem.style.paddingLeft = `${15 * this.depth}px`;\n const childrenItems = this.buildFolderChildren();\n return [ folderItem, ...childrenItems ];\n }\n\n buildFileNode (): ExtendedHTMLElement[] {\n if (this.node.type !== 'file') return [];\n\n const fileItem = new Button({\n // Eye is temporary until file addition/file removal is finished\n icon: new Icon({ icon: MynahIcons.DOC }).render,\n label: this.node.name,\n primary: false,\n onClick: () => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.OPEN_DIFF, {\n tabId: this.tabId,\n messageId: this.messageId,\n filePath: (this.node as FileNode).filePath,\n deleted: (this.node as FileNode).deleted,\n });\n },\n }).render;\n fileItem.style.paddingLeft = `${15 * this.depth}px`;\n if (this.node.deleted) {\n fileItem.style.textDecoration = 'line-through';\n }\n return [ fileItem ];\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\n\nexport interface ChatPromptInputCommandProps {\n command: string;\n onRemoveClick: () => void;\n}\nexport class ChatPromptInputCommand {\n render: ExtendedHTMLElement;\n private readonly props: ChatPromptInputCommandProps;\n private readonly promptTextInputCommand: ExtendedHTMLElement;\n constructor (props: ChatPromptInputCommandProps) {\n this.props = props;\n this.promptTextInputCommand = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input-command-text' ],\n events: {\n click: this.props.onRemoveClick\n }\n });\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input-command-wrapper', this.props.command === '' ? 'hidden' : '' ],\n children: [\n this.promptTextInputCommand,\n ]\n });\n }\n\n setCommand = (command: string): void => {\n if (command.trim() === '') {\n this.render.addClass('hidden');\n } else {\n this.render.removeClass('hidden');\n }\n this.promptTextInputCommand.innerText = command;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { marked } from 'marked';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { CardBody } from '../card/card-body';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahEventNames } from '../../static';\n\nexport interface ChatPromptInputInfoProps{\n tabId: string;\n}\nexport class ChatPromptInputInfo {\n render: ExtendedHTMLElement;\n constructor (props: ChatPromptInputInfoProps) {\n // revert back if the extension is set before (because it only works globally)\n marked.use({\n extensions: [ {\n name: 'text',\n renderer: (token) => {\n return token.text;\n }\n } ]\n });\n MynahUITabsStore.getInstance().addListenerToDataStore(props.tabId, 'promptInputInfo', (newInfo) => {\n this.render.update({\n children: [\n new CardBody({\n onLinkClick: this.linkClick,\n body: MynahUITabsStore.getInstance().getTabDataStore(props.tabId)?.getValue('promptInputInfo') ?? ''\n }).render\n ]\n });\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-info' ],\n children: [\n new CardBody({\n onLinkClick: this.linkClick,\n body: MynahUITabsStore.getInstance().getTabDataStore(props.tabId)?.getValue('promptInputInfo') ?? ''\n }).render\n ]\n });\n }\n\n private readonly linkClick = (url: string, e: MouseEvent): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.INFO_LINK_CLICK, {\n link: url,\n event: e,\n });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { KeyMap, MynahEventNames, QuickActionCommand, QuickActionCommandGroup, SourceLink } from '../../static';\nimport { MynahUIGlobalEvents, cancelEvent } from '../../helper/events';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport escapeHTML from 'escape-html';\nimport { ChatPromptInputCommand } from './chat-prompt-input-command';\nimport { CodeSnippet } from './prompt-input/code-snippet';\nimport { SendButton } from './prompt-input/send-button';\nimport { PromptTextInput } from './prompt-input/prompt-text-input';\n\nexport const MAX_USER_INPUT = 4000;\nexport const MAX_USER_INPUT_THRESHOLD = 96;\nexport interface ChatPromptInputProps {\n tabId: string;\n}\nexport class ChatPromptInput {\n render: ExtendedHTMLElement;\n private readonly props: ChatPromptInputProps;\n private readonly attachmentWrapper: ExtendedHTMLElement;\n private readonly promptTextInput: PromptTextInput;\n private readonly promptTextInputCommand: ChatPromptInputCommand;\n private readonly remainingCharsIndicator: ExtendedHTMLElement;\n private readonly sendButton: SendButton;\n private readonly codeSnippet: CodeSnippet;\n private quickActionCommands: QuickActionCommandGroup[];\n private commandSelector: Overlay;\n private commandSelectorOpen: boolean = false;\n private selectedCommand: string = '';\n private attachment?: SourceLink;\n private filteredCommandsList: QuickActionCommandGroup[];\n constructor (props: ChatPromptInputProps) {\n this.props = props;\n this.quickActionCommands = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('quickActionCommands') as QuickActionCommandGroup[];\n this.promptTextInputCommand = new ChatPromptInputCommand({\n command: '',\n onRemoveClick: () => {\n this.selectedCommand = '';\n this.promptTextInputCommand.setCommand('');\n }\n });\n this.promptTextInput = new PromptTextInput({\n tabId: this.props.tabId,\n onKeydown: this.handleInputKeydown,\n onInput: () => this.updateAvailableCharactersIndicator(),\n });\n this.remainingCharsIndicator = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-chars-indicator' ],\n innerHTML: `${MAX_USER_INPUT - this.promptTextInput.getTextInputValue().length}/${MAX_USER_INPUT}`\n });\n this.sendButton = new SendButton({\n tabId: this.props.tabId,\n onClick: () => {\n this.sendPrompt();\n },\n });\n\n this.codeSnippet = new CodeSnippet({\n tabId: this.props.tabId,\n });\n\n this.attachmentWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-attachment-wrapper' ],\n children: [\n this.codeSnippet.render\n ]\n });\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-prompt' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-wrapper' ],\n children: [\n this.promptTextInputCommand.render,\n this.promptTextInput.render,\n this.sendButton.render,\n ]\n },\n this.attachmentWrapper\n ]\n },\n this.remainingCharsIndicator,\n ],\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.ADD_CODE_SNIPPET, (data: {\n textToAdd?: string;\n tabId?: string;\n }) => {\n if (this.props.tabId === data.tabId) {\n // Code snippet will have a limit of MAX_USER_INPUT - MAX_USER_INPUT_THRESHOLD - current prompt text length\n // If exceeding that, we will crop it\n const textInputLength = this.promptTextInput.getTextInputValue().trim().length;\n const currentSelectedCodeMaxLength = (MAX_USER_INPUT + MAX_USER_INPUT_THRESHOLD) - textInputLength;\n const croppedSelectedCodeSnippet = (data.textToAdd ?? '')?.slice(0, currentSelectedCodeMaxLength);\n this.codeSnippet.updateSelectedCodeSnippet(croppedSelectedCodeSnippet);\n // Also update the limit on prompt text given the selected code\n this.promptTextInput.updateTextInputMaxLength(Math.min(MAX_USER_INPUT, (MAX_USER_INPUT + MAX_USER_INPUT_THRESHOLD) - croppedSelectedCodeSnippet.length));\n this.updateAvailableCharactersIndicator();\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.REMOVE_CODE_SNIPPET, () => {\n this.promptTextInput.updateTextInputMaxLength(MAX_USER_INPUT);\n this.codeSnippet.clear();\n // Update the limit on prompt text given the selected code\n this.updateAvailableCharactersIndicator();\n });\n\n setTimeout(() => {\n this.promptTextInput.focus();\n }, 500);\n }\n\n private readonly updateAvailableCharactersIndicator = (): void => {\n const totalCharsUsed =\n this.promptTextInput.getTextInputValue().trim().length + this.codeSnippet.lastCodeSnippet.length;\n this.remainingCharsIndicator.update({\n innerHTML: `${Math.max(0, (MAX_USER_INPUT - totalCharsUsed))}/${MAX_USER_INPUT}`\n });\n };\n\n private readonly handleInputKeydown = (e: KeyboardEvent): void => {\n if (!this.commandSelectorOpen) {\n this.quickActionCommands = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('quickActionCommands') as QuickActionCommandGroup[];\n if (e.key === KeyMap.BACKSPACE && this.selectedCommand !== '' && this.promptTextInput.getTextInputValue() === '') {\n cancelEvent(e);\n this.clearTextArea();\n } else if (e.key === KeyMap.ENTER && !e.shiftKey && !e.ctrlKey) {\n cancelEvent(e);\n this.sendPrompt();\n } else if (this.selectedCommand === '' && this.quickActionCommands.length > 0 && e.key === KeyMap.SLASH && this.promptTextInput.getTextInputValue() === '') {\n // Show available quick actions\n if (this.commandSelector !== undefined) {\n this.commandSelector.close();\n }\n this.filteredCommandsList = [ ...this.quickActionCommands ];\n this.commandSelector = new Overlay({\n closeOnOutsideClick: true,\n referenceElement: this.render.querySelector('.mynah-chat-prompt') as ExtendedHTMLElement,\n dimOutside: false,\n stretchWidth: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n onClose: () => {\n this.commandSelectorOpen = false;\n },\n children: [\n this.getQuickCommandActions(this.quickActionCommands)\n ],\n });\n\n this.commandSelectorOpen = true;\n }\n } else {\n const blockedKeys = [ KeyMap.ENTER, KeyMap.ESCAPE, KeyMap.SPACE, KeyMap.TAB, KeyMap.BACK_SLASH, KeyMap.SLASH ] as string[];\n const navigationalKeys = [ KeyMap.ARROW_UP, KeyMap.ARROW_DOWN ] as string[];\n if (blockedKeys.includes(e.key)) {\n e.preventDefault();\n if (e.key === KeyMap.ENTER || e.key === KeyMap.TAB || e.key === KeyMap.SPACE) {\n let targetElement;\n if (this.filteredCommandsList.length > 0) {\n // If list is empty, it means there's no match, so we need to clear the selection\n targetElement = this.commandSelector.render.querySelector('.target-command') ?? this.commandSelector.render.querySelector('.mynah-chat-command-selector-command');\n }\n this.handleCommandSelection({\n command: targetElement?.getAttribute('command') ?? '',\n placeholder: targetElement?.getAttribute('placeholder') ?? undefined,\n });\n }\n if (this.commandSelector !== undefined) {\n this.commandSelector.close();\n }\n } else if (navigationalKeys.includes(e.key)) {\n e.preventDefault();\n const commandElements = Array.from(this.commandSelector.render.querySelectorAll('.mynah-chat-command-selector-command'));\n let lastActiveElement = commandElements.findIndex(commandElement => commandElement.classList.contains('target-command'));\n lastActiveElement = lastActiveElement === -1 ? commandElements.length : lastActiveElement;\n let nextElement: number;\n if (e.key === KeyMap.ARROW_UP) {\n if (lastActiveElement > 0) {\n nextElement = lastActiveElement - 1;\n } else {\n nextElement = commandElements.length - 1;\n }\n } else {\n if (lastActiveElement < commandElements.length - 1) {\n nextElement = lastActiveElement + 1;\n } else {\n nextElement = 0;\n }\n }\n\n commandElements[lastActiveElement]?.classList.remove('target-command');\n commandElements[nextElement].classList.add('target-command');\n if (commandElements[nextElement].getAttribute('prompt') !== null) {\n this.promptTextInput.updateTextInputValue(commandElements[nextElement].getAttribute('prompt') as string);\n }\n } else {\n if (this.commandSelector !== undefined) {\n setTimeout(() => {\n if (this.promptTextInput.getTextInputValue() === '') {\n this.commandSelector.close();\n } else {\n this.filteredCommandsList = [];\n [ ...this.quickActionCommands ].forEach((quickActionGroup: QuickActionCommandGroup) => {\n const newQuickActionCommandGroup = { ...quickActionGroup };\n try {\n const promptRegex = new RegExp(`${this.promptTextInput.getTextInputValue().substring(1)}` ?? '', 'gi');\n newQuickActionCommandGroup.commands = newQuickActionCommandGroup.commands.filter(command =>\n command.command.match(promptRegex)\n );\n if (newQuickActionCommandGroup.commands.length > 0) {\n this.filteredCommandsList.push(newQuickActionCommandGroup);\n }\n } catch (e) {\n // In case the prompt is an incomplete regex\n }\n });\n if (this.filteredCommandsList.length > 0) {\n this.commandSelector.toggleHidden(false);\n this.commandSelector.updateContent([ this.getQuickCommandActions(this.filteredCommandsList) ]);\n } else {\n // If there's no matching action, hide the command selector overlay\n this.commandSelector.toggleHidden(true);\n }\n }\n }, 1);\n }\n }\n }\n };\n\n private readonly getQuickCommandActions = (quickCommandList: QuickActionCommandGroup[]): ExtendedHTMLElement => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector' ],\n children: quickCommandList.map((quickActionCommandGroup) => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-group' ],\n children: [\n ...(quickActionCommandGroup.groupName !== undefined\n ? [ DomBuilder.getInstance().build({\n type: 'h4',\n classNames: [ 'mynah-chat-command-selector-group-title' ],\n children: [ quickActionCommandGroup.groupName ]\n }) ]\n : []),\n ...(quickActionCommandGroup.commands.map(quickActionCommand => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command' ],\n attributes: {\n ...quickActionCommand\n },\n events: {\n click: () => {\n this.handleCommandSelection(quickActionCommand);\n }\n },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command-name' ],\n children: [ quickActionCommand.command ]\n },\n ...(quickActionCommand.description !== undefined\n ? [ {\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command-description' ],\n children: [ quickActionCommand.description ]\n } ]\n : [])\n ]\n });\n }))\n ]\n });\n })\n });\n };\n\n private readonly handleCommandSelection = (quickActionCommand: QuickActionCommand): void => {\n this.selectedCommand = quickActionCommand.command;\n this.promptTextInput.updateTextInputValue('');\n if (quickActionCommand.placeholder !== undefined) {\n this.promptTextInputCommand.setCommand(this.selectedCommand);\n this.promptTextInput.updateTextInputPlaceholder(quickActionCommand.placeholder);\n } else {\n this.sendPrompt();\n }\n this.commandSelector.close();\n this.promptTextInput.focus();\n };\n\n public readonly clearTextArea = (): void => {\n this.selectedCommand = '';\n this.promptTextInput.clear();\n this.promptTextInput.updateTextInputMaxLength(MAX_USER_INPUT);\n this.promptTextInputCommand.setCommand('');\n this.attachmentWrapper.clear();\n this.codeSnippet.clear();\n this.attachment = undefined;\n this.updateAvailableCharactersIndicator();\n };\n\n public readonly addText = (textToAdd: string): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.ADD_CODE_SNIPPET, {\n textToAdd,\n tabId: this.props.tabId\n });\n };\n\n private readonly sendPrompt = (): void => {\n const currentInputValue = this.promptTextInput.getTextInputValue();\n if (currentInputValue.trim() !== '' || this.selectedCommand.trim() !== '') {\n const selectedCodeSnippet: string | undefined = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('selectedCodeSnippet');\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_PROMPT, {\n tabId: this.props.tabId,\n prompt: {\n prompt: currentInputValue + (selectedCodeSnippet ?? ''),\n escapedPrompt: escapeHTML(currentInputValue + (selectedCodeSnippet ?? '')),\n ...(this.selectedCommand !== '' ? { command: this.selectedCommand } : {}),\n attachment: this.attachment\n }\n });\n this.clearTextArea();\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { ChatItem, ChatItemType } from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\nimport { ChatItemCard } from './chat-item-card';\nimport { ChatPromptInput } from './chat-prompt-input';\nimport { ChatPromptInputInfo } from './chat-prompt-input-info';\n\nexport interface ChatWrapperProps {\n onStopChatResponse?: (tabId: string) => void;\n tabId: string;\n}\nexport class ChatWrapper {\n private readonly props: ChatWrapperProps;\n private readonly chatItemsContainer: ExtendedHTMLElement;\n private readonly intermediateBlockContainer: ExtendedHTMLElement;\n private readonly promptInputElement: ExtendedHTMLElement;\n private readonly promptInput: ChatPromptInput;\n private readonly promptInfo: ExtendedHTMLElement;\n private lastChatItemCard: ChatItemCard | null;\n render: ExtendedHTMLElement;\n constructor (props: ChatWrapperProps) {\n this.props = props;\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('chatItems', (chatItems: ChatItem[]) => {\n const chatItemToInsert: ChatItem = chatItems[chatItems.length - 1];\n if (this.chatItemsContainer.children.length === chatItems.length) {\n const lastItem = this.chatItemsContainer.children.item(0);\n if (lastItem !== null) {\n lastItem.innerHTML = new ChatItemCard({ tabId: this.props.tabId, chatItem: chatItemToInsert }).render.innerHTML;\n }\n } else if (chatItems.length > 0) {\n if (this.chatItemsContainer.children.length === 0) {\n chatItems.forEach(chatItem => {\n this.insertChatItem(chatItem);\n });\n } else {\n this.insertChatItem(chatItemToInsert);\n }\n } else {\n this.chatItemsContainer.clear(true);\n }\n });\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('loadingChat', (loadingChat: boolean) => {\n if (loadingChat) {\n this.render.addClass('loading');\n } else {\n this.render.removeClass('loading');\n }\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('cancelButtonWhenLoading', (showCancelButton: boolean) => {\n if (showCancelButton) {\n this.intermediateBlockContainer.removeClass('hidden');\n } else {\n this.intermediateBlockContainer.addClass('hidden');\n }\n });\n\n this.promptInput = new ChatPromptInput({ tabId: this.props.tabId });\n this.promptInputElement = this.promptInput.render;\n this.promptInfo = new ChatPromptInputInfo({ tabId: this.props.tabId }).render;\n this.chatItemsContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-items-container' ],\n persistent: true,\n children: [],\n });\n\n this.intermediateBlockContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-overflowing-intermediate-block',\n ...(MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('cancelButtonWhenLoading') === false ? [ 'hidden' ] : []) ],\n children: [\n ...(this.props?.onStopChatResponse !== undefined\n ? [ new Button({\n classNames: [ 'mynah-chat-stop-chat-response-button' ],\n label: Config.getInstance().config.texts.stopGenerating,\n icon: new Icon({ icon: MynahIcons.BLOCK }).render,\n onClick: () => {\n if ((this.props?.onStopChatResponse) !== undefined) {\n this.props?.onStopChatResponse(this.props.tabId);\n }\n },\n }).render ]\n : [])\n ]\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-wrapper' ],\n attributes: {\n 'mynah-tab-id': this.props.tabId,\n },\n persistent: true,\n children: [\n {\n type: 'style',\n children: [ `\n .mynah-nav-tabs-wrapper[selected-tab=\"${this.props.tabId}\"] + .mynah-ui-tab-contents-wrapper > .mynah-chat-wrapper[mynah-tab-id=\"${this.props.tabId}\"]{\n display: flex;\n }\n .mynah-nav-tabs-wrapper[selected-tab=\"${this.props.tabId}\"] + .mynah-ui-tab-contents-wrapper > .mynah-chat-wrapper:not([mynah-tab-id=\"${this.props.tabId}\"]) * {\n pointer-events: none !important;\n }` ],\n },\n this.chatItemsContainer,\n this.intermediateBlockContainer,\n this.promptInputElement,\n this.promptInfo\n ]\n });\n\n const initChatItems = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('chatItems');\n if (initChatItems.length > 0) {\n initChatItems.forEach((chatItem: ChatItem) => this.insertChatItem(chatItem));\n }\n }\n\n private readonly insertChatItem = (chatItem: ChatItem): void => {\n const chatItemCard = new ChatItemCard({\n tabId: this.props.tabId,\n chatItem\n });\n if (chatItem.type === ChatItemType.ANSWER_STREAM) {\n this.lastChatItemCard?.render.addClass('stream-ended');\n this.lastChatItemCard = chatItemCard;\n } else if (\n (chatItem.type === ChatItemType.ANSWER ||\n chatItem.type === ChatItemType.PROMPT ||\n chatItem.type === ChatItemType.AI_PROMPT ||\n chatItem.type === ChatItemType.SYSTEM_PROMPT) && chatItem.body !== undefined) {\n this.lastChatItemCard?.render.addClass('stream-ended');\n this.lastChatItemCard = null;\n }\n this.chatItemsContainer.insertChild('afterbegin', chatItemCard.render);\n if (chatItem.type === ChatItemType.PROMPT || chatItem.type === ChatItemType.SYSTEM_PROMPT) {\n // Make sure we scroll the chat window to the bottom\n // Only if it is a PROMPT\n this.chatItemsContainer.scrollTop = this.chatItemsContainer.scrollHeight + 500;\n }\n };\n\n public updateLastChatAnswer = (updateWith: Partial<ChatItem>): void => {\n if (this.lastChatItemCard !== null) {\n this.lastChatItemCard.updateCardStack(updateWith);\n }\n };\n\n public addToPrompt = (textToAdd: string): void => {\n this.promptInput.addText(textToAdd);\n };\n}\n","import { ExtendedHTMLElement } from '../../../helper/dom';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../../overlay';\nimport { Icon, MynahIcons } from '../../icon';\nimport { Button } from '../../button';\nimport { MynahUIGlobalEvents, cancelEvent } from '../../../helper/events';\nimport { MynahEventNames } from '../../../static';\nimport { Card } from '../../card/card';\nimport { CardBody } from '../../card/card-body';\n\nexport interface ICodeSnippetWidgetProps {\n tabId: string;\n markdownText: string;\n}\n\nexport class CodeSnippetWidget {\n private readonly props: ICodeSnippetWidgetProps;\n private previewOverlay: Overlay | undefined;\n render: ExtendedHTMLElement;\n constructor (props: ICodeSnippetWidgetProps) {\n this.props = props;\n this.render = this.renderCodeSnippetWidget(this.props.markdownText);\n }\n\n private readonly showPreviewOverLay = (markdownText: string): void => {\n this.previewOverlay = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: this.render,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n new Card({\n classNames: [ 'mynah-prompt-input-snippet-attachment-overlay' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n ]\n }).render\n ],\n });\n };\n\n private readonly closePreviewOverLay = (): void => {\n if (this.previewOverlay !== undefined) {\n this.previewOverlay.close();\n this.previewOverlay = undefined;\n }\n };\n\n private readonly renderCodeSnippetWidget = (markdownText: string): ExtendedHTMLElement => {\n return new Card({\n padding: 'none',\n events: {\n mouseenter: () => {\n this.showPreviewOverLay(markdownText);\n },\n mouseleave: () => {\n this.closePreviewOverLay();\n },\n },\n classNames: [ 'snippet-card-container' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n new Button({\n classNames: [ 'code-snippet-close-button' ],\n onClick: e => {\n cancelEvent(e);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.REMOVE_CODE_SNIPPET, this.props.tabId);\n this.closePreviewOverLay();\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render,\n primary: false,\n }).render,\n ],\n }).render;\n };\n\n public readonly clear = (): void => {\n this.closePreviewOverLay();\n };\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { CodeSnippetWidget } from './code-snippet-widget';\n\nexport interface ICodeSnippetProps {\n tabId: string;\n}\n\nexport interface ISelectCodeSnippetEvent {\n tabId: string;\n selectedCodeSnippet?: string;\n}\n\nexport class CodeSnippet {\n private readonly _props: ICodeSnippetProps;\n private readonly _render: ExtendedHTMLElement;\n private snippetWidget: CodeSnippetWidget | undefined;\n public lastCodeSnippet: string = '';\n constructor (props: ICodeSnippetProps) {\n this._props = props;\n\n this._render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'outer-container' ],\n persistent: true,\n });\n }\n\n public get render (): ExtendedHTMLElement {\n return this._render;\n }\n\n public readonly updateSelectedCodeSnippet = (selectedCodeSnippet: string | undefined): void => {\n if (this.snippetWidget !== undefined) {\n this.snippetWidget.clear();\n }\n this._render.clear();\n this.lastCodeSnippet = selectedCodeSnippet ?? '';\n if (selectedCodeSnippet !== undefined && selectedCodeSnippet !== '') {\n this.snippetWidget = new CodeSnippetWidget({\n tabId: this._props.tabId,\n markdownText: selectedCodeSnippet,\n });\n this._render.insertChild('afterbegin', this.snippetWidget.render);\n const isCodeOverflowVertically =\n (this._render.getBoundingClientRect()?.height ?? 0) < (this._render.getElementsByTagName('code')?.[0]?.getBoundingClientRect()?.height ?? 0);\n if (isCodeOverflowVertically) {\n this._render.children[0].classList.add('vertical-overflow');\n }\n }\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId)?.updateStore({\n selectedCodeSnippet,\n });\n };\n\n public readonly clear = (): void => {\n this.lastCodeSnippet = '';\n if (this.snippetWidget !== undefined) {\n this.snippetWidget.clear();\n }\n this.snippetWidget = undefined;\n this._render.clear();\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId)?.updateStore({\n selectedCodeSnippet: undefined,\n });\n };\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { MAX_USER_INPUT } from '../chat-prompt-input';\n\nexport interface IPromptTextInputProps {\n tabId: string;\n onKeydown: (e: KeyboardEvent) => void;\n onInput?: (e: KeyboardEvent) => void;\n}\n\nexport class PromptTextInput {\n private readonly _props: IPromptTextInputProps;\n private readonly _render: ExtendedHTMLElement;\n private readonly _promptTextInputSizer: ExtendedHTMLElement;\n private readonly _promptTextInput: ExtendedHTMLElement;\n constructor (props: IPromptTextInputProps) {\n this._props = props;\n\n const initialDisabledState = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputDisabledState') as boolean;\n\n this._promptTextInputSizer = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input', 'mynah-chat-prompt-input-sizer' ],\n });\n\n this._promptTextInput = DomBuilder.getInstance().build({\n type: 'textarea',\n classNames: [ 'mynah-chat-prompt-input' ],\n attributes: {\n ...(initialDisabledState ? { disabled: 'disabled' } : {}),\n tabindex: '1',\n rows: '1',\n maxlength: MAX_USER_INPUT.toString(),\n type: 'text',\n placeholder: MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputPlaceholder'),\n value: '',\n },\n events: {\n keydown: this._props.onKeydown,\n input: (e: KeyboardEvent) => {\n // Set the appropriate prompt input height\n this.updatePromptTextInputSizer();\n // Additional handler\n if (this._props.onInput !== undefined) {\n this._props.onInput(e);\n }\n },\n focus: () => {\n this.render.addClass('input-has-focus');\n },\n blur: () => {\n this.render.removeClass('input-has-focus');\n }\n },\n });\n\n this._render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-inner-wrapper', 'no-text' ],\n children: [\n this._promptTextInputSizer,\n this._promptTextInput,\n ]\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputDisabledState', (isDisabled: boolean) => {\n if (isDisabled) {\n this._promptTextInput.setAttribute('disabled', 'disabled');\n } else {\n // Enable the input field and focus on it\n this._promptTextInput.removeAttribute('disabled');\n this._promptTextInput.focus();\n }\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputPlaceholder', (placeholderText: string) => {\n if (placeholderText !== undefined) {\n this._promptTextInput.update({\n attributes: {\n placeholder: placeholderText\n }\n });\n }\n });\n }\n\n get render (): ExtendedHTMLElement {\n return this._render;\n }\n\n private readonly updatePromptTextInputSizer = (): void => {\n if (this._promptTextInput.value.trim() !== '') {\n this._render.removeClass('no-text');\n } else {\n this._render.addClass('no-text');\n }\n this._promptTextInputSizer.innerHTML = this._promptTextInput.value.replace(/\\n/g, '</br> ');\n };\n\n public readonly clear = (): void => {\n this._promptTextInputSizer.innerHTML = '';\n this.updateTextInputValue('');\n const defaultPlaceholder = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputPlaceholder');\n this.updateTextInputPlaceholder(defaultPlaceholder);\n this._render.addClass('no-text');\n };\n\n public readonly focus = (): void => {\n this._promptTextInput.focus();\n this.updateTextInputValue('');\n };\n\n public readonly getTextInputValue = (): string => {\n return this._promptTextInput.value;\n };\n\n public readonly updateTextInputValue = (value: string): void => {\n this._promptTextInput.value = value;\n };\n\n public readonly updateTextInputMaxLength = (maxLength: number): void => {\n this._promptTextInput.update({\n attributes: {\n maxlength: maxLength.toString(),\n }\n });\n };\n\n public readonly updateTextInputPlaceholder = (text: string): void => {\n this._promptTextInput.update({\n attributes: {\n placeholder: text,\n }\n });\n };\n}\n","import { ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { Button } from '../../button';\nimport { Icon, MynahIcons } from '../../icon';\n\nexport interface ISendButtonProps {\n tabId: string;\n onClick: () => void;\n}\n\nexport class SendButton {\n private readonly _props: ISendButtonProps;\n private readonly _render: ExtendedHTMLElement;\n constructor (props: ISendButtonProps) {\n this._props = props;\n\n const initialDisabledState = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputDisabledState') as boolean;\n\n this._render = new Button({\n classNames: [ 'mynah-icon-button', 'mynah-chat-prompt-button' ],\n attributes: {\n ...(initialDisabledState ? { disabled: 'disabled' } : {}),\n tabindex: '5'\n },\n icon: new Icon({ icon: MynahIcons.ENVELOPE_SEND }).render,\n onClick: () => {\n this._props.onClick();\n },\n }).render;\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputDisabledState', (isDisabled: boolean) => {\n if (isDisabled) {\n this.render.setAttribute('disabled', 'disabled');\n } else {\n this.render.removeAttribute('disabled');\n }\n });\n }\n\n get render (): ExtendedHTMLElement {\n return this._render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// eslint-disable @typescript-eslint/restrict-template-expressions\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../helper/dom';\nimport { generateUID } from '../helper/guid';\nimport { Icon, MynahIcons } from './icon';\n\ninterface CollapsibleContentProps {\n title: string | ExtendedHTMLElement | HTMLElement | DomBuilderObject;\n children: Array<string | ExtendedHTMLElement | HTMLElement | DomBuilderObject>;\n classNames?: string[];\n initialCollapsedState?: boolean;\n onCollapseStateChange?: (collapsed: boolean) => void;\n}\nexport class CollapsibleContent {\n render: ExtendedHTMLElement;\n private readonly props: Required<CollapsibleContentProps>;\n private readonly uid: string;\n private icon: ExtendedHTMLElement;\n constructor (props: CollapsibleContentProps) {\n this.uid = generateUID();\n this.props = {\n initialCollapsedState: true,\n onCollapseStateChange: () => {},\n classNames: [],\n ...props\n };\n this.icon = new Icon({ icon: this.props.initialCollapsedState ? MynahIcons.RIGHT_OPEN : MynahIcons.DOWN_OPEN }).render;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-collapsible-content-wrapper', ...this.props.classNames ],\n children: [\n {\n type: 'input',\n classNames: [ 'mynah-collapsible-content-checkbox' ],\n attributes: {\n type: 'checkbox',\n name: this.uid,\n id: this.uid,\n ...(this.props.initialCollapsedState ? { checked: 'checked' } : {})\n },\n events: {\n change: (e) => {\n const val = e.currentTarget.checked;\n const newIcon = new Icon({\n icon: val === true ? MynahIcons.RIGHT_OPEN : MynahIcons.DOWN_OPEN\n }).render;\n this.icon.replaceWith(newIcon);\n this.icon = newIcon;\n this.props.onCollapseStateChange(val);\n }\n },\n },\n {\n type: 'label',\n classNames: [ 'mynah-collapsible-content-label' ],\n attributes: {\n for: this.uid,\n },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-collapsible-content-label-title-wrapper' ],\n children: [\n this.icon,\n {\n type: 'span',\n classNames: [ 'mynah-collapsible-content-label-title-text' ],\n children: [ this.props.title ]\n }\n ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-collapsible-content-label-content-wrapper' ],\n children: this.props.children\n },\n ],\n },\n ],\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\n\nexport interface FeedbackFormCommentProps {\n onChange?: (comment: string) => void;\n initComment?: string;\n}\nexport class FeedbackFormComment {\n render: ExtendedHTMLElement;\n\n constructor (props: FeedbackFormCommentProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'textarea',\n events: {\n keyup: (e: InputEvent) => {\n if (props.onChange !== undefined) {\n props.onChange(this.render.value);\n }\n },\n },\n classNames: [ 'mynah-feedback-form-comment' ],\n attributes: {\n value: props.initComment ?? '',\n },\n });\n }\n\n getComment = (): string => this.render.value;\n clear = (): void => { this.render.value = ''; };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload, MynahEventNames, MynahPortalNames } from '../../static';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { Button } from '../button';\nimport { FeedbackFormComment } from './feedback-form-comment';\nimport { cancelEvent, MynahUIGlobalEvents } from '../../helper/events';\nimport { Icon, MynahIcons } from '../icon';\nimport { Config } from '../../helper/config';\n\nexport interface FeedbackFormProps {\n initPayload?: FeedbackPayload;\n}\nexport class FeedbackForm {\n private feedbackFormWrapper: ExtendedHTMLElement;\n private readonly feedbackSelect: ExtendedHTMLElement;\n private readonly feedbackOptionsWrapper: ExtendedHTMLElement;\n private readonly feedbackComment: FeedbackFormComment;\n private readonly feedbackSubmitButton: Button;\n private feedbackPayload: FeedbackPayload = { messageId: '', selectedOption: '', tabId: '', comment: '' };\n public readonly feedbackFormContainer: ExtendedHTMLElement;\n\n constructor (props?: FeedbackFormProps) {\n this.feedbackPayload = {\n selectedOption: Config.getInstance().config.feedbackOptions[0].value,\n messageId: '',\n tabId: '',\n comment: '',\n ...props?.initPayload\n };\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SHOW_FEEDBACK_FORM, (data: {messageId: string; tabId: string}) => {\n if (this.feedbackFormWrapper === undefined) {\n this.feedbackFormWrapper = DomBuilder.getInstance().createPortal(\n MynahPortalNames.FEEDBACK_FORM,\n {\n type: 'div',\n attributes: {\n id: 'mynah-feedback-form-wrapper'\n },\n children: [\n this.feedbackFormContainer\n ]\n },\n 'afterbegin'\n );\n }\n this.feedbackPayload.messageId = data.messageId;\n this.feedbackPayload.tabId = data.tabId;\n setTimeout(() => {\n this.show();\n }, 5);\n });\n\n this.feedbackSelect = DomBuilder.getInstance().build({\n type: 'select',\n attributes: { value: Config.getInstance().config.feedbackOptions[0].value },\n classNames: [ 'mynah-feedback-form-select' ],\n events: {\n change: () => {\n this.feedbackPayload.selectedOption = this.feedbackSelect.value;\n }\n },\n children:\n Config.getInstance().config.feedbackOptions.map(option => ({\n type: 'option',\n attributes: { value: option.value },\n children: [ option.label ]\n })) as DomBuilderObject[]\n });\n this.feedbackOptionsWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form-select-wrapper' ],\n children: [\n this.feedbackSelect,\n new Icon({ icon: MynahIcons.DOWN_OPEN, classNames: [ 'mynah-feedback-form-select-handle' ] }).render ]\n });\n\n this.feedbackComment = new FeedbackFormComment({\n onChange: (comment: string) => {\n this.feedbackPayload.comment = comment;\n },\n initComment: this.feedbackPayload?.comment,\n });\n\n this.feedbackSubmitButton = new Button({\n label: Config.getInstance().config.texts.submit,\n onClick: () => {\n this.onFeedbackSet(this.feedbackPayload);\n this.close();\n },\n });\n\n this.feedbackFormContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form' ],\n events: { click: cancelEvent },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-feedback-form-header' ],\n children: [\n {\n type: 'h4',\n children: [ Config.getInstance().config.texts.feedbackFormTitle ]\n },\n new Button({\n primary: false,\n onClick: () => {\n this.close();\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render\n }).render\n ]\n },\n {\n type: 'span',\n children: [ Config.getInstance().config.texts.feedbackFormOptionsLabel ],\n },\n this.feedbackOptionsWrapper,\n {\n type: 'span',\n children: [ Config.getInstance().config.texts.feedbackFormCommentLabel ],\n },\n this.feedbackComment.render,\n {\n type: 'div',\n classNames: [ 'mynah-feedback-form-buttons-container' ],\n children: [\n new Button({\n primary: false,\n label: Config.getInstance().config.texts.cancel,\n onClick: () => {\n this.close();\n }\n }).render,\n this.feedbackSubmitButton.render\n ]\n }\n ],\n });\n }\n\n private readonly onFeedbackSet = (feedbackData: FeedbackPayload): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.FEEDBACK_SET, feedbackData);\n };\n\n close = (): void => {\n this.feedbackComment.clear();\n this.feedbackSelect.value = Config.getInstance().config.feedbackOptions[0].value;\n this.feedbackPayload = {\n messageId: '',\n selectedOption: Config.getInstance().config.feedbackOptions[0].value,\n tabId: '',\n comment: ''\n };\n this.feedbackFormWrapper.removeClass('mynah-feedback-form-show');\n };\n\n show = (): void => {\n this.feedbackFormWrapper.addClass('mynah-feedback-form-show');\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { MynahUIIconImporter } from './icon/icon-importer';\n\nexport enum MynahIcons {\n MYNAH = 'mynah',\n MENU = 'menu',\n MINUS = 'minus',\n SEARCH = 'search',\n PLUS = 'plus',\n CHAT = 'chat',\n LINK = 'link',\n DOC = 'doc',\n EXTERNAL = 'external',\n CANCEL = 'cancel',\n CALENDAR = 'calendar',\n MEGAPHONE = 'megaphone',\n NOTIFICATION = 'notification',\n EYE = 'eye',\n ELLIPSIS = 'ellipsis',\n OK = 'ok',\n UP_OPEN = 'up-open',\n DOWN_OPEN = 'down-open',\n RIGHT_OPEN = 'right-open',\n LEFT_OPEN = 'left-open',\n RESIZE_FULL = 'resize-full',\n RESIZE_SMALL = 'resize-small',\n BLOCK = 'block',\n OK_CIRCLED = 'ok-circled',\n INFO = 'info',\n WARNING = 'warning',\n ERROR = 'error',\n THUMBS_UP = 'thumbs-up',\n THUMBS_DOWN = 'thumbs-down',\n STAR = 'star',\n LIGHT_BULB = 'light-bulb',\n ENVELOPE_SEND = 'envelope-send',\n REFRESH = 'refresh',\n USER = 'user',\n PLAY = 'play',\n PAUSE = 'pause',\n CODE_BLOCK = 'code-block',\n COPY = 'copy',\n CURSOR_INSERT = 'cursor-insert',\n TEXT_SELECT = 'text-select',\n REVERT = 'revert',\n}\n\nexport interface IconProps {\n icon: MynahIcons;\n classNames?: string[];\n}\nexport class Icon {\n render: ExtendedHTMLElement;\n constructor (props: IconProps) {\n MynahUIIconImporter.getInstance();\n this.render = DomBuilder.getInstance().build({\n type: 'i',\n classNames: [\n 'mynah-ui-icon',\n `mynah-ui-icon-${props.icon}`,\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n children: [ {\n type: 'span',\n attributes: {\n 'aria-hidden': 'true'\n },\n children: [ props.icon ]\n } ]\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-extraneous-class */\n/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder } from '../../helper/dom';\nimport { MynahIcons } from '../icon';\n// ICONS\nimport MYNAH from './icons/mynah.svg';\nimport MENU from './icons/menu.svg';\nimport MINUS from './icons/minus.svg';\nimport SEARCH from './icons/search.svg';\nimport PLUS from './icons/plus.svg';\nimport CHAT from './icons/chat.svg';\nimport LINK from './icons/link.svg';\nimport DOC from './icons/doc.svg';\nimport EXTERNAL from './icons/external.svg';\nimport CANCEL from './icons/cancel.svg';\nimport CALENDAR from './icons/calendar.svg';\nimport MEGAPHONE from './icons/megaphone.svg';\nimport NOTIFICATION from './icons/notification.svg';\nimport EYE from './icons/eye.svg';\nimport ELLIPSIS from './icons/ellipsis.svg';\nimport OK from './icons/ok.svg';\nimport UP_OPEN from './icons/up-open.svg';\nimport DOWN_OPEN from './icons/down-open.svg';\nimport RIGHT_OPEN from './icons/right-open.svg';\nimport LEFT_OPEN from './icons/left-open.svg';\nimport RESIZE_FULL from './icons/resize-full.svg';\nimport RESIZE_SMALL from './icons/resize-small.svg';\nimport BLOCK from './icons/block.svg';\nimport OK_CIRCLED from './icons/ok-circled.svg';\nimport INFO from './icons/info.svg';\nimport WARNING from './icons/warning.svg';\nimport ERROR from './icons/error.svg';\nimport THUMBS_UP from './icons/thumbs-up.svg';\nimport THUMBS_DOWN from './icons/thumbs-down.svg';\nimport STAR from './icons/star.svg';\nimport LIGHT_BULB from './icons/light-bulb.svg';\nimport ENVELOPE_SEND from './icons/envelope-send.svg';\nimport REFRESH from './icons/refresh.svg';\nimport USER from './icons/user.svg';\nimport PLAY from './icons/play.svg';\nimport PAUSE from './icons/pause.svg';\nimport CODE_BLOCK from './icons/code-block.svg';\nimport COPY from './icons/copy.svg';\nimport CURSOR_INSERT from './icons/cursor-insert.svg';\nimport TEXT_SELECT from './icons/text-select.svg';\nimport REVERT from './icons/revert.svg';\n\nexport class MynahUIIconImporter {\n private static instance: MynahUIIconImporter;\n private constructor () {\n const mynahIconMappings = {\n MYNAH,\n MENU,\n MINUS,\n SEARCH,\n PLUS,\n CHAT,\n LINK,\n DOC,\n EXTERNAL,\n CANCEL,\n CALENDAR,\n MEGAPHONE,\n NOTIFICATION,\n EYE,\n ELLIPSIS,\n OK,\n UP_OPEN,\n DOWN_OPEN,\n RIGHT_OPEN,\n LEFT_OPEN,\n RESIZE_FULL,\n RESIZE_SMALL,\n BLOCK,\n OK_CIRCLED,\n INFO,\n WARNING,\n ERROR,\n THUMBS_UP,\n THUMBS_DOWN,\n STAR,\n LIGHT_BULB,\n ENVELOPE_SEND,\n REFRESH,\n USER,\n PLAY,\n PAUSE,\n CODE_BLOCK,\n COPY,\n CURSOR_INSERT,\n TEXT_SELECT,\n REVERT\n };\n DomBuilder.getInstance().createPortal('mynah-ui-icons', {\n type: 'style',\n attributes: {\n type: 'text/css'\n },\n children: [ `\n ${Object.keys(MynahIcons).map(iconKey => {\n const iconName = MynahIcons[iconKey as keyof typeof MynahIcons];\n return `\n .mynah-ui-icon-${iconName} {\n --mynah-ui-icon-${iconName}: url(${mynahIconMappings[iconKey as keyof typeof mynahIconMappings]});\n -webkit-mask-image: var(--mynah-ui-icon-${iconName});\n mask-image: var(--mynah-ui-icon-${iconName});\n }`;\n }).join('')}\n ` ]\n }, 'beforebegin');\n }\n\n public static getInstance = (): MynahUIIconImporter => {\n if (MynahUIIconImporter.instance === undefined) {\n MynahUIIconImporter.instance = new MynahUIIconImporter();\n }\n\n return MynahUIIconImporter.instance;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { MynahUITabsStore } from '../helper/tabs-store';\nimport { MynahUITabStoreTab } from '../static';\nimport { Button } from './button';\nimport { Card } from './card/card';\nimport { CardBody } from './card/card-body';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from './overlay';\nimport { Toggle, ToggleOption } from './toggle';\n\nexport interface TabsProps {\n onChange?: (selectedTabId: string) => void;\n}\nexport class Tabs {\n render: ExtendedHTMLElement;\n private tabIdTitleSubscriptions: Record<string, string> = {};\n private tabIdChatItemsSubscriptions: Record<string, string> = {};\n private toggleGroup: Toggle;\n private maxReachedOverlay: Overlay | undefined;\n private readonly props: TabsProps;\n\n constructor (props: TabsProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-nav-tabs-wrapper' ],\n events: {\n dblclick: (e) => {\n cancelEvent(e);\n if (MynahUITabsStore.getInstance().tabsLength() < Config.getInstance().config.maxTabs) {\n MynahUITabsStore.getInstance().addTab();\n }\n }\n },\n children: this.getTabsRender(MynahUITabsStore.getInstance().getSelectedTabId()),\n });\n\n MynahUITabsStore.getInstance().addListener('add', (tabId, tabData) => {\n this.assignListener(tabId);\n this.toggleGroup.addOption({\n value: tabId,\n label: tabData?.store?.tabTitle,\n selected: tabData?.isSelected\n });\n this.render.setAttribute('selected-tab', tabId);\n });\n MynahUITabsStore.getInstance().addListener('remove', (tabId, newSelectedTab?: MynahUITabStoreTab) => {\n this.removeListenerAssignments(tabId);\n this.toggleGroup.removeOption(tabId);\n if (newSelectedTab !== undefined) {\n this.toggleGroup.snapToOption(MynahUITabsStore.getInstance().getSelectedTabId());\n }\n this.render.setAttribute('selected-tab', MynahUITabsStore.getInstance().getSelectedTabId());\n });\n MynahUITabsStore.getInstance().addListener('selectedTabChange', (selectedTabId) => {\n this.render.setAttribute('selected-tab', selectedTabId);\n this.toggleGroup.setValue(selectedTabId);\n });\n }\n\n private readonly getTabOptionsFromTabStoreData = (): ToggleOption[] => {\n const tabs = MynahUITabsStore.getInstance().getAllTabs();\n return Object.keys(tabs).map((tabId: string) => {\n const tabOption = {\n value: tabId,\n label: tabs[tabId].store?.tabTitle,\n selected: tabs[tabId].isSelected\n };\n return tabOption;\n });\n };\n\n private readonly getTabsRender = (selectedTabId?: string): ExtendedHTMLElement[] => {\n const tabs = this.getTabOptionsFromTabStoreData();\n tabs.forEach(tab => {\n this.assignListener(tab.value);\n });\n this.toggleGroup = new Toggle({\n onChange: (selectedTabId: string) => {\n MynahUITabsStore.getInstance().selectTab(selectedTabId);\n if (this.props.onChange !== undefined) {\n this.props.onChange(selectedTabId);\n }\n },\n onRemove: (selectedTabId) => {\n MynahUITabsStore.getInstance().removeTab(selectedTabId);\n },\n name: 'mynah-main-tabs',\n options: tabs,\n value: selectedTabId\n });\n return [\n this.toggleGroup.render,\n new Button({\n classNames: [ 'mynah-toggle-close-button' ],\n additionalEvents: {\n mouseenter: (e) => {\n if (MynahUITabsStore.getInstance().tabsLength() === Config.getInstance().config.maxTabs) {\n this.showMaxReachedOverLay(e.currentTarget, Config.getInstance().config.texts.noMoreTabsTooltip);\n }\n },\n mouseleave: () => {\n this.hideMaxReachedOverLay();\n },\n },\n onClick: (e) => {\n cancelEvent(e);\n if (MynahUITabsStore.getInstance().tabsLength() < Config.getInstance().config.maxTabs) {\n MynahUITabsStore.getInstance().addTab();\n }\n },\n icon: new Icon({ icon: MynahIcons.PLUS }).render,\n primary: false\n }).render\n ];\n };\n\n private readonly showMaxReachedOverLay = (elm: HTMLElement, markdownText: string): void => {\n this.maxReachedOverlay = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n horizontalDirection: OverlayHorizontalDirection.CENTER,\n children: [\n new Card({\n classNames: [ 'mynah-nav-tabs-max-reached-overlay' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n ]\n }).render\n ],\n });\n };\n\n private readonly hideMaxReachedOverLay = (): void => {\n if (this.maxReachedOverlay !== undefined) {\n this.maxReachedOverlay.close();\n this.maxReachedOverlay = undefined;\n }\n };\n\n private readonly assignListener = (tabId: string): void => {\n this.tabIdTitleSubscriptions[tabId] = MynahUITabsStore.getInstance().addListenerToDataStore(tabId, 'tabTitle', (title) => {\n this.toggleGroup.updateOptionTitle(tabId, title);\n }) ?? '';\n this.tabIdChatItemsSubscriptions[tabId] = MynahUITabsStore.getInstance().addListenerToDataStore(tabId, 'chatItems', () => {\n this.toggleGroup.updateOptionIndicator(tabId, true);\n }) ?? '';\n };\n\n private readonly removeListenerAssignments = (tabId: string): void => {\n MynahUITabsStore.getInstance().removeListenerFromDataStore(tabId, this.tabIdTitleSubscriptions[tabId], 'tabTitle');\n MynahUITabsStore.getInstance().removeListenerFromDataStore(tabId, this.tabIdChatItemsSubscriptions[tabId], 'chatItems');\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilderObject, DS, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { NotificationType } from '../static';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection, OVERLAY_MARGIN } from './overlay';\n\ntype NotificationContentType = string | ExtendedHTMLElement | HTMLElement | DomBuilderObject;\n\nexport interface NotificationProps {\n duration?: number;\n type?: NotificationType;\n title?: string;\n content: NotificationContentType | NotificationContentType[];\n onNotificationClick?: () => void;\n onNotificationHide?: () => void;\n}\n\nexport class Notification {\n private notificationOverlay!: Overlay;\n private readonly duration;\n private readonly type;\n private readonly props;\n\n constructor (props: NotificationProps) {\n this.duration = props.duration !== undefined ? props.duration : 5000;\n this.type = props.type ?? NotificationType.INFO;\n this.props = props;\n }\n\n public notify (): void {\n this.notificationOverlay = new Overlay({\n referencePoint: {\n left: Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0),\n top: this.getNextCalculatedTop(),\n },\n dimOutside: false,\n closeOnOutsideClick: false,\n horizontalDirection: OverlayHorizontalDirection.TO_LEFT,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n onClose: this.props.onNotificationHide,\n children: [\n {\n type: 'div',\n classNames: [\n 'mynah-notification',\n this.props.onNotificationClick !== undefined ? 'mynah-notification-clickable' : '',\n ],\n events: {\n click: e => {\n cancelEvent(e);\n if (this.props.onNotificationClick !== undefined) {\n this.props.onNotificationClick();\n this.notificationOverlay?.close();\n }\n },\n },\n children: [\n new Icon({ icon: this.type.toString() as MynahIcons }).render,\n {\n type: 'div',\n classNames: [ 'mynah-notification-container' ],\n children: [\n {\n type: 'h3',\n classNames: [ 'mynah-notification-title' ],\n children: [ this.props.title ?? '' ],\n },\n {\n type: 'div',\n classNames: [ 'mynah-notification-content' ],\n children: this.getChildren(this.props.content),\n },\n ],\n },\n ],\n },\n ],\n });\n\n if (this.duration !== -1) {\n setTimeout(() => {\n this.notificationOverlay?.close();\n }, this.duration);\n }\n }\n\n /**\n * Calculates the top according to the previously shown and still visible notifications\n * @returns number\n */\n private readonly getNextCalculatedTop = (): number => {\n const prevNotifications = DS('.mynah-notification');\n if (prevNotifications.length > 0) {\n const prevNotificationRectangle = prevNotifications[prevNotifications.length - 1].getBoundingClientRect();\n return prevNotificationRectangle.top + prevNotificationRectangle.height + OVERLAY_MARGIN;\n }\n return 0;\n };\n\n private readonly getChildren = (content: NotificationContentType | NotificationContentType[]): NotificationContentType[] => {\n if (content instanceof Array) {\n return content;\n }\n return [ content ];\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/brace-style */\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../helper/dom';\nimport { generateUID } from '../helper/guid';\nimport { MynahPortalNames } from '../static';\n\nexport const OVERLAY_MARGIN = 8;\n/**\n * The horizontal creation direction of the overlay\n */\nexport enum OverlayHorizontalDirection {\n /**\n * starts from the left edge of the reference element and opens to left\n */\n TO_LEFT = 'horizontal-direction-to-left',\n /**\n * starts from the right edge of the reference element and opens to left\n */\n END_TO_LEFT = 'horizontal-direction-from-end-to-left',\n /**\n * starts from the right edge of the reference element and opens to right\n */\n TO_RIGHT = 'horizontal-direction-to-right',\n /**\n * starts from the left edge of the reference element and opens to right\n */\n START_TO_RIGHT = 'horizontal-direction-from-start-to-right',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'horizontal-direction-at-center',\n}\n\n/**\n * The vertical creation direction of the overlay\n */\nexport enum OverlayVerticalDirection {\n /**\n * starts from the bottom edge of the reference element and opens to bottom\n */\n TO_BOTTOM = 'vertical-direction-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to bottom\n */\n START_TO_BOTTOM = 'vertical-direction-from-start-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to top\n */\n TO_TOP = 'vertical-direction-to-top',\n /**\n * starts from the bottom edge of the reference element and opens to top\n */\n END_TO_TOP = 'vertical-direction-from-end-to-top',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'vertical-direction-at-center',\n}\n\nexport interface OverlayProps {\n referenceElement?: HTMLElement | ExtendedHTMLElement;\n referencePoint?: { top: number; left: number };\n children: Array<HTMLElement | ExtendedHTMLElement | DomBuilderObject>;\n horizontalDirection?: OverlayHorizontalDirection;\n verticalDirection?: OverlayVerticalDirection;\n stretchWidth?: boolean;\n dimOutside?: boolean;\n closeOnOutsideClick?: boolean;\n background?: boolean;\n onClose?: () => void;\n removeOtherOverlays?: boolean;\n}\nexport class Overlay {\n render: ExtendedHTMLElement;\n private readonly container: ExtendedHTMLElement;\n private readonly innerContainer: ExtendedHTMLElement;\n private readonly guid = generateUID();\n private readonly onClose;\n\n constructor (props: OverlayProps) {\n const horizontalDirection = props.horizontalDirection ?? OverlayHorizontalDirection.TO_RIGHT;\n const verticalDirection = props.verticalDirection ?? OverlayVerticalDirection.START_TO_BOTTOM;\n this.onClose = props.onClose;\n const dimOutside = props.dimOutside !== false;\n const closeOnOutsideClick = props.closeOnOutsideClick !== false;\n\n const calculatedTop = this.getCalculatedTop(verticalDirection, props.referenceElement, props.referencePoint);\n const calculatedLeft = this.getCalculatedLeft(horizontalDirection, props.referenceElement, props.referencePoint);\n const calculatedWidth = props.stretchWidth === true ? this.getCalculatedWidth(props.referenceElement) : 0;\n\n this.innerContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-inner-container' ],\n children: props.children,\n });\n\n this.container = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-container', horizontalDirection, verticalDirection, props.background !== false ? 'background' : '' ],\n attributes: {\n style: `top: ${calculatedTop}px; left: ${calculatedLeft}px; ${calculatedWidth !== 0 ? `width: ${calculatedWidth}px;` : ''}`,\n },\n children: [ this.innerContainer ],\n });\n\n if (props.removeOtherOverlays === true) {\n DomBuilder.getInstance().removeAllPortals(MynahPortalNames.OVERLAY);\n }\n\n // this is a portal that goes over all the other items\n // to make it as an overlay item\n this.render = DomBuilder.getInstance().createPortal(\n `${MynahPortalNames.OVERLAY}-${this.guid}`,\n {\n type: 'div',\n attributes: { id: `mynah-overlay-${this.guid}` },\n classNames: [\n 'mynah-overlay',\n ...(dimOutside ? [ 'mynah-overlay-dim-outside' ] : []),\n ...(closeOnOutsideClick ? [ 'mynah-overlay-close-on-outside-click' ] : []),\n ],\n events: {\n click: closeOnOutsideClick ? this.close : () => {},\n },\n children: [ this.container ],\n },\n 'beforeend'\n );\n\n const containerRectangle = this.container.getBoundingClientRect();\n const winHeight = Math.max(document.documentElement.clientHeight ?? 0, window.innerHeight ?? 0);\n const winWidth = Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0);\n\n // if it will open at the center of the reference element or point\n // we only need the half of both measurements\n const comparingWidth =\n horizontalDirection === OverlayHorizontalDirection.CENTER\n ? containerRectangle.width / 2\n : containerRectangle.width;\n const comparingHeight =\n verticalDirection === OverlayVerticalDirection.CENTER\n ? containerRectangle.height / 2\n : containerRectangle.height;\n\n // if overlay will open to right or at center\n // we're checking if it exceeds from the right edge of the window\n if (\n horizontalDirection !== OverlayHorizontalDirection.TO_LEFT &&\n horizontalDirection !== OverlayHorizontalDirection.END_TO_LEFT &&\n comparingWidth + OVERLAY_MARGIN + calculatedLeft > winWidth\n ) {\n if (horizontalDirection === OverlayHorizontalDirection.CENTER) {\n // Exceed right edge of the window, shift left by the width of exceeding part * 0.5\n // to correctly handle the 50% horizontal transform\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n (calculatedLeft - (containerRectangle.width + (OVERLAY_MARGIN * 2) + calculatedLeft - winWidth) * 0.5) + 'px';\n } else {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft - (containerRectangle.width + OVERLAY_MARGIN + calculatedLeft - winWidth) + 'px';\n }\n }\n // else if the direction is selected as a one that goes to the left,\n // we need to check if it is exceeding from the left edge of the window\n else if (calculatedLeft + comparingWidth - containerRectangle.width < OVERLAY_MARGIN) {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft + (OVERLAY_MARGIN - calculatedLeft + (comparingWidth - containerRectangle.width)) + 'px';\n }\n\n // if overlay will open to bottom or at center\n // we're checking if it exceeds from the bottom edge of the window\n if (\n verticalDirection !== OverlayVerticalDirection.TO_TOP &&\n verticalDirection !== OverlayVerticalDirection.END_TO_TOP &&\n comparingHeight + OVERLAY_MARGIN + calculatedTop > winHeight\n ) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop - (comparingHeight + OVERLAY_MARGIN + calculatedTop - winHeight) + 'px';\n }\n // else if the direction is selected as a one that goes to the top,\n // we need to check if it is exceeding from the top edge of the window\n else if (calculatedTop + comparingHeight - containerRectangle.height < OVERLAY_MARGIN) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop + (OVERLAY_MARGIN - calculatedTop + (comparingHeight - containerRectangle.height)) + 'px';\n }\n\n // we need to delay the class toggle\n // to avoid the skipping of the transition comes from css\n // for a known js-css relation problem\n setTimeout(() => {\n this.render.addClass('mynah-overlay-open');\n\n if (closeOnOutsideClick) {\n window.addEventListener('blur', this.windowBlurHandler.bind(this));\n window.addEventListener('resize', this.windowBlurHandler.bind(this));\n }\n }, 10);\n }\n\n close = (): void => {\n this.render.removeClass('mynah-overlay-open');\n // In this timeout, we're waiting the close animation to be ended\n setTimeout(() => {\n this.render.remove();\n }, 250);\n if (this.onClose !== undefined) {\n this.onClose();\n }\n };\n\n private readonly windowBlurHandler = (): void => {\n this.close();\n window.removeEventListener('blur', this.windowBlurHandler.bind(this));\n window.removeEventListener('resize', this.windowBlurHandler.bind(this));\n };\n\n private readonly getCalculatedLeft = (\n horizontalDirection: OverlayHorizontalDirection,\n referenceElement?: HTMLElement | ExtendedHTMLElement,\n referencePoint?: { top?: number; left: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { left: referencePoint.left, width: 0 }\n : { left: 0, width: 0 };\n\n switch (horizontalDirection.toString()) {\n case OverlayHorizontalDirection.TO_RIGHT:\n return referenceRectangle.left + referenceRectangle.width + OVERLAY_MARGIN;\n case OverlayHorizontalDirection.START_TO_RIGHT:\n return referenceRectangle.left;\n case OverlayHorizontalDirection.TO_LEFT:\n return referenceRectangle.left - OVERLAY_MARGIN;\n case OverlayHorizontalDirection.END_TO_LEFT:\n return referenceRectangle.left + referenceRectangle.width;\n case OverlayHorizontalDirection.CENTER:\n return referenceRectangle.left + referenceRectangle.width / 2;\n default:\n return 0;\n }\n };\n\n private readonly getCalculatedWidth = (\n referenceElement?: HTMLElement | ExtendedHTMLElement\n ): number => {\n return referenceElement !== undefined\n ? referenceElement.getBoundingClientRect().width\n : 0;\n };\n\n private readonly getCalculatedTop = (\n verticalDirection: OverlayVerticalDirection,\n referenceElement?: HTMLElement | ExtendedHTMLElement,\n referencePoint?: { top: number; left?: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { top: referencePoint.top, height: 0 }\n : { top: 0, height: 0 };\n\n switch (verticalDirection.toString()) {\n case OverlayVerticalDirection.TO_BOTTOM:\n return referenceRectangle.top + referenceRectangle.height + OVERLAY_MARGIN;\n case OverlayVerticalDirection.START_TO_BOTTOM:\n return referenceRectangle.top;\n case OverlayVerticalDirection.TO_TOP:\n return referenceRectangle.top - OVERLAY_MARGIN;\n case OverlayVerticalDirection.END_TO_TOP:\n return referenceRectangle.top + referenceRectangle.height;\n case OverlayVerticalDirection.CENTER:\n return referenceRectangle.top + referenceRectangle.height / 2;\n default:\n return referenceRectangle.top;\n }\n };\n\n public updateContent = (children: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>): void => {\n this.innerContainer.update({ children });\n };\n\n public toggleHidden = (hidden: boolean): void => {\n this.render.hidden = hidden;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n ReferenceTrackerInformation,\n SourceLink,\n} from '../../static';\nimport { CardBody } from '../card/card-body';\n\nexport interface SourceLinkBodyProps {\n suggestion: Partial<SourceLink>;\n children?: Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject>;\n highlightRangeWithTooltip?: ReferenceTrackerInformation[];\n}\nexport class SourceLinkBody {\n render: ExtendedHTMLElement;\n props: SourceLinkBodyProps;\n constructor (props: SourceLinkBodyProps) {\n this.props = props;\n this.render = new CardBody({\n highlightRangeWithTooltip: props.highlightRangeWithTooltip,\n body: this.props.suggestion.body ?? '',\n children: this.props.children,\n }).render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getTimeDiff } from '../../helper/date-time';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { getOrigin } from '../../helper/url';\nimport { SourceLink, SourceLinkMetaData } from '../../static';\nimport { Icon, MynahIcons } from '../icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { SourceLinkCard } from './source-link';\n\nconst PREVIEW_DELAY = 500;\nexport interface SourceLinkHeaderProps {\n sourceLink: SourceLink;\n showCardOnHover?: boolean;\n onClick?: (e?: MouseEvent) => void;\n}\nexport class SourceLinkHeader {\n private sourceLinkPreview: Overlay | null;\n private sourceLinkPreviewTimeout: ReturnType<typeof setTimeout>;\n render: ExtendedHTMLElement;\n constructor (props: SourceLinkHeaderProps) {\n const splitUrl = props.sourceLink.url\n .replace(/^(http|https):\\/\\//, '')\n .split('/');\n if (splitUrl[splitUrl.length - 1].trim() === '') {\n splitUrl.pop();\n }\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-source-link-header' ],\n ...(props.showCardOnHover === true\n ? {\n events: {\n mouseenter: (e) => {\n this.showLinkPreview(e, props.sourceLink);\n },\n mouseleave: this.hideLinkPreview,\n }\n }\n : {}),\n attributes: {\n origin: getOrigin(props.sourceLink.url)\n },\n children: [\n {\n type: 'span',\n classNames: [ 'mynah-source-thumbnail' ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-source-link-title-wrapper' ],\n children: [\n {\n type: 'a',\n classNames: [ 'mynah-source-link-title' ],\n events: {\n ...(props.onClick !== undefined && {\n click: props.onClick,\n }),\n },\n attributes: { href: props.sourceLink.url, target: '_blank' },\n children: [ props.sourceLink.title, {\n type: 'div',\n classNames: [ 'mynah-source-link-expand-icon' ],\n children: [ new Icon({ icon: MynahIcons.EXTERNAL }).render ],\n } ],\n },\n {\n type: 'a',\n classNames: [ 'mynah-source-link-url' ],\n events: {\n ...(props.onClick !== undefined && {\n click: props.onClick,\n }),\n },\n attributes: { href: props.sourceLink.url, target: '_blank' },\n innerHTML: splitUrl.map(urlPart => `<span>${urlPart}</span>`).join(''),\n },\n ...((props.sourceLink.metadata != null) ? [ this.getSourceMetaBlock(props.sourceLink.metadata) ] : []),\n ],\n },\n ],\n });\n }\n\n private readonly getSourceMetaBlock = (metadataUnion?: Record<string, SourceLinkMetaData>): DomBuilderObject => {\n const metaItems: any[] = [];\n if (metadataUnion !== null && metadataUnion !== undefined) {\n Object.keys(metadataUnion).forEach(metadataKey => {\n const metadata = metadataUnion[metadataKey];\n if (metadata.isAccepted === true) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item', 'approved-answer' ],\n children: [\n new Icon({ icon: MynahIcons.OK }).render,\n ]\n });\n }\n\n if (metadata.lastActivityDate !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CALENDAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ getTimeDiff((new Date()).getTime() - metadata.lastActivityDate, 2) ]\n }\n ]\n });\n }\n\n if (metadata.answerCount !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CHAT }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ metadata.answerCount.toString() ]\n }\n ]\n });\n }\n\n if (metadata.stars !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.STAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.stars.toString()} contributors` ]\n }\n ]\n });\n }\n\n if (metadata.forks !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.DOWN_OPEN }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.forks.toString()} forks` ]\n }\n ]\n });\n }\n\n if (metadata.score !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.THUMBS_UP }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.score.toString()}` ]\n }\n ]\n });\n }\n });\n }\n\n return {\n type: 'span',\n classNames: [ 'mynah-title-meta-block' ],\n children: metaItems\n };\n };\n\n private readonly showLinkPreview = (e: MouseEvent, sourceLink: SourceLink): void => {\n if (sourceLink.body !== undefined) {\n clearTimeout(this.sourceLinkPreviewTimeout);\n this.sourceLinkPreviewTimeout = setTimeout(() => {\n const elm: HTMLElement = e.target as HTMLElement;\n this.sourceLinkPreview = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-wrapper' ],\n children: [\n new SourceLinkCard({ sourceLink }).render\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n }\n };\n\n private readonly hideLinkPreview = (): void => {\n clearTimeout(this.sourceLinkPreviewTimeout);\n if (this.sourceLinkPreview !== null) {\n this.sourceLinkPreview?.close();\n this.sourceLinkPreview = null;\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ExtendedHTMLElement } from '../../helper/dom';\nimport { SourceLink } from '../../static';\nimport { Card } from '../card/card';\nimport { SourceLinkBody } from './source-link-body';\nimport { SourceLinkHeader } from './source-link-header';\n\nexport interface SourceLinkCardProps {sourceLink: SourceLink; compact?: 'flat' | true}\nexport class SourceLinkCard {\n private readonly sourceLink: SourceLink;\n render: ExtendedHTMLElement;\n constructor (props: SourceLinkCardProps) {\n this.sourceLink = props.sourceLink;\n this.render = new Card({\n children: [\n new SourceLinkHeader({\n sourceLink: this.sourceLink\n }).render,\n ...(this.sourceLink.body !== undefined ? [ new SourceLinkBody({ suggestion: this.sourceLink }).render ] : []),\n ],\n }).render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { highlightElement } from 'prismjs';\n\nimport 'prismjs/components/prism-markup.min';\nimport 'prismjs/components/prism-xml-doc.min';\nimport 'prismjs/components/prism-css.min';\nimport 'prismjs/components/prism-clike.min'; // default\nimport 'prismjs/components/prism-javascript.min';\nimport 'prismjs/components/prism-typescript.min';\nimport 'prismjs/components/prism-jsx.min';\nimport 'prismjs/components/prism-tsx.min';\nimport 'prismjs/components/prism-lua.min';\nimport 'prismjs/components/prism-java.min';\nimport 'prismjs/components/prism-json.min';\nimport 'prismjs/components/prism-markdown.min';\nimport 'prismjs/components/prism-mongodb.min';\nimport 'prismjs/components/prism-c.min';\nimport 'prismjs/components/prism-bash.min';\nimport 'prismjs/components/prism-csharp.min';\nimport 'prismjs/components/prism-objectivec.min';\nimport 'prismjs/components/prism-python.min';\nimport 'prismjs/components/prism-regex.min';\nimport 'prismjs/components/prism-scala.min';\nimport 'prismjs/components/prism-scss.min';\nimport 'prismjs/components/prism-less.min';\n\nimport 'prismjs/plugins/line-numbers/prism-line-numbers.js';\nimport 'prismjs/plugins/keep-markup/prism-keep-markup.js';\nimport {\n CodeSelectionType,\n OnCopiedToClipboardFunction,\n OnInsertToCursorPositionFunction,\n} from '../static';\nimport { Button } from './button';\nimport { Notification } from './notification';\nimport { Icon, MynahIcons } from './icon';\nimport { cancelEvent } from '../helper/events';\nimport { Config } from '../helper/config';\nimport { highlightersWithTooltip } from './card/card-body';\nimport escapeHTML from 'escape-html';\nimport unescapeHTML from 'unescape-html';\n\nconst IMPORTED_LANGS = [\n 'markup',\n 'xml',\n 'css',\n 'clike',\n 'javascript',\n 'typescript',\n 'jsx',\n 'tsx',\n 'lua',\n 'java',\n 'json',\n 'markdown',\n 'mongodb',\n 'c',\n 'bash',\n 'csharp',\n 'objectivec',\n 'python',\n 'regex',\n 'scala',\n 'scss',\n 'less',\n];\nconst DEFAULT_LANG = 'clike';\n\n// they'll be used to replaced within the code, so making them unique is a must\nexport const highlighters = {\n start: {\n markup: '<span class=\"amzn-mynah-search-result-highlight\">',\n textReplacement: '__mynahhighlighterstart__',\n },\n end: {\n markup: '</span>',\n textReplacement: '__mynahhighlighterend__',\n },\n};\nexport const ellipsis = {\n start: {\n markup: '<span class=\"amzn-mynah-search-result-ellipsis\">',\n textReplacement: '__mynahcodeellipsisstart__',\n },\n end: {\n markup: '</span>',\n textReplacement: '__mynahcodeellipsisend__',\n },\n};\n\nexport interface SyntaxHighlighterProps {\n codeStringWithMarkup: string;\n language?: string;\n keepHighlights?: boolean;\n showLineNumbers?: boolean;\n block?: boolean;\n startingLineNumber?: number;\n showCopyOptions?: boolean;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n}\n\nexport class SyntaxHighlighter {\n private readonly onCopiedToClipboard?: OnCopiedToClipboardFunction;\n private readonly onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n render: ExtendedHTMLElement;\n\n constructor (props: SyntaxHighlighterProps) {\n this.onCopiedToClipboard = props.onCopiedToClipboard;\n this.onInsertToCursorPosition = props.onInsertToCursorPosition;\n\n let codeMarkup = unescapeHTML(props.codeStringWithMarkup);\n // Replacing the incoming markups with keyword matching static texts\n if (props.keepHighlights === true) {\n codeMarkup = codeMarkup\n .replace(new RegExp(highlighters.start.markup, 'g'), highlighters.start.textReplacement)\n .replace(new RegExp(highlighters.end.markup, 'g'), highlighters.end.textReplacement)\n .replace(new RegExp(ellipsis.start.markup, 'g'), ellipsis.start.textReplacement)\n .replace(new RegExp(ellipsis.end.markup, 'g'), ellipsis.end.textReplacement);\n }\n\n let escapedCodeBlock = escapeHTML(codeMarkup);\n\n // Convert reference tracker escaped markups back to original incoming from the parent\n escapedCodeBlock = escapedCodeBlock\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.start.markupStart), 'g'), highlightersWithTooltip.start.markupStart)\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.start.markupEnd), 'g'), highlightersWithTooltip.start.markupEnd)\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.end.markup), 'g'), highlightersWithTooltip.end.markup);\n\n const preElement = DomBuilder.getInstance().build({\n type: 'pre',\n classNames: [ 'keep-markup',\n `language-${props.language !== undefined && IMPORTED_LANGS.includes(props.language) ? props.language : DEFAULT_LANG}`,\n ...(props.showLineNumbers === true ? [ 'line-numbers' ] : []),\n ],\n children: [\n {\n type: 'code',\n innerHTML: escapedCodeBlock,\n }\n ],\n events: {\n copy: (e) => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCodeContextMenu();\n if (selectedCode.code.length > 0) { this.copyToClipboard(selectedCode.code, selectedCode.type); }\n }\n }\n });\n highlightElement(preElement);\n\n // replacing back the keyword matchings for incoming highlights to markup for highlighting code\n if (props.keepHighlights === true) {\n preElement.innerHTML = preElement.innerHTML\n .replace(new RegExp(highlighters.start.textReplacement, 'g'), highlighters.start.markup)\n .replace(new RegExp(highlighters.end.textReplacement, 'g'), highlighters.end.markup)\n .replace(new RegExp(ellipsis.start.textReplacement, 'g'), ellipsis.start.markup)\n .replace(new RegExp(ellipsis.end.textReplacement, 'g'), ellipsis.end.markup);\n }\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter',\n ...(props.block !== true ? [ 'mynah-inline-code' ] : []),\n ],\n children: [\n ...(props.showCopyOptions === true\n ? [\n {\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter-copy-buttons' ],\n children: [\n ...(props.language !== undefined\n ? [ {\n type: 'span',\n classNames: [ 'mynah-syntax-highlighter-language' ],\n children: [ props.language ]\n } ]\n : []),\n new Button({\n icon: new Icon({ icon: MynahIcons.CURSOR_INSERT }).render,\n label: Config.getInstance().config.texts.insertAtCursorLabel,\n attributes: { title: Config.getInstance().config.texts.insertAtCursorLabel },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCode();\n if (this.onInsertToCursorPosition !== undefined) {\n this.onInsertToCursorPosition(\n selectedCode.type,\n selectedCode.code,\n );\n }\n },\n additionalEvents: { mousedown: cancelEvent },\n }).render,\n new Button({\n icon: new Icon({ icon: MynahIcons.COPY }).render,\n label: Config.getInstance().config.texts.copy,\n attributes: { title: Config.getInstance().config.texts.copy },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCode();\n this.copyToClipboard(selectedCode.code, selectedCode.type);\n },\n additionalEvents: { mousedown: cancelEvent },\n }).render,\n ],\n },\n ]\n : []),\n preElement,\n ...(props.showLineNumbers === true\n ? [\n {\n type: 'span',\n classNames: [ 'line-numbers-rows' ],\n children: (preElement.innerHTML).split(/\\n/).slice(0, -1).map((n: string, i: number) => ({\n type: 'span',\n innerHTML: String(i + (props.startingLineNumber ?? 1)),\n })),\n }\n ]\n : [])\n ],\n });\n }\n\n private readonly getSelectedCodeContextMenu = (): {\n code: string;\n type: CodeSelectionType;\n } => ({\n code: document.getSelection()?.toString() ?? '',\n type: 'selection'\n });\n\n private readonly getSelectedCode = (): {\n code: string;\n type: CodeSelectionType;\n } => ({\n code: this.render.querySelector('pre')?.innerText ?? '',\n type: 'block'\n });\n\n private readonly copyToClipboard = (\n textToSendClipboard: string,\n type?: CodeSelectionType,\n notificationText?: string,\n ): void => {\n if (!document.hasFocus()) {\n window.focus();\n }\n navigator.clipboard\n .writeText(textToSendClipboard)\n .then(() => {\n if (this.onCopiedToClipboard !== undefined) {\n this.onCopiedToClipboard(\n type,\n textToSendClipboard,\n // this.highlightRangeWithTooltip\n );\n }\n if (notificationText !== undefined) {\n // eslint-disable no-new\n new Notification({\n content: notificationText,\n title: Config.getInstance().config.texts.copyToClipboard,\n duration: 2000,\n }).notify();\n }\n })\n .catch(e => {\n //\n });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// eslint-disable @typescript-eslint/restrict-template-expressions\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { Button } from './button';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from './overlay';\n\nexport interface ToggleOption {\n label?: ExtendedHTMLElement | string | HTMLElement;\n icon?: MynahIcons;\n disabled?: boolean;\n selected?: boolean;\n value: string;\n disabledTooltip?: string | ExtendedHTMLElement;\n}\ninterface ToggleOptionRenderProps extends ToggleOption {\n name: string;\n onChange?: (selectedValue: string) => void;\n onRemove?: (selectedValue: string) => void;\n}\nclass ToggleOptionItem {\n render: ExtendedHTMLElement;\n private readonly props: ToggleOptionRenderProps;\n private disabledTooltip?: Overlay;\n private disabledTooltipTimer: ReturnType<typeof setTimeout>;\n constructor (props: ToggleOptionRenderProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n attributes: {\n key: `${this.props.name}-${this.props.value}`,\n title: this.props.label as string ?? '',\n },\n events: {\n ...(this.props.disabled === true && this.props.disabledTooltip !== undefined\n ? {\n mouseenter: () => {\n this.disabledTooltipTimer = setTimeout(() => {\n this.disabledTooltip = new Overlay({\n children: [ {\n type: 'span',\n classNames: [ 'mynah-toggle-disabled-tooltip-container' ],\n children: [ this.props.disabledTooltip ?? '' ]\n } ],\n closeOnOutsideClick: false,\n dimOutside: false,\n referenceElement: this.render,\n horizontalDirection: OverlayHorizontalDirection.CENTER,\n verticalDirection: OverlayVerticalDirection.TO_TOP\n });\n }, 500);\n },\n mouseleave: () => {\n clearTimeout(this.disabledTooltipTimer);\n if (this.disabledTooltip !== undefined) {\n this.disabledTooltip.close();\n setTimeout(() => {\n this.disabledTooltip = undefined;\n }, 50);\n }\n }\n }\n : {})\n },\n children: [\n {\n type: 'input',\n classNames: [ 'mynah-toggle-option' ],\n attributes: {\n type: 'radio',\n id: `${this.props.name}-${this.props.value}`,\n value: this.props.value,\n name: this.props.name,\n ...(this.props.selected === true ? { checked: 'checked' } : {}),\n ...(this.props.disabled === true ? { disabled: 'disabled' } : {}),\n },\n events: {\n change: () => {\n if (this.props.onChange != null) {\n this.props.onChange(this.props.value);\n }\n }\n },\n },\n {\n type: 'label',\n classNames: [ 'mynah-toggle-option-label' ],\n attributes: {\n for: `${this.props.name}-${this.props.value}`,\n },\n events: {\n dblclick: (e) => {\n cancelEvent(e);\n },\n auxclick: () => {\n if (this.props.onRemove !== undefined) {\n this.props.onRemove(this.props.value);\n }\n }\n },\n children: [\n this.props.icon !== undefined ? new Icon({ icon: props.icon as MynahIcons }).render : '',\n {\n type: 'span',\n classNames: [ 'mynah-toggle-option-label-text' ],\n children: [ this.props.label ?? '' ]\n },\n this.props.onRemove !== undefined\n ? new Button({\n classNames: [ 'mynah-toggle-close-button' ],\n onClick: () => {\n if (this.props.onRemove !== undefined) {\n this.props.onRemove(this.props.value);\n }\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render,\n primary: false\n }).render\n : ''\n ],\n },\n ],\n });\n }\n}\nexport interface ToggleProps {\n options: ToggleOption[];\n direction?: 'horizontal' | 'vertical';\n value?: string | null;\n name: string;\n disabled?: boolean;\n onChange?: (selectedValue: string) => void;\n onRemove?: (selectedValue: string) => void;\n}\nexport class Toggle {\n render: ExtendedHTMLElement;\n private readonly props: ToggleProps;\n private currentValue?: string | null;\n\n constructor (props: ToggleProps) {\n this.props = { direction: 'horizontal', ...props };\n this.currentValue = this.props.value;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-toggle-container', 'mynah-toggle-type-tabs', `mynah-toggle-direction-${this.props.direction as string}` ],\n attributes: { disabled: props.disabled === true ? 'disabled' : '' },\n children: this.getChildren(props.value),\n events: {\n wheel: this.transformScroll\n }\n });\n }\n\n private readonly transformScroll = (e: WheelEvent): void => {\n if (e.deltaY === 0) {\n return;\n }\n this.render.scrollLeft += e.deltaY;\n cancelEvent(e);\n };\n\n private readonly getChildren = (value?: string | null): any[] => [\n ...this.props.options.map(option => {\n return new ToggleOptionItem({\n ...option,\n selected: value === option.value,\n name: this.props.name,\n onChange: this.updateSelectionRender,\n onRemove: this.props.onRemove\n }).render;\n })\n ];\n\n private readonly updateSelectionRender = (value: string): void => {\n if (this.props.onChange !== undefined) {\n this.props.onChange(value);\n }\n };\n\n setValue = (value: string): void => {\n if (value !== this.getValue()) {\n this.currentValue = value;\n const elmToCheck = this.render.querySelector(`#${this.props.name}-${value}`);\n if (elmToCheck !== undefined) {\n (elmToCheck as HTMLInputElement).click();\n (elmToCheck as HTMLInputElement).checked = true;\n ((elmToCheck as HTMLInputElement).nextSibling as HTMLLabelElement).classList.remove('indication');\n }\n }\n };\n\n addOption = (option: ToggleOption): void => {\n this.props.options.push(option);\n this.render.appendChild(new ToggleOptionItem({\n ...option,\n name: this.props.name,\n onChange: this.updateSelectionRender,\n onRemove: this.props.onRemove\n }).render);\n if (option.selected === true) {\n this.setValue(option.value);\n this.snapToOption(option.value);\n }\n };\n\n removeOption = (value: string): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck = this.render.querySelector(`span[key=\"${this.props.name}-${value}\"]`);\n if (elmToCheck !== undefined) {\n elmToCheck?.remove();\n }\n };\n\n updateOptionTitle = (value: string, title: string): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck = this.render.querySelector(`span[key=\"${this.props.name}-${value}\"] .mynah-toggle-option-label-text`);\n if (elmToCheck !== undefined) {\n (elmToCheck as HTMLSpanElement).innerHTML = title;\n }\n };\n\n updateOptionIndicator = (value: string, indication: boolean): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck: HTMLLabelElement | null = this.render.querySelector(`label[for=\"${this.props.name}-${value}\"]`);\n if (elmToCheck !== null) {\n if (indication && value !== this.getValue()) {\n elmToCheck.classList.add('indication');\n } else {\n elmToCheck.classList.remove('indication');\n }\n }\n };\n\n snapToOption = (value: string): void => {\n const elmToCheck = this.render.querySelector(`#${this.props.name}-${value}`);\n if (elmToCheck !== undefined) {\n this.render.scrollLeft = (elmToCheck?.parentNode as HTMLElement).offsetLeft;\n }\n };\n\n getValue = (): string | undefined | null => this.currentValue;\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ConfigModel } from '../static';\n\nconst configDefaults: ConfigModel = {\n maxTabs: 1000,\n feedbackOptions: [\n {\n value: 'inaccurate-response',\n label: 'Inaccurate response',\n },\n {\n value: 'harmful-content',\n label: 'Harmful content'\n },\n {\n value: 'overlap',\n label: 'Overlaps with existing content'\n },\n {\n value: 'incorrect-syntax',\n label: 'Incorrect syntax'\n },\n {\n value: 'buggy-code',\n label: 'Buggy code'\n },\n {\n value: 'low-quality',\n label: 'Low quality'\n },\n {\n value: 'other',\n label: 'Other'\n }\n ],\n texts: {\n mainTitle: 'AWS Q',\n copy: 'Copy',\n insertAtCursorLabel: 'Insert at cursor',\n feedbackFormTitle: 'Report an issue',\n feedbackFormOptionsLabel: 'What type of issue would you like to report?',\n feedbackFormCommentLabel: 'Description of issue (optional):',\n feedbackThanks: 'Thanks!',\n feedbackReportButtonLabel: 'Report an issue',\n codeSuggestions: 'Code Suggestions',\n files: 'file(s)',\n clickFileToViewDiff: 'Click on a file to view diff.',\n showMore: 'Show more',\n save: 'Save',\n cancel: 'Cancel',\n submit: 'Submit',\n stopGenerating: 'Stop generating',\n copyToClipboard: 'Copied to clipboard',\n noMoreTabsTooltip: 'You\\'ve reached maximum number of tabs you can simultaneously use.',\n codeSuggestionWithReferenceTitle: 'Some suggestions contain code with references.',\n spinnerText: 'Amazon Q is generating your answer...'\n }\n};\nexport class Config {\n private static instance: Config;\n public config: ConfigModel;\n private constructor (config?: Partial<ConfigModel>) {\n this.config = { ...configDefaults, ...config };\n }\n\n public static getInstance (config?: Partial<ConfigModel>): Config {\n if (Config.instance === undefined) {\n Config.instance = new Config(config);\n }\n\n return Config.instance;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const getTimeDiff = (differenceInMs: number, show?: {\n years?: boolean;\n months?: boolean;\n weeks?: boolean;\n days?: boolean;\n hours?: boolean;\n minutes?: boolean;\n} | 1 | 2 | 3 | 4 | 5 | 6, separator?: string): string => {\n // get total seconds for the difference\n let delta = Math.abs(differenceInMs) / 1000;\n\n // calculate (and subtract) whole years\n const years = Math.floor(delta / (86_400 * 30 * 12));\n delta -= years * (86_400 * 30 * 12);\n\n // calculate (and subtract) whole months\n const months = Math.floor(delta / (86_400 * 30));\n delta -= months * (86_400 * 30);\n\n // calculate (and subtract) whole weeks\n const weeks = Math.floor(delta / (86_400 * 7));\n delta -= weeks * (86_400 * 7);\n\n // calculate (and subtract) whole days\n const days = Math.floor(delta / 86_400);\n delta -= days * 86_400;\n\n // calculate (and subtract) whole hours\n const hours = Math.floor(delta / 3_600) % 24;\n delta -= hours * 3_600;\n\n // calculate (and subtract) whole minutes\n const minutes = Math.floor(delta / 60) % 60;\n delta -= minutes * 60;\n\n const combined = [];\n if (years !== 0 && (show === undefined || typeof show !== 'object' || show.years !== false)) {\n combined.push(`${years}yr`);\n }\n if (months !== 0 && (show === undefined || typeof show !== 'object' || show.months !== false)) {\n combined.push(`${months}mo`);\n }\n if (weeks !== 0 && (show === undefined || typeof show !== 'object' || show.weeks !== false)) {\n combined.push(`${weeks}we`);\n }\n if (days !== 0 && (show === undefined || typeof show !== 'object' || show.days !== false)) {\n combined.push(`${days}da`);\n }\n if (hours !== 0 && (show === undefined || typeof show !== 'object' || show.hours !== false)) {\n combined.push(`${hours}hr`);\n }\n if (minutes !== 0 && (show === undefined || typeof show !== 'object' || show.minutes !== false)) {\n combined.push(`${minutes}min`);\n }\n\n if (years + months + weeks + days + hours + minutes === 0) {\n return '1min';\n }\n\n if (show !== undefined && typeof show === 'number') {\n combined.splice(show, combined.length);\n }\n return combined.join(separator ?? ' ');\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MynahPortalNames } from '../static';\nimport { cancelEvent } from './events';\n\n/* eslint-disable @typescript-eslint/method-signature-style */\n/* eslint-disable @typescript-eslint/consistent-type-assertions */\n/* eslint-disable @typescript-eslint/prefer-optional-chain */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\nexport const DS: typeof document.querySelectorAll = document.querySelectorAll.bind(document);\n\nexport interface DomBuilderObject {\n type: string;\n attributes?: Record<string, string> | undefined;\n classNames?: string[] | undefined;\n events?: Record<string, (event?: any) => any> | undefined;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement> | undefined;\n innerHTML?: string | undefined;\n persistent?: boolean | undefined;\n}\n\nexport interface DomBuilderObjectFilled {\n attributes?: Record<string, string | undefined>;\n classNames?: string[];\n events?: Record<string, (event?: any) => any>;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>;\n innerHTML?: string | undefined;\n persistent?: boolean;\n}\n\nconst EmptyDomBuilderObject: DomBuilderObject = {\n type: 'div',\n attributes: {},\n classNames: [],\n events: {},\n children: [],\n innerHTML: undefined,\n persistent: false,\n};\n\nexport interface ExtendedHTMLElement extends HTMLInputElement {\n addClass(className: string): ExtendedHTMLElement;\n removeClass(className: string): ExtendedHTMLElement;\n toggleClass(className: string): ExtendedHTMLElement;\n hasClass(className: string): boolean;\n insertChild(\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child:\n | string\n | DomBuilderObject\n | HTMLElement\n | ExtendedHTMLElement\n | Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement;\n clear(removePersistent?: boolean): ExtendedHTMLElement;\n builderObject: DomBuilderObject;\n update(builderObject: DomBuilderObjectFilled): ExtendedHTMLElement;\n}\n\nexport class DomBuilder {\n private static instance: DomBuilder;\n root: ExtendedHTMLElement;\n private portals: Record<string, ExtendedHTMLElement> = {};\n\n private constructor (rootSelector: string) {\n this.root = DS(rootSelector)[0] as ExtendedHTMLElement;\n this.extendDomFunctionality(this.root);\n }\n\n public static getInstance (rootSelector?: string): DomBuilder {\n if (!DomBuilder.instance) {\n DomBuilder.instance = new DomBuilder(rootSelector !== undefined ? rootSelector : 'body');\n }\n\n return DomBuilder.instance;\n }\n\n addClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (className !== '') {\n this.classList.add(className);\n // eslint-disable-next-line @typescript-eslint/prefer-includes\n if (this.builderObject.classNames?.indexOf(className) === -1) {\n this.builderObject.classNames = [ ...this.builderObject.classNames, className ];\n }\n }\n return this;\n };\n\n removeClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n this.classList.remove(className);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (this.builderObject.classNames !== undefined && this.builderObject.classNames.includes(className)) {\n this.builderObject.classNames.splice(this.builderObject.classNames.indexOf(className), 1);\n }\n return this;\n };\n\n toggleClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (this.classList.contains(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n return this;\n };\n\n hasClass = function (this: ExtendedHTMLElement, className: string): boolean {\n return this.classList.contains(className);\n };\n\n insertChild = function (\n this: ExtendedHTMLElement,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child: string | HTMLElement | ExtendedHTMLElement | Array<string | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (child) {\n if (child instanceof Array) {\n child.forEach(childItem => {\n if (childItem instanceof Element) {\n this.insertAdjacentElement(position, childItem);\n } else if (typeof childItem === 'string') {\n this.insertAdjacentText(position, childItem);\n }\n });\n } else {\n if (child instanceof Element) {\n this.insertAdjacentElement(position, child);\n } else if (typeof child === 'string') {\n this.insertAdjacentText(position, child);\n }\n }\n }\n return this;\n };\n\n clearChildren = function (this: ExtendedHTMLElement, removePersistent: boolean): ExtendedHTMLElement {\n Array.from(this.childNodes).forEach((child: ExtendedHTMLElement | ChildNode) => {\n if (\n removePersistent ||\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n !(child as ExtendedHTMLElement).builderObject ||\n (child as ExtendedHTMLElement).builderObject.persistent !== true\n ) {\n child.remove();\n }\n });\n return this;\n };\n\n extendDomFunctionality = function (this: DomBuilder, domElement: HTMLElement): ExtendedHTMLElement {\n const extendedElement: ExtendedHTMLElement = domElement as ExtendedHTMLElement;\n extendedElement.addClass = this.addClass.bind(extendedElement);\n extendedElement.removeClass = this.removeClass.bind(extendedElement);\n extendedElement.toggleClass = this.toggleClass.bind(extendedElement);\n extendedElement.hasClass = this.hasClass.bind(extendedElement);\n extendedElement.insertChild = this.insertChild.bind(extendedElement);\n extendedElement.clear = this.clearChildren.bind(extendedElement);\n return extendedElement;\n };\n\n build = (domBuilderObject: DomBuilderObject): ExtendedHTMLElement => {\n const readyToBuildObject: DomBuilderObject = { ...EmptyDomBuilderObject, ...domBuilderObject };\n const buildedDom = document.createElement(readyToBuildObject.type);\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n buildedDom.classList.add(...(readyToBuildObject.classNames?.filter(className => className !== '') || []));\n\n Object.keys(readyToBuildObject.events ?? {}).forEach((eventName: string) =>\n buildedDom.addEventListener(\n eventName,\n readyToBuildObject.events ? readyToBuildObject.events[eventName] : cancelEvent\n )\n );\n\n Object.keys(readyToBuildObject.attributes ?? {}).forEach(attributeName =>\n buildedDom.setAttribute(\n attributeName,\n readyToBuildObject.attributes !== undefined ? readyToBuildObject.attributes[attributeName] : ''\n )\n );\n\n if (typeof readyToBuildObject.innerHTML === 'string') {\n buildedDom.innerHTML = readyToBuildObject.innerHTML;\n } else if (readyToBuildObject.children !== undefined && readyToBuildObject.children?.length > 0) {\n this.insertChild.apply(buildedDom as ExtendedHTMLElement, [\n 'beforeend',\n [\n ...(readyToBuildObject.children).map(\n (child: string | ExtendedHTMLElement | HTMLElement | DomBuilderObject) => {\n if (typeof child === 'string' || child instanceof HTMLElement) {\n return child;\n }\n return this.build(child);\n }\n ),\n ],\n ]);\n };\n\n (buildedDom as ExtendedHTMLElement).builderObject = readyToBuildObject;\n (buildedDom as ExtendedHTMLElement).update = (builderObject: DomBuilderObjectFilled): ExtendedHTMLElement => {\n return this.update(buildedDom as ExtendedHTMLElement, builderObject);\n };\n this.extendDomFunctionality(buildedDom);\n return buildedDom as ExtendedHTMLElement;\n };\n\n update = function (\n domToUpdate: ExtendedHTMLElement,\n domBuilderObject: DomBuilderObjectFilled\n ): ExtendedHTMLElement {\n if (domToUpdate.builderObject) {\n if (domBuilderObject.classNames !== undefined) {\n domToUpdate.classList.remove(...(domToUpdate.builderObject.classNames as string[]));\n domToUpdate.classList.add(...domBuilderObject.classNames.filter(className => className !== ''));\n }\n\n Object.keys(domBuilderObject.events ?? {}).forEach(eventName => {\n if (domToUpdate.builderObject.events !== undefined && domToUpdate.builderObject.events[eventName]) {\n domToUpdate.removeEventListener(eventName, domToUpdate.builderObject.events[eventName]);\n }\n if (domBuilderObject.events !== undefined && domBuilderObject.events[eventName] !== undefined) {\n domToUpdate.addEventListener(eventName, domBuilderObject.events[eventName]);\n }\n });\n\n Object.keys(domBuilderObject.attributes ?? {}).forEach(attributeName => {\n if (\n domBuilderObject.attributes !== undefined &&\n domBuilderObject.attributes[attributeName] === undefined\n ) {\n domToUpdate.removeAttribute(attributeName);\n } else if (domBuilderObject.attributes !== undefined) {\n domToUpdate.setAttribute(attributeName, domBuilderObject.attributes[attributeName] as string);\n }\n });\n\n if (typeof domBuilderObject.innerHTML === 'string') {\n domToUpdate.innerHTML = domBuilderObject.innerHTML;\n } else if (domBuilderObject.children !== undefined && domBuilderObject.children.length > 0) {\n domToUpdate.clear();\n domToUpdate.insertChild('beforeend', domBuilderObject.children);\n }\n\n domToUpdate.builderObject = { ...EmptyDomBuilderObject, ...domBuilderObject } as DomBuilderObject;\n } else {\n console.warn('element was not created with dom builder');\n }\n return domToUpdate;\n };\n\n createPortal = (\n portalName: string,\n builderObject: DomBuilderObject,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend'\n ): ExtendedHTMLElement => {\n const portalDom = this.build(builderObject);\n this.root.insertChild(position || 'beforeend', portalDom);\n this.portals[portalName] = portalDom;\n return portalDom;\n };\n\n getPortal = (portalName: string): ExtendedHTMLElement => this.portals[portalName];\n removePortal = (portalName: string): void => this.portals[portalName]?.remove();\n removeAllPortals = (portalsWithName: MynahPortalNames): void => {\n Object.keys(this.portals).forEach(portalName => {\n if (portalName.match(portalsWithName) !== null) {\n this.portals[portalName].remove();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.portals[portalName];\n }\n });\n };\n}\n\nexport const htmlDecode = (input: string): string => {\n const e = document.createElement('textarea');\n e.innerHTML = input;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue ?? input;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahEventNames } from '../static';\nimport { generateUID } from './guid';\n\nexport const cancelEvent = (event: Event): boolean => {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n return false;\n};\n\nexport class MynahUIGlobalEvents {\n private static instance: MynahUIGlobalEvents;\n private readonly listeners: Record<MynahEventNames, Record<string, (value?: any) => void>>;\n\n private constructor () {\n this.listeners = { ...this.listeners };\n }\n\n public static getInstance = (): MynahUIGlobalEvents => {\n if (MynahUIGlobalEvents.instance === undefined) {\n MynahUIGlobalEvents.instance = new MynahUIGlobalEvents();\n }\n\n return MynahUIGlobalEvents.instance;\n };\n\n /**\n * Subscribe to value changes of a specific item in data store\n * @param eventKey One of the keys in MynahUIDataModel\n * @param handler function will be called with optional data field\n * @returns listenerId which will be necessary to removeListener\n */\n public addListener = (eventKey: MynahEventNames, handler: (data?: any) => void): string => {\n const listenerId: string = generateUID();\n if (this.listeners[eventKey] === undefined) {\n this.listeners[eventKey] = {};\n }\n this.listeners[eventKey][listenerId] = handler;\n return listenerId;\n };\n\n /**\n * Unsubscribe from changes of a specific item in data store\n * @param eventKey One of the keys in MynahUIDataModel\n * @param listenerId listenerId which is returned from addListener function\n */\n public removeListener = (eventKey: MynahEventNames, listenerId: string): void => {\n if (this.listeners[eventKey]?.[listenerId] !== undefined) {\n delete this.listeners[eventKey][listenerId];\n }\n };\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public dispatch = (eventKey: MynahEventNames, data?: any): void => {\n if (this.listeners[eventKey] !== undefined) {\n Object.keys(this.listeners[eventKey]).forEach((listenerId: string) => {\n this.listeners[eventKey][listenerId](data);\n });\n }\n };\n}\n","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type TreeNode = FolderNode | FileNode;\nexport interface FileNode {\n name: string;\n type: 'file';\n filePath: string;\n deleted: boolean;\n}\nexport interface FolderNode {\n name: string;\n type: 'folder';\n children: Array<FolderNode | FileNode>;\n}\n\n/*\n * Converts a list of file Paths into a tree\n *\n * @input: The list of path in string format\n * Example Input:\n * modifiedFilePaths: [\n * \"project/src/hello.js\",\n * ]\n * deletedFilePaths: [\n * \"project/src/goodbye.js\",\n * ]\n *\n * Example output:\n * {\n * name: 'Changes',\n * type: 'folder',\n * children: [{\n * name: 'project',\n * type: 'folder',\n * children: [{\n * name: 'src',\n * type: 'folder',\n * children: [\n * { name: 'hello.js', type: 'file', filePath: 'project/src/hello.js', deleted: false },\n * { name: 'goodbye.js', type: 'file', filePath: 'project/src/goodbye.js', deleted: true },\n * ]\n * }]\n * }]\n * }\n */\nexport const fileListToTree = (modifiedFilePaths: string[], deletedFilePaths: string[] = []): TreeNode => {\n return [ ...splitFilePaths(modifiedFilePaths, false), ...splitFilePaths(deletedFilePaths, true) ].reduce<TreeNode>(\n (acc, { filePath, deleted }) => {\n // pointer to keep track of the current tree node\n let currentNode = acc;\n for (let i = 0; i < filePath.length; i++) {\n const fileOrFolder = filePath[i];\n // we can assume the leaf of each branch is a file. the LLM doesn't generate\n // empty folder changes\n if (i === filePath.length - 1) {\n // the parent of a file is always a folder\n (currentNode as FolderNode).children.push({\n type: 'file',\n name: fileOrFolder,\n filePath: filePath.join('/'),\n deleted,\n });\n break;\n } else {\n const oldItem = (currentNode as FolderNode).children.find(({ name }) => name === fileOrFolder);\n if (oldItem != null) {\n currentNode = oldItem;\n } else {\n // if the current fileOrFolder is not in the list, add it as a folder and move the pointer\n const newItem: FolderNode = { name: fileOrFolder, type: 'folder', children: [] };\n (currentNode as FolderNode).children.push(newItem);\n currentNode = newItem;\n }\n }\n }\n return acc;\n },\n // Start off with a root folder called Changes\n { name: 'Changes', type: 'folder', children: [] }\n );\n};\n\nconst splitFilePaths = (paths: string[], deleted: boolean): Array<{ filePath: string[]; deleted: boolean }> =>\n paths\n // split file path by folder. ignore dot folders\n .map(filePath => ({ filePath: filePath.split('/').filter(item => item !== undefined && item !== '.'), deleted }));\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const generateUID = (): string => {\n const firstPart: number = (Math.random() * 46656) | 0;\n const secondPart: number = (Math.random() * 46656) | 0;\n return `000${firstPart.toString(36)}`.slice(-3) + `000${secondPart.toString(36)}`.slice(-3);\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahEventNames, MynahUIDataModel } from '../static';\nimport { Config } from './config';\nimport { MynahUIGlobalEvents } from './events';\nimport { generateUID } from './guid';\n\nconst PrimitiveObjectTypes = [ 'string', 'number', 'boolean' ];\nexport class EmptyMynahUIDataModel {\n data: Required<MynahUIDataModel>;\n constructor (defaults?: MynahUIDataModel | null) {\n this.data = {\n tabTitle: Config.getInstance().config.texts.mainTitle,\n loadingChat: false,\n cancelButtonWhenLoading: true,\n showChatAvatars: false,\n quickActionCommands: [],\n promptInputPlaceholder: '',\n promptInputInfo: '',\n promptInputDisabledState: false,\n chatItems: [],\n selectedCodeSnippet: '',\n ...defaults\n };\n }\n}\nexport class MynahUIDataStore {\n private readonly subscriptions: Record<keyof MynahUIDataModel, Record<string, (newValue?: any, oldValue?: any) => void>>;\n private readonly tabId: string;\n private store: Required<MynahUIDataModel> = (new EmptyMynahUIDataModel()).data;\n private defaults: MynahUIDataModel | null = null;\n\n constructor (tabId: string, initialData?: MynahUIDataModel) {\n this.tabId = tabId;\n this.store = Object.assign(this.store, initialData);\n this.subscriptions = Object.create({});\n (Object.keys(this.store) as Array<keyof MynahUIDataModel>).forEach((storeKey) => {\n Object.assign(this.subscriptions, { [storeKey]: {} });\n });\n }\n\n /**\n * Sets the defaults to use while clearing the store\n * @param defaults partial set of MynahUIDataModel for defaults\n */\n public setDefaults = (defaults: MynahUIDataModel | null): void => {\n this.defaults = defaults;\n };\n\n /**\n * Get the defaults to use while generating an empty store data\n */\n public getDefaults = (): MynahUIDataModel | null => this.defaults;\n\n /**\n * Subscribe to value changes of a specific item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @param handler function will be called when value of the given key is updated in store with new and old values\n * @returns subscriptionId which needed to unsubscribe\n */\n public subscribe = (storeKey: keyof MynahUIDataModel, handler: (newValue: any, oldValue?: any) => void): string => {\n const subscriptionId: string = generateUID();\n this.subscriptions[storeKey][subscriptionId] = handler;\n return subscriptionId;\n };\n\n /**\n * Unsubscribe from changes of a specific item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @param subscriptionId subscriptionId which is returned from subscribe function\n */\n public unsubscribe = (storeKey: keyof MynahUIDataModel, subscriptionId: string): void => {\n if (this.subscriptions[storeKey]?.[subscriptionId] !== undefined) {\n delete this.subscriptions[storeKey][subscriptionId];\n }\n };\n\n /**\n * Returns current value of an item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @returns value of the given key in data store\n */\n public getValue = (storeKey: keyof MynahUIDataModel): any => structuredClone(this.store[storeKey]);\n\n /**\n * Returns current value of an item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @returns value of the given key in data store\n */\n public getDefaultValue = (storeKey: keyof MynahUIDataModel): any => (new EmptyMynahUIDataModel(this.defaults)).data[storeKey];\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public updateStore = (data: MynahUIDataModel, skipSubscribers?: boolean): void => {\n if (skipSubscribers !== true) {\n (Object.keys(data) as Array<keyof MynahUIDataModel>).forEach(storeKey => {\n Object.keys(this.subscriptions[storeKey]).forEach((subscriptionId: string) => {\n if (!PrimitiveObjectTypes.includes(typeof data[storeKey]) || data[storeKey] !== this.store[storeKey]) {\n this.subscriptions[storeKey][subscriptionId](data[storeKey], this.store[storeKey]);\n }\n });\n });\n }\n this.store = Object.assign(structuredClone(this.store), data);\n };\n\n /**\n * Clears store data and informs all the subscribers\n */\n public resetStore = (): void => {\n this.updateStore((new EmptyMynahUIDataModel(structuredClone(this.defaults))).data);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.RESET_STORE, { tabId: this.tabId });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahUIDataModel, MynahUITabStoreModel, MynahUITabStoreTab } from '../static';\nimport { Config } from './config';\nimport { generateUID } from './guid';\nimport { MynahUIDataStore } from './store';\n\ninterface TabStoreSubscription {\n 'add': Record<string, (tabId: string, tabData?: MynahUITabStoreTab) => void>;\n 'remove': Record<string, (tabId: string, newSelectedTab?: MynahUITabStoreTab) => void>;\n 'update': Record<string, (tabId: string, tabData?: MynahUITabStoreTab) => void>;\n 'selectedTabChange': Record<string, (tabId: string, previousSelectedTab?: MynahUITabStoreTab) => void>;\n}\nexport class EmptyMynahUITabsStoreModel {\n data: Required<MynahUITabStoreModel>;\n constructor () {\n const guid = generateUID();\n this.data = {\n [guid]: {\n isSelected: true,\n store: {},\n }\n };\n }\n}\nexport class MynahUITabsStore {\n private static instance: MynahUITabsStore;\n private readonly subscriptions: TabStoreSubscription = {\n add: {},\n remove: {},\n update: {},\n selectedTabChange: {}\n };\n\n private readonly tabDefaults: MynahUITabStoreTab = {};\n private readonly tabsStore: Required<MynahUITabStoreModel> = {};\n private readonly tabsDataStore: Record<string, MynahUIDataStore> = {};\n\n private constructor (initialData?: MynahUITabStoreModel, defaults?: MynahUITabStoreTab) {\n this.tabsStore = Object.assign(this.tabsStore, initialData);\n if (defaults != null) {\n this.tabDefaults = defaults;\n }\n if ((initialData != null) && Object.keys(initialData).length > 0) {\n Object.keys(initialData).forEach((tabId: string) => {\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId, initialData[tabId].store ?? {});\n });\n }\n }\n\n private readonly deselectAllTabs = (): void => {\n Object.keys(this.tabsStore).forEach(tabId => {\n this.tabsStore[tabId].isSelected = false;\n });\n };\n\n public readonly addTab = (tabData?: MynahUITabStoreTab): string | undefined => {\n if (Object.keys(this.tabsStore).length < Config.getInstance().config.maxTabs) {\n const tabId = generateUID();\n this.deselectAllTabs();\n this.tabsStore[tabId] = { ...this.tabDefaults, ...tabData, isSelected: true };\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId, this.tabsStore[tabId].store ?? {});\n this.informSubscribers('add', tabId, this.tabsStore[tabId]);\n this.informSubscribers('selectedTabChange', tabId, this.tabsStore[tabId]);\n return tabId;\n }\n };\n\n public readonly removeTab = (tabId: string): string => {\n const wasSelected = this.tabsStore[tabId].isSelected ?? false;\n let newSelectedTab: MynahUITabStoreTab | undefined;\n delete this.tabsStore[tabId];\n this.tabsDataStore[tabId].resetStore();\n delete this.tabsDataStore[tabId];\n if (wasSelected) {\n const tabIds = Object.keys(this.tabsStore);\n if (tabIds.length > 0) {\n this.deselectAllTabs();\n this.selectTab(tabIds[tabIds.length - 1]);\n newSelectedTab = this.tabsStore[this.getSelectedTabId()];\n }\n }\n this.informSubscribers('remove', tabId, newSelectedTab);\n return tabId;\n };\n\n public readonly selectTab = (tabId: string): void => {\n this.deselectAllTabs();\n this.tabsStore[tabId].isSelected = true;\n this.informSubscribers('selectedTabChange', tabId, this.tabsStore[tabId]);\n };\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public updateTab = (tabId: string, tabData?: Partial<MynahUITabStoreTab>, skipSubscribers?: boolean): void => {\n if (this.tabsStore[tabId] !== undefined) {\n if (tabData?.isSelected === true && this.getSelectedTabId() !== tabId) {\n this.deselectAllTabs();\n this.informSubscribers('selectedTabChange', tabId);\n }\n this.tabsStore[tabId] = { ...this.tabsStore[tabId], ...tabData };\n if (tabData?.store !== undefined) {\n if (this.tabsDataStore[tabId] === undefined) {\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId);\n }\n this.tabsDataStore[tabId].updateStore(tabData?.store);\n }\n if (skipSubscribers !== true) {\n this.informSubscribers('update', tabId, this.tabsStore[tabId]);\n }\n }\n };\n\n public static getInstance = (initialData?: MynahUITabStoreModel, defaults?: MynahUITabStoreTab): MynahUITabsStore => {\n if (MynahUITabsStore.instance === undefined) {\n MynahUITabsStore.instance = new MynahUITabsStore(initialData, defaults);\n }\n\n return MynahUITabsStore.instance;\n };\n\n /**\n * Subscribe to changes of the tabsStore\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public addListener = (eventName: keyof TabStoreSubscription, handler: (tabId: string, tabData?: MynahUITabStoreTab) => void): string => {\n const subscriptionId: string = generateUID();\n this.subscriptions[eventName][subscriptionId] = handler;\n return subscriptionId;\n };\n\n /**\n * Subscribe to changes of the tabs' data store\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public addListenerToDataStore = (tabId: string, storeKey: keyof MynahUIDataModel, handler: (newValue: any, oldValue?: any) => void): string | null => {\n if (this.tabsDataStore[tabId] !== undefined) {\n return this.tabsDataStore[tabId].subscribe(storeKey, handler);\n }\n return null;\n };\n\n /**\n * Unsubscribe from changes of the tabs' data store\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public removeListenerFromDataStore = (tabId: string, subscriptionId: string, storeKey: keyof MynahUIDataModel): void => {\n if (this.tabsDataStore[tabId] !== undefined) {\n this.tabsDataStore[tabId].unsubscribe(storeKey, subscriptionId);\n }\n };\n\n /**\n * Unsubscribe from changes of the tabs store\n * @param subscriptionId subscriptionId which is returned from subscribe function\n */\n public removeListener = (eventName: keyof TabStoreSubscription, subscriptionId: string): void => {\n if (this.subscriptions[eventName][subscriptionId] !== undefined) {\n delete this.subscriptions[eventName][subscriptionId];\n }\n };\n\n private readonly informSubscribers = (eventName: keyof TabStoreSubscription, tabId: string, tabData?: MynahUITabStoreTab): void => {\n const subscriberKeys = Object.keys(this.subscriptions[eventName]);\n subscriberKeys.forEach(subscriberKey => {\n this.subscriptions[eventName][subscriberKey](tabId, tabData);\n });\n };\n\n /**\n * Returns the tab\n * @param tabId Tab Id\n * @returns info of the tab\n */\n public getTab = (tabId: string): MynahUITabStoreTab | null => this.tabsStore[tabId] ?? null;\n\n /**\n * Returns the tab\n * @param tabId Tab Id\n * @returns info of the tab\n */\n public getAllTabs = (): MynahUITabStoreModel => structuredClone(this.tabsStore);\n\n /**\n * Returns the data store of the tab\n * @param tabId Tab Id\n * @returns data of the tab\n */\n public getTabDataStore = (tabId: string): MynahUIDataStore => this.tabsDataStore[tabId];\n\n /**\n * Returns the data of the tab\n * @param tabId Tab Id\n * @returns data of the tab\n */\n public getSelectedTabId = (): string => {\n const tabIds = Object.keys(this.tabsStore);\n return tabIds.find(tabId => this.tabsStore[tabId].isSelected === true) ?? '';\n };\n\n /**\n * Clears store data and informs all the subscribers\n */\n public removeAllTabs = (): void => {\n Object.keys(this.tabsStore).forEach(tabId => {\n this.removeTab(tabId);\n });\n };\n\n /**\n * Get all tabs length\n * @returns tabs length\n */\n public tabsLength = (): number => Object.keys(this.tabsStore).length;\n}\n","export const getOrigin = (site: string): string => {\n let result = '';\n try {\n result = new URL(site).origin;\n } catch (err) {\n result = 'unknown';\n }\n return result;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MynahIcons } from './components/icon';\n\nexport interface QuickActionCommand {\n command: string;\n description?: string;\n placeholder?: string;\n}\nexport interface QuickActionCommandGroup {\n groupName?: string;\n commands: QuickActionCommand[];\n}\n/**\n * data store model to update the mynah ui partially or fully\n */\nexport interface MynahUIDataModel {\n /**\n * Tab title\n * */\n tabTitle?: string;\n /**\n * Chat screen loading animation state (mainly use during the stream or getting the initial answer)\n */\n loadingChat?: boolean;\n /**\n * Show chat avatars or not\n * */\n showChatAvatars?: boolean;\n /**\n * Show cancel button while loading the chat\n * */\n cancelButtonWhenLoading?: boolean;\n /**\n * Quick Action commands to show when user hits / to the input initially\n */\n quickActionCommands?: QuickActionCommandGroup[];\n /**\n * Placeholder to be shown on prompt input\n */\n promptInputPlaceholder?: string;\n /**\n * Info block to be shown under prompt input\n */\n promptInputInfo?: string;\n /**\n * Prompt input field disabled state, set to tru to disable it\n */\n promptInputDisabledState?: boolean;\n /**\n * List of chat item objects to be shown on the web suggestions search screen\n */\n chatItems?: ChatItem[];\n // TODO\n selectedCodeSnippet?: string;\n}\n\nexport interface MynahUITabStoreTab {\n /**\n * Is tab selected\n */\n isSelected?: boolean;\n /**\n * Tab items data store\n */\n store?: MynahUIDataModel;\n}\n/**\n * tabs store model to update the tabs partially or fully\n */\nexport interface MynahUITabStoreModel {\n [tabId: string]: MynahUITabStoreTab;\n}\n\nexport enum MynahEventNames {\n RESET_STORE = 'resetStore',\n FEEDBACK_SET = 'feedbackSet',\n CARD_VOTE = 'cardVote',\n SOURCE_LINK_CLICK = 'sourceLinkClick',\n INFO_LINK_CLICK = 'infoLinkClick',\n LINK_CLICK = 'linkClick',\n CHAT_ITEM_ENGAGEMENT = 'chatItemEngagement',\n COPY_CODE_TO_CLIPBOARD = 'copyCodeToClipboard',\n INSERT_CODE_TO_CURSOR_POSITION = 'insertCodeToCursorPosition',\n CHAT_PROMPT = 'chatPrompt',\n CHAT_ITEM_ADD = 'chatItemAdd',\n FOLLOW_UP_CLICKED = 'followUpClicked',\n SHOW_MORE_WEB_RESULTS_CLICK = 'showMoreWebResultsClick',\n SHOW_FEEDBACK_FORM = 'showFeedbackForm',\n OPEN_DIFF = 'openDiff',\n ADD_CODE_SNIPPET = 'addCodeSnippet',\n REMOVE_CODE_SNIPPET = 'removeCodeSnippet',\n};\n\nexport enum MynahPortalNames {\n WRAPPER = 'wrapper',\n SIDE_NAV = 'sideNav',\n OVERLAY = 'overlay',\n FEEDBACK_FORM = 'feedbackForm',\n};\n\nexport interface SourceLinkMetaData {\n stars?: number; // repo stars\n forks?: number; // repo forks\n answerCount?: number; // total answers if it is a question\n isOfficialDoc?: boolean; // is suggestion comes from an official api doc\n isAccepted?: boolean; // is accepted or not if it is an answer\n score?: number; // relative score according to the up and down votes for a question or an answer\n lastActivityDate?: number; // creation or last update date for question or answer\n}\n\nexport interface SourceLink {\n title: string;\n id?: string;\n url: string;\n body?: string;\n type?: string;\n metadata?: Record<string, SourceLinkMetaData>;\n}\nexport enum ChatItemType {\n PROMPT = 'prompt',\n SYSTEM_PROMPT = 'system-prompt',\n AI_PROMPT = 'ai-prompt',\n ANSWER = 'answer',\n ANSWER_STREAM = 'answer-stream',\n ANSWER_PART = 'answer-part',\n CODE_RESULT = 'code-result',\n}\n\nexport interface ChatItem {\n body?: string;\n type: ChatItemType;\n messageId?: string;\n canBeVoted?: boolean;\n followUp?: {\n text?: string;\n options?: ChatItemFollowUp[];\n };\n relatedContent?: {\n title?: string;\n content: SourceLink[];\n };\n codeReference?: ReferenceTrackerInformation[];\n fileList?: {\n filePaths?: string[];\n deletedFiles?: string[];\n };\n}\n\nexport interface ChatPrompt {\n prompt?: string;\n escapedPrompt?: string;\n command?: string;\n attachment?: SourceLink;\n}\n\nexport interface ChatItemFollowUp extends ChatPrompt {\n type?: string;\n pillText: string;\n disabled?: boolean;\n description?: string;\n status?: 'info' | 'success' | 'warning' | 'error';\n icon?: MynahIcons;\n}\n\nexport enum KeyMap {\n ESCAPE = 'Escape',\n ENTER = 'Enter',\n BACKSPACE = 'Backspace',\n SPACE = ' ',\n DELETE = 'Delete',\n ARROW_UP = 'ArrowUp',\n ARROW_DOWN = 'ArrowDown',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_RIGHT = 'ArrowRight',\n PAGE_UP = 'PageUp',\n PAGED_OWN = 'PageDown',\n HOME = 'Home',\n END = 'End',\n META = 'Meta',\n TAB = 'Tab',\n SHIFT = 'Shift',\n CONTROL = 'Control',\n ALT = 'Alt',\n SLASH = '/',\n BACK_SLASH = '\\\\'\n}\n\nexport interface ReferenceTrackerInformation {\n licenseName?: string;\n repository?: string;\n url?: string;\n recommendationContentSpan: {\n start: number;\n end: number;\n };\n information: string;\n}\n\nexport type CodeSelectionType = 'selection' | 'block';\nexport type OnCopiedToClipboardFunction = (type?: CodeSelectionType, text?: string, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\nexport type OnInsertToCursorPositionFunction = (type?: CodeSelectionType, text?: string, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n\nexport enum RelevancyVoteType {\n UP = 'upvote',\n DOWN = 'downvote',\n}\n\n/**\n * 'interaction' will be set if there was a potential text selection or a click input was triggered by the user.\n * If this is a selection selectionDistanceTraveled object will also be filled\n * 'timespend' will be set basically if there is no interaction except mouse movements in a time spent longer than the ENGAGEMENT_DURATION_LIMIT\n * Don't forget that in 'timespend' case, user should leave the suggestion card at some point to count it as an interaction.\n * (They need to go back to the code or move to another card instead)\n */\nexport enum EngagementType {\n INTERACTION = 'interaction',\n TIME = 'timespend',\n}\n\nexport interface Engagement {\n /**\n * Engagement type\n */\n engagementType: EngagementType;\n /**\n * Total duration in ms till the engagement triggered.\n */\n engagementDurationTillTrigger: number;\n /**\n * Total mouse movement in x and y directions till the engagement triggered.\n * To avoid confusion: this is not the distance between start and end points, this is the total traveled distance.\n */\n totalMouseDistanceTraveled: { x: number; y: number };\n /**\n * If the engagementType is \"interaction\" and this object has a value, you can assume it as a text selection.\n * If the engagementType is \"interaction\" but this object is not defined, you can assume it as a click\n */\n selectionDistanceTraveled?: { x: number; y: number; selectedText?: string };\n}\n\nexport interface FeedbackPayload {\n messageId: string;\n tabId: string;\n selectedOption: string;\n comment?: string;\n}\n\nexport enum NotificationType {\n INFO = MynahIcons.INFO,\n SUCCESS = MynahIcons.OK_CIRCLED,\n WARNING = MynahIcons.WARNING,\n ERROR = MynahIcons.ERROR,\n}\n\nexport interface ConfigModel {\n texts: {\n mainTitle: string;\n feedbackFormTitle: string;\n feedbackFormOptionsLabel: string;\n feedbackFormCommentLabel: string;\n feedbackThanks: string;\n feedbackReportButtonLabel: string;\n codeSuggestions: string;\n clickFileToViewDiff: string;\n files: string;\n insertAtCursorLabel: string;\n copy: string;\n showMore: string;\n save: string;\n cancel: string;\n submit: string;\n stopGenerating: string;\n copyToClipboard: string;\n noMoreTabsTooltip: string;\n codeSuggestionWithReferenceTitle: string;\n spinnerText: string;\n };\n feedbackOptions: Array<{\n label: string;\n value: string;\n }>;\n maxTabs: number;\n}\n","'use strict'\n\n/**\n * un-escape special characters in the given string of html.\n *\n * @param {String} html\n * @return {String}\n */\n\nmodule.exports = function (html) {\n return String(html)\n .replace(/"/g, '\"')\n .replace(/'/g, '\\'')\n .replace(/:/g, ':')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&')\n}\n","/**\n * marked v7.0.5 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n'use strict';\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: false,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: false,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\nexports.defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n }\n catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n }\n else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n }\n else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n }\n else {\n return base + href;\n }\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction checkDeprecations(opt, callback) {\n if (!opt || opt.silent) {\n return;\n }\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n // TODO: Fix this rules type\n rules;\n lexer;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c, tokens: [] };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n const align = item.align[i];\n if (align) {\n if (/^ *-+: *$/.test(align)) {\n item.align[i] = 'right';\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align[i] = 'center';\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align[i] = 'left';\n }\n else {\n item.align[i] = null;\n }\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return { text: c, tokens: [] };\n });\n }\n // parse child tokens inside headers and cells\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const raw = [...src].slice(0, lLength + match.index + rLength + 1).join('');\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n }\n else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^((?![*_])[\\spunctuation])/\n};\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\ninline._punctuation = '\\\\p{P}$+<=>`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * smartypants text replacement\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n/**\n * mangle email addresses\n */\nfunction mangle(text) {\n let out = '';\n for (let i = 0; i < text.length; i++) {\n const ch = Math.random() > 0.5\n ? 'x' + text.charCodeAt(i).toString(16)\n : text.charCodeAt(i).toString();\n out += '&#' + ch + ';';\n }\n return out;\n}\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n }\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass _Slugger {\n seen;\n constructor() {\n this.seen = {};\n }\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n /**\n * Convert string to unique id\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n slugger;\n constructor(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n }\n else {\n itemBody += checkbox;\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop];\n const rendererKey = prop;\n const prevRenderer = renderer[rendererKey];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop];\n const tokenizerKey = prop;\n const prevTokenizer = tokenizer[tokenizerKey];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop];\n const hooksKey = prop;\n const prevHook = hooks[hooksKey];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n hooks[hooksKey] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n #parseMarkdown(lexer, parser) {\n return (src, optOrCallback, callback) => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n checkDeprecations(opt, callback);\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (callback) {\n const resultCallback = callback;\n const highlight = opt.highlight;\n let tokens;\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n }\n catch (e) {\n return throwError(e);\n }\n const done = (err) => {\n let out;\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n }\n catch (e) {\n err = e;\n }\n }\n opt.highlight = highlight;\n return err\n ? throwError(err)\n : resultCallback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!tokens.length)\n return done();\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n if (pending === 0) {\n done();\n }\n return;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async, callback) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt, callback) {\n return markedInstance.parse(src, opt, callback);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = exports.defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexports.Hooks = _Hooks;\nexports.Lexer = _Lexer;\nexports.Marked = Marked;\nexports.Parser = _Parser;\nexports.Renderer = _Renderer;\nexports.Slugger = _Slugger;\nexports.TextRenderer = _TextRenderer;\nexports.Tokenizer = _Tokenizer;\nexports.getDefaults = _getDefaults;\nexports.lexer = lexer;\nexports.marked = marked;\nexports.options = options;\nexports.parse = parse;\nexports.parseInline = parseInline;\nexports.parser = parser;\nexports.setOptions = setOptions;\nexports.use = use;\nexports.walkTokens = walkTokens;\n//# sourceMappingURL=marked.cjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Notification } from './components/notification';\nimport { DomBuilder, ExtendedHTMLElement } from './helper/dom';\nimport {\n MynahPortalNames,\n RelevancyVoteType,\n FeedbackPayload,\n MynahUIDataModel,\n MynahEventNames,\n NotificationType,\n ChatItem,\n ChatItemFollowUp,\n ChatPrompt,\n MynahUITabStoreModel,\n MynahUITabStoreTab,\n ConfigModel,\n ReferenceTrackerInformation,\n CodeSelectionType,\n Engagement,\n} from './static';\nimport { MynahUIGlobalEvents } from './helper/events';\nimport { Tabs } from './components/navigation-tabs';\nimport { ChatWrapper } from './components/chat-item/chat-wrapper';\nimport { FeedbackForm } from './components/feedback-form/feedback-form';\nimport { MynahUITabsStore } from './helper/tabs-store';\nimport { Config } from './helper/config';\nimport { marked } from 'marked';\nimport './styles/styles.scss';\n\nexport {\n FeedbackPayload,\n RelevancyVoteType,\n EngagementType,\n Engagement,\n MynahUIDataModel,\n NotificationType,\n ChatItem,\n ChatItemFollowUp,\n ChatItemType,\n ChatPrompt,\n SourceLink\n} from './static';\nexport {\n ToggleOption\n} from './components/toggle';\nexport {\n MynahIcons\n} from './components/icon';\n\nexport interface MynahUIProps {\n rootSelector?: string;\n defaults?: MynahUITabStoreTab;\n tabs?: MynahUITabStoreModel;\n config?: Partial<ConfigModel>;\n onShowMoreWebResultsClick?: (tabId: string, messageId: string) => void;\n onReady?: () => void;\n onVote?: (tabId: string, messageId: string, vote: RelevancyVoteType) => void;\n onStopChatResponse?: (tabId: string) => void;\n onResetStore?: (tabId: string) => void;\n onChatPrompt?: (tabId: string, prompt: ChatPrompt) => void;\n onFollowUpClicked?: (tabId: string, messageId: string, followUp: ChatItemFollowUp) => void;\n onTabChange?: (tabId: string) => void;\n onTabAdd?: (tabId: string) => void;\n onTabRemove?: (tabId: string) => void;\n onChatItemEngagement?: (tabId: string, messageId: string, engagement: Engagement) => void;\n onCopyCodeToClipboard?: (tabId: string, messageId: string, code?: string, type?: CodeSelectionType, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n onCodeInsertToCursorPosition?: (tabId: string, messageId: string, code?: string, type?: CodeSelectionType, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n onSourceLinkClick?: (tabId: string, messageId: string, link: string, mouseEvent?: MouseEvent) => void;\n onLinkClick?: (tabId: string, messageId: string, link: string, mouseEvent?: MouseEvent) => void;\n onInfoLinkClick?: (tabId: string, link: string, mouseEvent?: MouseEvent) => void;\n onSendFeedback?: (tabId: string, feedbackPayload: FeedbackPayload) => void;\n onOpenDiff?: (tabId: string, filePath: string, deleted: boolean, messageId?: string) => void;\n}\n\nexport class MynahUI {\n private readonly props: MynahUIProps;\n private readonly wrapper: ExtendedHTMLElement;\n private readonly tabsWrapper: ExtendedHTMLElement;\n private readonly tabContentsWrapper: ExtendedHTMLElement;\n private readonly feedbackForm?: FeedbackForm;\n private readonly chatWrappers: Record<string, ChatWrapper> = {};\n\n constructor (props: MynahUIProps) {\n // Fixes for marked\n marked.use({\n renderer: {\n listitem: (src) => `<li> ${src.replace(/\\[\\[([^[]+)\\]\\](\\(([^)]*))\\)/gim, '<a href=\"$3\">[$1]</a>')}</li>`\n },\n });\n\n this.props = props;\n Config.getInstance(props.config);\n DomBuilder.getInstance(props.rootSelector);\n MynahUITabsStore.getInstance(this.props.tabs, this.props.defaults);\n MynahUIGlobalEvents.getInstance();\n\n const initTabs = MynahUITabsStore.getInstance().getAllTabs();\n this.tabContentsWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-ui-tab-contents-wrapper' ],\n children: Object.keys(initTabs).map((tabId: string) => {\n this.chatWrappers[tabId] = new ChatWrapper({\n tabId,\n onStopChatResponse: props.onStopChatResponse,\n });\n return this.chatWrappers[tabId].render;\n })\n });\n\n if (props.onSendFeedback !== undefined) {\n this.feedbackForm = new FeedbackForm();\n }\n\n this.tabsWrapper = new Tabs({\n onChange: (selectedTabId: string) => {\n if (this.props.onTabChange !== undefined) {\n this.props.onTabChange(selectedTabId);\n }\n }\n }).render;\n\n this.tabsWrapper.setAttribute('selected-tab', MynahUITabsStore.getInstance().getSelectedTabId());\n\n this.wrapper = DomBuilder.getInstance().createPortal(\n MynahPortalNames.WRAPPER,\n {\n type: 'div',\n attributes: {\n id: 'mynah-wrapper'\n },\n children: [\n this.tabsWrapper,\n this.tabContentsWrapper,\n ]\n },\n 'afterbegin'\n );\n\n MynahUITabsStore.getInstance().addListener('add', (tabId: string) => {\n this.chatWrappers[tabId] = new ChatWrapper({\n tabId,\n onStopChatResponse: props.onStopChatResponse,\n });\n this.tabContentsWrapper.appendChild(this.chatWrappers[tabId].render);\n if (this.props.onTabAdd !== undefined) {\n this.props.onTabAdd(tabId);\n }\n });\n MynahUITabsStore.getInstance().addListener('remove', (tabId: string) => {\n this.chatWrappers[tabId].render.remove();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.chatWrappers[tabId];\n if (this.props.onTabRemove !== undefined) {\n this.props.onTabRemove(tabId);\n }\n });\n\n this.addGlobalListeners();\n if (this.props.onReady !== undefined) {\n this.props.onReady();\n }\n }\n\n private readonly addGlobalListeners = (): void => {\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_PROMPT, (data: {tabId: string; prompt: ChatPrompt}) => {\n if (this.props.onChatPrompt !== undefined) {\n this.props.onChatPrompt(data.tabId, data.prompt);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FOLLOW_UP_CLICKED, (data: {\n tabId: string;\n messageId: string;\n followUpOption: ChatItemFollowUp;\n }) => {\n if (this.props.onFollowUpClicked !== undefined) {\n this.props.onFollowUpClicked(data.tabId, data.messageId, data.followUpOption);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SHOW_MORE_WEB_RESULTS_CLICK, (data: {messageId: string}) => {\n if (this.props.onShowMoreWebResultsClick !== undefined) {\n this.props.onShowMoreWebResultsClick(MynahUITabsStore.getInstance().getSelectedTabId(), data.messageId);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FEEDBACK_SET, (feedbackData) => {\n if (this.props.onSendFeedback !== undefined) {\n this.props.onSendFeedback(MynahUITabsStore.getInstance().getSelectedTabId(), feedbackData);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_ITEM_ENGAGEMENT, (data: { engagement: Engagement; messageId: string }) => {\n if (this.props.onChatItemEngagement !== undefined) {\n this.props.onChatItemEngagement(MynahUITabsStore.getInstance().getSelectedTabId(), data.messageId, data.engagement);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.COPY_CODE_TO_CLIPBOARD, (data) => {\n if (this.props.onCopyCodeToClipboard !== undefined) {\n this.props.onCopyCodeToClipboard(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.text,\n data.type,\n data.referenceTrackerInformation\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.INSERT_CODE_TO_CURSOR_POSITION, (data) => {\n if (this.props.onCodeInsertToCursorPosition !== undefined) {\n this.props.onCodeInsertToCursorPosition(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.text,\n data.type,\n data.referenceTrackerInformation\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SOURCE_LINK_CLICK, (data) => {\n if (this.props.onSourceLinkClick !== undefined) {\n this.props.onSourceLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.link,\n data.event\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.LINK_CLICK, (data) => {\n if (this.props.onLinkClick !== undefined) {\n this.props.onLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.link,\n data.event\n );\n }\n });\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.INFO_LINK_CLICK, (data) => {\n if (this.props.onInfoLinkClick !== undefined) {\n this.props.onInfoLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.link,\n data.event\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CARD_VOTE, (data) => {\n if (this.props.onVote !== undefined) {\n this.props.onVote(\n data.tabId,\n data.messageId,\n data.vote\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.RESET_STORE, (data: {tabId: string}) => {\n if (this.props.onResetStore !== undefined) {\n this.props.onResetStore(data.tabId);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.OPEN_DIFF, (data) => {\n if (this.props.onOpenDiff !== undefined) {\n this.props.onOpenDiff(data.tabId, data.filePath, data.deleted, data.messageId);\n }\n });\n };\n\n public addToUserPrompt = (tabId: string, prompt: string): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].addToPrompt(prompt);\n }\n };\n\n /**\n * Adds a new answer on the chat window\n * @param tabId Corresponding tab ID.\n * @param answer An ChatItem object.\n */\n public addChatItem = (tabId: string, chatItem: ChatItem): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_ITEM_ADD, { tabId, chatItem });\n MynahUITabsStore.getInstance().getTabDataStore(tabId).updateStore({\n chatItems: [\n ...MynahUITabsStore.getInstance().getTabDataStore(tabId).getValue('chatItems'),\n chatItem\n ]\n });\n }\n };\n\n /**\n * Updates the body of the last ChatItemType.ANSWER_STREAM chat item\n * @param body new body stream as string.\n */\n public updateLastChatAnswer = (tabId: string, updateWith: Partial<ChatItem>): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].updateLastChatAnswer(updateWith);\n }\n };\n\n /**\n * Updates only the UI with the given data for the given tab\n * Send tab id as an empty string to open a new tab!\n * If max tabs reached, will not return tabId\n * @param data A full or partial set of data with values.\n */\n public updateStore = (tabId: string | '', data: MynahUIDataModel): string | undefined => {\n if (tabId === '') {\n return MynahUITabsStore.getInstance().addTab({ store: { ...data } });\n } else if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n MynahUITabsStore.getInstance().updateTab(tabId, { store: { ...data } });\n }\n return tabId;\n };\n\n /**\n * Simply creates and shows a notification\n * @param props NotificationProps\n */\n public notify = (props: {\n duration?: number;\n type?: NotificationType;\n title?: string;\n content: string;\n onNotificationClick?: () => void;\n onNotificationHide?: () => void;\n }): void => {\n new Notification({\n ...props,\n onNotificationClick: () => {},\n }).notify();\n };\n}\n"],"names":["root","factory","exports","module","define","amd","self","___CSS_LOADER_EXPORT___","push","id","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","matchHtmlRegExp","string","escape","str","match","exec","html","index","lastIndex","charCodeAt","substring","e","t","a","pattern","lookbehind","alias","inside","n","bash","environment","RegExp","variable","greedy","number","operator","punctuation","entity","languages","shebang","comment","parameter","function","keyword","builtin","boolean","s","o","sh","shell","Prism","c","extend","insertBefore","char","macro","directive","expression","constant","clike","replace","r","l","trim","d","p","u","g","b","h","f","m","y","w","v","x","$","_","B","csharp","range","namespace","generic","preprocessor","E","R","z","S","j","attribute","target","A","F","P","U","Z","q","interpolation","dotnet","cs","css","atrule","rule","url","selector","property","important","rest","markup","tag","addInlined","addAttribute","java","annotation","generics","import","static","javascript","regex","hashbang","js","json","null","webmanifest","util","clone","jsx","spread","script","type","tagName","pop","openedBraces","splice","Token","hooks","add","language","tokens","less","lua","markdown","yaml","blockquote","table","code","title","hr","bold","italic","strike","forEach","toLowerCase","classes","highlight","parseInt","slice","Number","plugins","autoloader","Date","valueOf","Math","floor","random","attributes","loadLanguages","document","getElementById","innerHTML","textContent","amp","lt","gt","quot","String","fromCodePoint","fromCharCode","md","prolog","doctype","name","cdata","Object","defineProperty","value","mathml","svg","xml","ssml","atom","rss","mongodb","objectivec","objc","python","decorator","py","backreference","anchor","group","quantifier","alternation","scala","symbol","scss","parent","placeholder","statement","typescript","tsx","flags","at","ts","createRange","KeepMarkup","env","element","children","isActive","dropTokens","pos","processChildren","keepMarkup","processElement","nodeName","classList","contains","shouldKeep","posOpen","posClose","childNodes","child","nodeType","walk","elt","nodeState","nodeStart","node","nodeStartPos","nodeEnd","nodeEndPos","setStart","setEnd","appendChild","extractContents","insertNode","detach","highlightedCode","PLUGIN_NAME","NEW_LINE_EXP","config","lineNumbers","getLine","lineNumberRows","querySelector","lineNumberStart","getAttribute","lineNumberEnd","lineIndex","resize","resizeElements","assumeViewportIndependence","lastWidth","window","addEventListener","innerWidth","Array","prototype","call","querySelectorAll","pre","test","remove","lineNumbersWrapper","linesNum","lines","createElement","setAttribute","className","hasAttribute","style","counterReset","run","elements","filter","whiteSpace","getComputedStyle","currentStyle","infos","codeElement","lineNumberSizer","codeLines","split","display","oneLinerHeight","getBoundingClientRect","height","lineHeights","sizer","Boolean","info","line","childIndex","wrapper","lineNumber","_self","lang","uniqueId","plainTextGrammar","manual","disableWorkerMessageHandler","encode","isArray","objId","obj","deepClone","visited","key","hasOwnProperty","getLanguage","parentElement","setLanguage","currentScript","Error","err","src","stack","scripts","getElementsByTagName","defaultActivation","no","plain","plaintext","text","txt","redef","before","insert","grammar","ret","token","newToken","old","DFS","callback","propertyType","highlightAll","async","highlightAllUnder","container","apply","highlightElement","insertHighlightedCode","Worker","worker","filename","onmessage","evt","postMessage","immediateClose","tokenize","tokenList","LinkedList","addAfter","head","matchGrammar","array","next","tail","toArray","all","callbacks","matchedStr","matchPattern","lookbehindLength","startNode","startPos","rematch","patterns","cause","patternObj","global","currentNode","reach","removeCount","from","to","matchStr","after","removeFrom","prev","removeRange","nestedRematch","newNode","count","aliases","message","parse","close","highlightAutomaticallyCallback","readyState","defer","requestAnimationFrame","setTimeout","WorkerGlobalScope","includedCdataInside","def","attrName","Element","matches","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","extension","success","error","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","start","comma","end","parseRange","max","min","statusText","send","loadFile","fileHighlight","logged","console","warn","arguments","options","styleTagTransform","setAttributes","domAPI","insertStyleElement","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","idCountMap","identifiers","base","indexByIdentifier","sourceMap","references","updater","addElementStyle","byIndex","api","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","memo","styleTarget","HTMLIFrameElement","contentDocument","getTarget","styleElement","nonce","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","constructor","props","updateLabel","label","render","replaceWith","DomBuilder","getInstance","build","classNames","setEnabled","enabled","removeAttribute","primary","events","additionalEvents","click","onClick","icon","highlightersWithTooltip","markupStart","markupAttributes","markerIndex","markupEnd","PARTS_CLASS_NAME","PARTS_CLASS_NAME_VISIBLE","CardBody","processNode","contentString","matchingLanguage","elementFromNode","onLinkClick","href","isBlockCode","snippetLanguage","find","codeString","highlighter","SyntaxHighlighter","codeStringWithMarkup","keepHighlights","showCopyOptions","block","onCopiedToClipboard","getReferenceTrackerInformationFromElement","onInsertToCursorPosition","useParts","replaceChild","cloneNode","markerElements","mark","startIndexText","generateUID","startIndexTextElement","insertAdjacentElement","startIndex","innerText","indexOf","originalRefTrackerInfo","highlightRangeWithTooltip","recommendationContentSpan","showHighlightRangeTooltip","tooltipText","clearTimeout","highlightRangeTooltipTimeout","highlightRangeTooltip","Overlay","background","closeOnOutsideClick","referenceElement","currentTarget","removeOtherOverlays","dimOutside","verticalDirection","OverlayVerticalDirection","TO_TOP","horizontalDirection","OverlayHorizontalDirection","START_TO_RIGHT","body","hideHighlightRangeTooltip","getContentBodyChildren","incomingBody","generatedStartMarkup","calculatedStartIndex","calculatedEndIndex","marked","use","extensions","renderer","textPart","breaks","processedNode","emptyElement","highlightRangeElement","information","engagementStartTime","totalMouseDistanceTraveled","resetEngagement","previousMousePosition","mouseDownInfo","time","handleEngagement","interactionDistanceTraveled","onCardEngaged","engagementDurationTillTrigger","getTime","engagementType","EngagementType","INTERACTION","TIME","selectionDistanceTraveled","padding","border","persistent","mouseenter","clientX","clientY","mousemove","abs","mousedown","mouseup","mouseUpInfo","selectedText","getSelection","mouseleave","engagementEndTime","updateStack","typewriterItemIndex","previousTypewriterItemIndex","generateCard","generatedCard","getCardClasses","messageId","chatItem","ChatItemType","ANSWER_STREAM","Card","Config","texts","spinnerText","getCardContent","addClass","PROMPT","isChatItemEmpty","isNoContent","followUp","relatedContent","ANSWER","MynahUITabsStore","getTabDataStore","tabId","getValue","chatAvatar","fileList","engagement","MynahUIGlobalEvents","dispatch","MynahEventNames","CHAT_ITEM_ENGAGEMENT","commonBodyProps","LINK_CLICK","link","event","CODE_RESULT","filePaths","deletedFiles","referenceSuggestionLabel","contentBody","ChatItemTreeViewWrapper","files","codeReference","ChatItemSourceLinksContainer","referenceTrackerInformation","COPY_CODE_TO_CLIPBOARD","INSERT_CODE_TO_CURSOR_POSITION","canBeVoted","ChatItemRelevanceVote","ChatItemFollowUpContainer","getChatAvatar","Icon","MynahIcons","USER","MYNAH","getInsertedTypewriterPartsCss","fill","typewriterId","getInsertingTypewriterPartsCss","newWordsCount","timeForEach","updateCard","updateTimer","updateCardStack","updateWith","shift","newCardContent","upcomingWords","insertChild","removeClass","subscribe","showCroppedFollowupText","followupTooltipTimeout","elm","followupTooltip","hideCroppedFollowupText","itemAddListenerId","addListener","CHAT_ITEM_ADD","removeListener","followUpOption","disabled","pillText","MAX_LENGTH","FOLLOW_UP_CLICKED","hasClass","description","mouseover","getElementsByClassName","option","onclick","handleVoteChange","vote","CARD_VOTE","newChildren","feedbackThanks","RelevancyVoteType","DOWN","Button","feedbackReportButtonLabel","sendFeedbackListenerId","FEEDBACK_SET","SHOW_FEEDBACK_FORM","replaceChildren","UP","votingId","change","for","THUMBS_UP","THUMBS_DOWN","showMoreButtonBlock","DOWN_OPEN","SHOW_MORE_WEB_RESULTS_CLICK","sourceLink","SourceLinkHeader","showCardOnHover","SOURCE_LINK_CLICK","buildDropdownChildren","ref","CollapsibleContent","codeSuggestionWithReferenceTitle","license","ChatItemTreeViewLicense","tree","ChatItemTreeView","fileListToTree","codeSuggestions","clickFileToViewDiff","isOpen","depth","getClassNames","buildFolderNode","buildFileNode","updateTree","buildFolderChildren","childNode","folderItem","RIGHT_OPEN","cancelEvent","paddingLeft","fileItem","DOC","OPEN_DIFF","filePath","deleted","textDecoration","setCommand","command","promptTextInputCommand","onRemoveClick","linkClick","INFO_LINK_CLICK","addListenerToDataStore","newInfo","MAX_USER_INPUT","MAX_USER_INPUT_THRESHOLD","commandSelectorOpen","selectedCommand","updateAvailableCharactersIndicator","totalCharsUsed","promptTextInput","getTextInputValue","codeSnippet","lastCodeSnippet","remainingCharsIndicator","handleInputKeydown","blockedKeys","KeyMap","ENTER","ESCAPE","SPACE","TAB","BACK_SLASH","SLASH","navigationalKeys","ARROW_UP","ARROW_DOWN","includes","preventDefault","targetElement","filteredCommandsList","commandSelector","handleCommandSelection","commandElements","nextElement","lastActiveElement","findIndex","commandElement","updateTextInputValue","quickActionCommands","quickActionGroup","newQuickActionCommandGroup","promptRegex","commands","toggleHidden","updateContent","getQuickCommandActions","BACKSPACE","clearTextArea","shiftKey","ctrlKey","stretchWidth","onClose","sendPrompt","quickCommandList","quickActionCommandGroup","groupName","quickActionCommand","updateTextInputPlaceholder","focus","clear","updateTextInputMaxLength","attachmentWrapper","attachment","addText","textToAdd","ADD_CODE_SNIPPET","currentInputValue","selectedCodeSnippet","CHAT_PROMPT","prompt","escapedPrompt","ChatPromptInputCommand","PromptTextInput","onKeydown","onInput","sendButton","SendButton","CodeSnippet","textInputLength","currentSelectedCodeMaxLength","croppedSelectedCodeSnippet","updateSelectedCodeSnippet","REMOVE_CODE_SNIPPET","insertChatItem","chatItemCard","ChatItemCard","lastChatItemCard","AI_PROMPT","SYSTEM_PROMPT","chatItemsContainer","scrollTop","scrollHeight","updateLastChatAnswer","addToPrompt","promptInput","chatItems","chatItemToInsert","lastItem","loadingChat","showCancelButton","intermediateBlockContainer","ChatPromptInput","promptInputElement","promptInfo","ChatPromptInputInfo","onStopChatResponse","stopGenerating","BLOCK","initChatItems","showPreviewOverLay","markdownText","previewOverlay","closePreviewOverLay","renderCodeSnippetWidget","CANCEL","snippetWidget","_render","CodeSnippetWidget","_props","updateStore","updatePromptTextInputSizer","_promptTextInput","_promptTextInputSizer","defaultPlaceholder","maxLength","maxlength","initialDisabledState","tabindex","rows","keydown","input","blur","isDisabled","placeholderText","ENVELOPE_SEND","uid","initialCollapsedState","onCollapseStateChange","checked","val","newIcon","getComment","keyup","onChange","initComment","feedbackPayload","selectedOption","onFeedbackSet","feedbackData","feedbackComment","feedbackSelect","feedbackOptions","feedbackFormWrapper","show","initPayload","createPortal","MynahPortalNames","FEEDBACK_FORM","feedbackFormContainer","feedbackOptionsWrapper","FeedbackFormComment","feedbackSubmitButton","submit","feedbackFormTitle","feedbackFormOptionsLabel","feedbackFormCommentLabel","cancel","MynahUIIconImporter","mynahIconMappings","MENU","MINUS","SEARCH","PLUS","CHAT","LINK","EXTERNAL","CALENDAR","MEGAPHONE","NOTIFICATION","EYE","ELLIPSIS","OK","UP_OPEN","LEFT_OPEN","RESIZE_FULL","RESIZE_SMALL","OK_CIRCLED","INFO","WARNING","ERROR","STAR","LIGHT_BULB","REFRESH","PLAY","PAUSE","CODE_BLOCK","COPY","CURSOR_INSERT","TEXT_SELECT","REVERT","keys","iconKey","iconName","instance","tabIdTitleSubscriptions","tabIdChatItemsSubscriptions","getTabOptionsFromTabStoreData","tabs","getAllTabs","store","tabTitle","selected","isSelected","getTabsRender","selectedTabId","tab","assignListener","toggleGroup","Toggle","selectTab","onRemove","removeTab","tabsLength","maxTabs","showMaxReachedOverLay","noMoreTabsTooltip","hideMaxReachedOverLay","addTab","maxReachedOverlay","TO_BOTTOM","CENTER","updateOptionTitle","updateOptionIndicator","removeListenerAssignments","removeListenerFromDataStore","dblclick","getSelectedTabId","tabData","addOption","newSelectedTab","removeOption","snapToOption","setValue","getNextCalculatedTop","prevNotifications","DS","prevNotificationRectangle","top","OVERLAY_MARGIN","getChildren","duration","NotificationType","notify","notificationOverlay","referencePoint","left","documentElement","clientWidth","TO_LEFT","onNotificationHide","onNotificationClick","guid","windowBlurHandler","removeEventListener","bind","getCalculatedLeft","referenceRectangle","width","TO_RIGHT","END_TO_LEFT","getCalculatedWidth","getCalculatedTop","START_TO_BOTTOM","END_TO_TOP","innerContainer","hidden","calculatedTop","calculatedLeft","calculatedWidth","removeAllPortals","OVERLAY","containerRectangle","winHeight","clientHeight","innerHeight","winWidth","comparingWidth","comparingHeight","suggestion","getSourceMetaBlock","metadataUnion","metaItems","metadataKey","metadata","isAccepted","lastActivityDate","getTimeDiff","answerCount","stars","forks","score","showLinkPreview","sourceLinkPreviewTimeout","sourceLinkPreview","SourceLinkCard","hideLinkPreview","splitUrl","origin","getOrigin","urlPart","SourceLinkBody","IMPORTED_LANGS","highlighters","textReplacement","ellipsis","getSelectedCodeContextMenu","getSelectedCode","copyToClipboard","textToSendClipboard","notificationText","hasFocus","navigator","clipboard","writeText","then","Notification","catch","codeMarkup","escapedCodeBlock","preElement","showLineNumbers","copy","selectedCode","insertAtCursorLabel","startingLineNumber","ToggleOptionItem","disabledTooltip","disabledTooltipTimer","auxclick","transformScroll","deltaY","scrollLeft","updateSelectionRender","currentValue","elmToCheck","nextSibling","indication","offsetLeft","direction","wheel","configDefaults","mainTitle","showMore","save","differenceInMs","separator","delta","years","months","weeks","days","hours","minutes","combined","EmptyDomBuilderObject","rootSelector","portals","builderObject","toggleClass","position","childItem","insertAdjacentText","clearChildren","removePersistent","extendDomFunctionality","domElement","extendedElement","domBuilderObject","readyToBuildObject","buildedDom","eventName","attributeName","HTMLElement","domToUpdate","portalName","portalDom","getPortal","removePortal","portalsWithName","htmlDecode","nodeValue","stopPropagation","stopImmediatePropagation","eventKey","handler","listenerId","listeners","modifiedFilePaths","deletedFilePaths","splitFilePaths","reduce","acc","fileOrFolder","oldItem","newItem","paths","firstPart","secondPart","PrimitiveObjectTypes","EmptyMynahUIDataModel","defaults","cancelButtonWhenLoading","showChatAvatars","promptInputPlaceholder","promptInputInfo","promptInputDisabledState","initialData","setDefaults","getDefaults","storeKey","subscriptionId","subscriptions","unsubscribe","structuredClone","getDefaultValue","skipSubscribers","assign","resetStore","RESET_STORE","create","selectedTabChange","tabDefaults","tabsStore","tabsDataStore","deselectAllTabs","MynahUIDataStore","informSubscribers","wasSelected","tabIds","updateTab","subscriberKey","getTab","removeAllTabs","site","URL","_getDefaults","baseUrl","gfm","headerIds","headerPrefix","langPrefix","mangle","pedantic","sanitize","sanitizer","silent","smartypants","tokenizer","walkTokens","xhtml","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","unescapeTest","charAt","caret","edit","opt","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","prot","decodeURIComponent","baseUrls","justDomain","rtrim","relativeBase","protocol","domain","resolveUrl","encodeURI","noopTest","splitCells","tableRow","cells","offset","escaped","curr","invert","suffLen","currChar","outputLink","cap","raw","lexer","state","inLink","inlineTokens","_Tokenizer","rules","space","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","indentCodeCompensation","inline","_escapes","heading","trimmed","blockTokens","bull","isordered","ordered","loose","items","itemRegex","itemContents","endsWithBlankLine","endEarly","repeat","nextLine","indent","trimLeft","search","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","ischecked","istask","task","trimRight","spacers","hasMultipleLineBreaks","some","paragraph","header","align","row","lheading","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","level","findClosingBracket","linkLen","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","_punctuation","blockSkip","anyPunctuation","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","_Lexer","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","leading","extTokenizer","startBlock","Infinity","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","lastIndexOf","startInline","_Renderer","infostring","quote","slugger","slug","listitem","checkbox","tablerow","tablecell","cleanHref","image","_TextRenderer","_Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","_Parser","textRenderer","parseInline","renderers","genericToken","parser","headingToken","codeToken","tableToken","cell","blockquoteToken","listToken","itemBody","unshift","htmlToken","paragraphToken","textToken","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","Set","preprocess","postprocess","Marked","setOptions","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Slugger","Hooks","args","values","childTokens","pack","opts","ext","prevRenderer","extLevel","prop","rendererFunc","rendererKey","tokenizerFunc","tokenizerKey","prevTokenizer","hooksFunc","hooksKey","prevHook","passThroughHooks","has","arg","Promise","resolve","packWalktokens","optOrCallback","origOpt","throwError","checkDeprecations","resultCallback","done","pending","msg","reject","markedInstance","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","enumerable","get","globalThis","Function","Symbol","toStringTag","nc","chatWrappers","addGlobalListeners","onChatPrompt","onFollowUpClicked","onShowMoreWebResultsClick","onSendFeedback","onChatItemEngagement","onCopyCodeToClipboard","onCodeInsertToCursorPosition","onSourceLinkClick","onInfoLinkClick","onVote","onResetStore","onOpenDiff","addToUserPrompt","addChatItem","initTabs","tabContentsWrapper","ChatWrapper","feedbackForm","FeedbackForm","tabsWrapper","Tabs","onTabChange","WRAPPER","onTabAdd","onTabRemove","onReady"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"main.js","mappings":"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","sources":["../webpack/universalModuleDefinition",".././src/styles/styles.scss",".././node_modules/css-loader/dist/runtime/api.js",".././node_modules/css-loader/dist/runtime/sourceMaps.js",".././node_modules/escape-html/index.js",".././node_modules/prismjs/components/prism-bash.min.js",".././node_modules/prismjs/components/prism-c.min.js",".././node_modules/prismjs/components/prism-clike.min.js",".././node_modules/prismjs/components/prism-csharp.min.js",".././node_modules/prismjs/components/prism-css.min.js",".././node_modules/prismjs/components/prism-java.min.js",".././node_modules/prismjs/components/prism-javascript.min.js",".././node_modules/prismjs/components/prism-json.min.js",".././node_modules/prismjs/components/prism-jsx.min.js",".././node_modules/prismjs/components/prism-less.min.js",".././node_modules/prismjs/components/prism-lua.min.js",".././node_modules/prismjs/components/prism-markdown.min.js",".././node_modules/prismjs/components/prism-markup.min.js",".././node_modules/prismjs/components/prism-mongodb.min.js",".././node_modules/prismjs/components/prism-objectivec.min.js",".././node_modules/prismjs/components/prism-python.min.js",".././node_modules/prismjs/components/prism-regex.min.js",".././node_modules/prismjs/components/prism-scala.min.js",".././node_modules/prismjs/components/prism-scss.min.js",".././node_modules/prismjs/components/prism-tsx.min.js",".././node_modules/prismjs/components/prism-typescript.min.js",".././node_modules/prismjs/components/prism-xml-doc.min.js",".././node_modules/prismjs/plugins/keep-markup/prism-keep-markup.js",".././node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js",".././node_modules/prismjs/prism.js","webpack://MynahUI/./src/styles/styles.scss?203b",".././node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js",".././node_modules/style-loader/dist/runtime/insertBySelector.js",".././node_modules/style-loader/dist/runtime/insertStyleElement.js",".././node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js",".././node_modules/style-loader/dist/runtime/styleDomAPI.js",".././node_modules/style-loader/dist/runtime/styleTagTransform.js",".././src/components/icon/icons/block.svg",".././src/components/icon/icons/calendar.svg",".././src/components/icon/icons/cancel.svg",".././src/components/icon/icons/chat.svg",".././src/components/icon/icons/code-block.svg",".././src/components/icon/icons/copy.svg",".././src/components/icon/icons/cursor-insert.svg",".././src/components/icon/icons/doc.svg",".././src/components/icon/icons/down-open.svg",".././src/components/icon/icons/ellipsis.svg",".././src/components/icon/icons/envelope-send.svg",".././src/components/icon/icons/error.svg",".././src/components/icon/icons/external.svg",".././src/components/icon/icons/eye.svg",".././src/components/icon/icons/info.svg",".././src/components/icon/icons/left-open.svg",".././src/components/icon/icons/light-bulb.svg",".././src/components/icon/icons/link.svg",".././src/components/icon/icons/megaphone.svg",".././src/components/icon/icons/menu.svg",".././src/components/icon/icons/minus.svg",".././src/components/icon/icons/mynah.svg",".././src/components/icon/icons/notification.svg",".././src/components/icon/icons/ok-circled.svg",".././src/components/icon/icons/ok.svg",".././src/components/icon/icons/pause.svg",".././src/components/icon/icons/play.svg",".././src/components/icon/icons/plus.svg",".././src/components/icon/icons/refresh.svg",".././src/components/icon/icons/resize-full.svg",".././src/components/icon/icons/resize-small.svg",".././src/components/icon/icons/revert.svg",".././src/components/icon/icons/right-open.svg",".././src/components/icon/icons/search.svg",".././src/components/icon/icons/star.svg",".././src/components/icon/icons/text-select.svg",".././src/components/icon/icons/thumbs-down.svg",".././src/components/icon/icons/thumbs-up.svg",".././src/components/icon/icons/up-open.svg",".././src/components/icon/icons/user.svg",".././src/components/icon/icons/warning.svg",".././src/components/button.ts",".././src/components/card/card-body.ts",".././src/components/card/card.ts",".././src/components/chat-item/chat-item-card.ts",".././src/components/chat-item/chat-item-followup.ts",".././src/components/chat-item/chat-item-relevance-vote.ts",".././src/components/chat-item/chat-item-source-links.ts",".././src/components/chat-item/chat-item-tree-view-license.ts",".././src/components/chat-item/chat-item-tree-view-wrapper.ts",".././src/components/chat-item/chat-item-tree-view.ts",".././src/components/chat-item/chat-prompt-input-command.ts",".././src/components/chat-item/chat-prompt-input-info.ts",".././src/components/chat-item/chat-prompt-input.ts",".././src/components/chat-item/chat-wrapper.ts",".././src/components/chat-item/prompt-input/code-snippet-widget.ts",".././src/components/chat-item/prompt-input/code-snippet.ts",".././src/components/chat-item/prompt-input/prompt-text-input.ts",".././src/components/chat-item/prompt-input/send-button.ts",".././src/components/collapsible-content.ts",".././src/components/feedback-form/feedback-form-comment.ts",".././src/components/feedback-form/feedback-form.ts",".././src/components/icon.ts",".././src/components/icon/icon-importer.ts",".././src/components/navigation-tabs.ts",".././src/components/notification.ts",".././src/components/overlay.ts",".././src/components/source-link/source-link-body.ts",".././src/components/source-link/source-link-header.ts",".././src/components/source-link/source-link.ts",".././src/components/syntax-highlighter.ts",".././src/components/toggle.ts",".././src/helper/config.ts",".././src/helper/date-time.ts",".././src/helper/dom.ts",".././src/helper/events.ts",".././src/helper/file-tree.ts",".././src/helper/guid.ts",".././src/helper/store.ts",".././src/helper/tabs-store.ts",".././src/helper/url.ts",".././src/static.ts",".././node_modules/unescape-html/index.js",".././node_modules/marked/lib/marked.cjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/nonce",".././src/main.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MynahUI\"] = factory();\n\telse\n\t\troot[\"MynahUI\"] = factory();\n})(self, () => {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--mynah-font-family: var(--vscode-font-family), system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"Amazon Ember\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;font-size:var(--vscode-font-size, 13px);font-family:var(--mynah-font-family, \\\"system-ui\\\");--mynah-max-width: 2560px;--mynah-sizing-base: 0.25rem;--mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);--mynah-sizing-1: var(--mynah-sizing-base);--mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);--mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);--mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);--mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);--mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);--mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);--mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);--mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);--mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);--mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);--mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);--mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);--mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);--mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);--mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);--mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);--mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);--mynah-button-border-width: 1px;--mynah-border-width: 1px;--mynah-color-text-default: var(--vscode-foreground);--mynah-color-text-strong: var(--vscode-input-foreground);--mynah-color-text-weak: var(--vscode-disabledForeground);--mynah-color-text-link: var(--vscode-textLink-foreground);--mynah-color-text-input: var(--vscode-input-foreground);--mynah-color-bg: var(--vscode-sideBar-background);--mynah-color-bg-alt: var(--vscode-editorPane-background, var(--mynah-color-bg));--mynah-color-tab-active: var(--vscode-tab-activeBackground, var(--vscode-editor-background, var(--mynah-card-bg)));--mynah-color-light: rgba(0, 0, 0, 0.05);--mynah-color-deep: var(--vscode-checkbox-background);--mynah-color-deep-reverse: var(--vscode-checkbox-foreground);--mynah-color-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));--mynah-color-input-bg: var(--vscode-input-background);--mynah-color-highlight: rgba(255, 179, 0, 0.25);--mynah-color-highlight-text: #886411;--mynah-color-context-must-contain: #c7ebce;--mynah-color-context-should-contain: var(--vscode-sideBar-background);--mynah-color-context-must-not-contain: #f3cac7;--mynah-color-context-reverse: rgba(0, 0, 0, 0.5);--mynah-color-context-filter: 0.975;--mynah-color-syntax-bg: var(--vscode-terminal-dropBackground);--mynah-color-syntax-variable: var(--vscode-debugTokenExpression-name);--mynah-color-syntax-function: var(--vscode-gitDecoration-modifiedResourceForeground);--mynah-color-syntax-operator: var(--vscode-debugTokenExpression-name);--mynah-color-syntax-attr-value: var(--vscode-debugIcon-stepBackForeground);--mynah-color-syntax-attr: var(--vscode-debugTokenExpression-string);--mynah-color-syntax-property: var(--vscode-terminal-ansiCyan);--mynah-color-syntax-comment: var(--vscode-debugConsole-sourceForeground);--mynah-color-syntax-code: var(--vscode-terminal-ansiBlue);--mynah-syntax-code-font-family: var(--vscode-editor-font-family);--mynah-syntax-code-font-size: var(--vscode-editor-font-size, var(--mynah-font-size-medium));--mynah-color-status-info: var(--vscode-editorInfo-foreground);--mynah-color-status-success: var(--vscode-terminal-ansiGreen);--mynah-color-status-warning: var(--vscode-editorWarning-foreground);--mynah-color-status-error: var(--vscode-editorError-foreground);--mynah-color-button: var(--vscode-button-background);--mynah-color-button-reverse: var(--vscode-button-foreground);--mynah-color-alternate: var(--vscode-button-secondaryBackground);--mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);--mynah-color-code-bg: rgba(0, 0, 0, 0.25);--mynah-color-code-text: var(--vscode-textPreformat-foreground);--mynah-color-main: var(--vscode-button-background);--mynah-color-main-reverse: var(--vscode-button-foreground);--mynah-card-bg: var(--vscode-editor-background);--mynah-shadow-generic: none;--mynah-shadow-card: none;--mynah-shadow-card-more: none;--mynah-shadow-card-active: none;--mynah-shadow-feedback-form: none;--mynah-shadow-overlay: 0 0 25px 20px var(--mynah-color-bg);--mynah-font-size-xxsmall: 0.75rem;--mynah-font-size-xsmall: 0.85rem;--mynah-font-size-small: 0.95rem;--mynah-font-size-medium: 1rem;--mynah-font-size-large: 1.125rem;--mynah-font-size-xlarge: 1.175rem;--mynah-card-radius: var(--mynah-sizing-2);--mynah-button-radius: var(--mynah-sizing-1);--mynah-bottom-panel-transition: all 750ms cubic-bezier(0.25, 1, 0, 1);--mynah-xx-short-transition: all 100ms cubic-bezier(0.25, 1, 0, 1);--mynah-very-short-transition: all 500ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-transform: transform 500ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-long-transition: all 620ms cubic-bezier(0.35, 1, 0.15, 1);--mynah-pretty-long-transition: all 700ms cubic-bezier(0.25, 1, 0, 1);--mynah-very-long-transition: all 1500ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition: all 450ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-short-transition-rev: all 480ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-rev-opacity: opacity 650ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-reflection: all 900ms cubic-bezier(0.25, 1, 0, 1), opacity 750ms 400ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo: all 500ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo-bounce: all 600ms cubic-bezier(0.25, 1, 0, 1), transform 700ms cubic-bezier(0.25, 4, 0, 1);--mynah-short-transition-bounce: all 750ms cubic-bezier(0.25, 1, 0, 1), transform 1000ms cubic-bezier(0.15, 1.25, 0, 1);--mynah-text-flow-transition: all 700ms cubic-bezier(0.35, 1.2, 0, 1), transform 700ms cubic-bezier(0.2, 1.05, 0, 1);--mynah-mask-image: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(100% - var(--mynah-sizing-14)), transparent );--mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);--mynah-mask-image-main: linear-gradient( to bottom, transparent, black var(--mynah-sizing-6), black calc(100% - var(--mynah-sizing-6)), transparent );--mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);--mynah-mask-image-skeleton: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(50% - var(--mynah-sizing-14)), transparent );--mynah-policy-group-filter: saturate(0.5) brightness(0.85)}@keyframes horizontal-roll{0%{background-position:0% bottom}100%{background-position:-200% bottom}}@keyframes bounce{from{transform:translate3d(0, 0, 0)}to{transform:translate3d(0, calc(-1 * var(--mynah-sizing-2)), 0)}}@keyframes spinner-spin{to{transform:rotate(360deg)}}@keyframes typewriter{0%{visibility:hidden;opacity:0}1%{visibility:visible;opacity:0}100%{opacity:1;visibility:visible}}@keyframes typewriter-visibility-only{to{visibility:visible}}#mynah-wrapper{display:flex;flex-flow:column nowrap;margin:0 auto;width:100%;max-width:var(--mynah-max-width);box-sizing:border-box;height:100%;position:relative;overflow:hidden;justify-content:stretch;align-items:stretch}#mynah-wrapper>.mynah-ui-tab-contents-wrapper{flex:1;position:relative}button.mynah-button{border:none;min-width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);border-radius:var(--mynah-button-radius);background-color:var(--mynah-color-button);color:var(--mynah-color-button-reverse);box-shadow:var(--mynah-shadow-generic);cursor:pointer;transition:var(--mynah-very-short-transition);display:inline-flex;justify-content:center;align-items:center;outline:none;overflow:hidden;position:relative;transform:translate3d(0, 0, 0) scale(1.00001);padding:0;filter:brightness(0.9);opacity:.85}button.mynah-button.mynah-bottom-block-close-button{position:absolute;align-self:flex-end;transform:translate3d(var(--mynah-sizing-2), calc(-100% - var(--mynah-sizing-6)), 0px);background-color:var(--mynah-card-bg);color:var(--mynah-color-text-default);box-shadow:var(--mynah-shadow-feedback-form)}button.mynah-button[disabled=disabled]{opacity:.25 !important;pointer-events:none}button.mynah-button.mynah-button-secondary{background-color:transparent;color:inherit;box-shadow:none;opacity:.75;height:var(--mynah-sizing-6)}button.mynah-button.mynah-button-secondary:focus-visible,button.mynah-button.mynah-button-secondary:hover{opacity:1}button.mynah-button.mynah-button-secondary:active{box-shadow:none}button.mynah-button:focus-visible,button.mynah-button:hover{filter:brightness(1);opacity:1}button.mynah-button:active{filter:brightness(0.9);opacity:.85}button.mynah-button.mynah-icon-button{width:var(--mynah-sizing-10);height:var(--mynah-sizing-10)}button.mynah-button>.mynah-mutating-next-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-mutating-next-icon>i{font-size:var(--mynah-font-size-xlarge)}button.mynah-button>.mynah-mutating-next-icon>i:nth-child(2){display:none}button.mynah-button>.mynah-search-history-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-search-history-icon>i{font-size:2rem}button.mynah-button>.mynah-search-history-icon>i:nth-child(2){display:none}button.mynah-button.mynah-button-wait{background-color:var(--mynah-color-light);color:var(--mynah-color-text-default);box-shadow:0 5px 10px -10px var(--mynah-color-light);pointer-events:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:first-child{display:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:nth-child(2){display:block}button.mynah-button>span{white-space:nowrap;font-size:var(--mynah-font-size-medium);max-width:35vw;transition:var(--mynah-very-long-transition);overflow:hidden;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;padding-left:var(--mynah-sizing-3);padding-right:var(--mynah-sizing-3)}button.mynah-button>i+span{padding-left:var(--mynah-sizing-base)}.mynah-toggle-container{flex-flow:row nowrap;max-width:100%;overflow:hidden;align-items:center;position:relative;background:var(--mynah-color-context-should-contain);color:var(--mynah-color-context-reverse);justify-content:flex-start;overflow-y:hidden;overflow-x:auto;display:flex}.mynah-toggle-container>span{overflow:hidden;height:100%;min-width:var(--mynah-sizing-8);max-width:calc(3*var(--mynah-sizing-15));flex-shrink:0}.mynah-toggle-container>span>.mynah-toggle-option{display:none}.mynah-toggle-container>span>.mynah-toggle-option:not(:first-child)+.mynah-toggle-option-label{margin-left:calc(-1*var(--mynah-sizing-1))}.mynah-toggle-container>span>.mynah-toggle-option:not(:checked)+.mynah-toggle-option-label.indication:after{content:\\\"\\\";position:absolute;top:50%;margin-top:calc(-1*var(--mynah-sizing-half));left:var(--mynah-sizing-2);height:var(--mynah-sizing-1);width:var(--mynah-sizing-1);background-color:var(--mynah-color-status-success);border-radius:var(--mynah-sizing-1);border:1px solid var(--mynah-color-text-weak);opacity:.75}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label{cursor:pointer;pointer-events:all;position:relative;z-index:100;padding:0 var(--mynah-sizing-3) 0 var(--mynah-sizing-5);height:100%;box-sizing:border-box;display:inline-flex;overflow:hidden;justify-content:stretch;align-items:center;color:var(--mynah-color-text-weak);border-right:1px solid var(--mynah-color-border-default);border-top:1px solid transparent;background-color:var(--mynah-color-bg);opacity:.75;max-width:100%}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label,.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label *{user-select:none}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label>span{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label>.mynah-toggle-close-button{margin-left:var(--mynah-sizing-3);font-size:var(--mynah-font-size-xsmall);min-width:1em}.mynah-toggle-container>span>.mynah-toggle-option:checked+.mynah-toggle-option-label{border-top-color:var(--mynah-color-button);color:var(--mynah-color-text-default);opacity:1;background-color:var(--mynah-color-tab-active)}.mynah-toggle-container>span>.mynah-toggle-option[disabled=disabled]{pointer-events:none !important}.mynah-toggle-container>span>.mynah-toggle-option[disabled=disabled]+.mynah-toggle-option-label{pointer-events:none !important;opacity:.25}.mynah-toggle-container.mynah-toggle-direction-vertical{flex-flow:column nowrap;gap:var(--mynah-sizing-3)}.mynah-toggle-disabled-tooltip-container{max-width:30vw;display:inline-block;padding:var(--mynah-sizing-3);font-size:80%;opacity:.85}.mynah-ui-icon{font-style:normal;font-weight:normal;display:inline-flex;width:1em;height:1em;font-variant:normal;text-transform:none;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;color:inherit;background-color:currentColor}.mynah-ui-icon>span{display:none}.mynah-nav-tabs-wrapper{border-top:var(--mynah-button-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-color-bg);display:flex;align-items:center;overflow:hidden;box-shadow:var(--mynah-shadow-generic);z-index:100;min-height:var(--mynah-sizing-10);max-height:var(--mynah-sizing-10);position:relative}.mynah-nav-tabs-wrapper:after{content:\\\"\\\";position:absolute;left:0;right:0;bottom:0;width:auto;height:var(--mynah-button-border-width);background-color:var(--mynah-color-border-default)}.mynah-nav-tabs-wrapper>.mynah-toggle-container{height:100%;background:none;box-sizing:border-box}.mynah-nav-tabs-wrapper>.mynah-toggle-container>span{white-space:nowrap}.mynah-nav-tabs-wrapper:empty{display:none}.mynah-nav-tabs-wrapper.mynah-nav-tabs-loading,.mynah-nav-tabs-wrapper.mynah-nav-tabs-loading *{pointer-events:none}.mynah-nav-tabs-max-reached-overlay{min-width:max(20vw,100px);max-width:90vw}.mynah-card{text-decoration:none;outline:none;position:relative;transition:var(--mynah-short-transition-rev);box-sizing:border-box;display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-3);transform:translate3d(0, 0, 0);flex:auto 0 0;width:100%;overflow:hidden;border-radius:var(--mynah-card-radius)}.mynah-card.padding-none{padding:0}.mynah-card.padding-small{padding:var(--mynah-sizing-1)}.mynah-card.padding-medium{padding:var(--mynah-sizing-3)}.mynah-card.padding-large{padding:var(--mynah-sizing-5)}.mynah-card.background{background-color:var(--mynah-card-bg)}.mynah-card.border{border:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-card>*{z-index:10;position:relative}.mynah-card>.mynah-source-link-header{display:flex;justify-content:space-between;align-items:center;opacity:1;gap:var(--mynah-sizing-2);transition:var(--mynah-very-short-transition)}.mynah-card>.mynah-source-link-header>.mynah-source-thumbnail{font-style:normal;font-weight:normal;display:none;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);font-variant:normal;text-transform:none;border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:100%;background-size:85%;background-clip:content-box;background-position:center center;background-repeat:no-repeat;align-self:flex-start;box-sizing:border-box;background-color:var(--mynah-card-bg);position:relative;overflow:hidden}.mynah-card>.mynah-source-link-header>.mynah-source-thumbnail:after{content:\\\"\\\";pointer-events:none;box-sizing:border-box;position:absolute;top:0;left:0;right:0;bottom:0;width:auto;height:auto;border:2px solid var(--mynah-card-bg);border-radius:100%}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper{flex:1 1 0;display:flex;flex-flow:column nowrap;align-items:flex-start;gap:var(--mynah-sizing-half);max-width:100%;overflow:hidden;cursor:pointer}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper:hover>.mynah-source-link-title>.mynah-source-link-expand-icon{opacity:.75;align-self:baseline}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-title{font-size:var(--mynah-font-size-medium);font-weight:500;color:var(--mynah-color-text-strong);width:100%;display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-2);white-space:normal;text-overflow:ellipsis;text-decoration:none;outline:none;overflow:hidden}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-title>.mynah-source-link-expand-icon{transition:var(--mynah-short-transition-rev);opacity:0;color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);display:inline;padding:var(--mynah-sizing-1)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url{font-size:var(--mynah-font-size-xsmall);font-weight:300;color:var(--mynah-color-text-link);white-space:nowrap;text-overflow:ellipsis;text-decoration:none;outline:none;overflow:hidden;max-width:100%;position:relative;padding-bottom:var(--mynah-sizing-1);display:inline-block;transition:var(--mynah-short-transition-rev)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url:after{content:\\\"\\\";position:relative;display:block;bottom:0;left:0;width:100%;height:1px;border-radius:var(--mynah-sizing-half);background-color:currentColor;transform:translate3d(-30%, 0, 0);transition:var(--mynah-short-transition-rev);opacity:0}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url:hover:after{transform:translate3d(0, 0, 0);opacity:1}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:not(:last-child):after{content:\\\">\\\";margin-left:var(--mynah-sizing-1);margin-right:var(--mynah-sizing-1)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:nth-child(3)~span:not(:last-child){display:none}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:last-child{font-weight:bold}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:nth-child(3):not(:last-child):after{content:\\\"> ... >\\\"}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block{display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);margin-bottom:var(--mynah-sizing-half)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block:empty{display:none}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item{display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);padding:calc(var(--mynah-sizing-half)*3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:var(--mynah-button-radius);opacity:.75}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-icon{opacity:.5;font-size:var(--mynah-font-size-medium);color:var(--mynah-color-text-weak)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text{font-size:var(--mynah-font-size-xxsmall);color:var(--mynah-color-text-weak)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text::first-letter{text-transform:capitalize}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer{border-color:green;position:relative}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer:before{content:\\\"\\\";border-radius:var(--mynah-button-radius);position:absolute;top:0;left:0;right:0;bottom:0;background-color:green;opacity:.04}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer>.mynah-icon{opacity:1;color:green;border-radius:var(--mynah-button-radius);width:var(--mynah-sizing-3);height:var(--mynah-sizing-3)}.mynah-card>.mynah-card-votes-wrapper{align-items:center;gap:var(--mynah-sizing-2);display:flex;align-items:center;justify-content:flex-end;border-top:1px solid var(--mynah-color-border-default);padding-top:var(--mynah-sizing-3);font-size:var(--mynah-font-size-small)}.mynah-card>.mynah-card-votes-wrapper>span.mynah-feedback-thanks{overflow:hidden}.mynah-card>.mynah-card-votes-wrapper>.mynah-button>span{padding:0;font-size:var(--mynah-font-size-small);color:var(--mynah-color-text-link)}.mynah-card>.mynah-card-votes-wrapper>.mynah-vote-text{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-small)}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote{position:relative;overflow:visible;display:inline-flex;align-items:center;box-sizing:border-box;gap:var(--mynah-sizing-3)}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-radio{display:none}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label{z-index:10;cursor:pointer;font-size:var(--mynah-font-size-small);transition:var(--mynah-short-transition);width:var(--mynah-sizing-5);height:var(--mynah-sizing-5);display:inline-flex;justify-content:center;align-items:center;color:var(--mynah-color-text-weak);opacity:.5}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>*{pointer-events:none}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>i{height:calc(var(--mynah-sizing-6) + var(--mynah-sizing-half))}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-up-radio:checked~.mynah-vote-up{color:var(--mynah-color-text-default);opacity:1}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-down-radio:checked~.mynah-vote-down{color:var(--mynah-color-text-default);opacity:1}.mynah-card-body{flex:1;overflow:hidden;position:relative;display:block}.mynah-card-body a{pointer-events:bounding-box;color:var(--mynah-color-text-link)}.mynah-card-body>*:not(pre){font-size:var(--mynah-font-size-medium)}.mynah-card-body span[start][end]{display:none}.mynah-card-body>p:first-child,.mynah-card-body>p:first-child h1:first-child,.mynah-card-body>p:first-child h2:first-child,.mynah-card-body>p:first-child h3:first-child,.mynah-card-body>p:first-child h4:first-child,.mynah-card-body>p:first-child h5:first-child{margin-top:0}.mynah-card-body>p:first-child:last-of-type,.mynah-card-body>p p:first-child{margin:0}.mynah-card-body>*:not(div):not(pre),.mynah-card-body>div>*:not(div):not(pre){margin-block-start:.75em;margin-block-end:.75em;padding-bottom:1px !important;user-select:text}.mynah-card-body>*:not(div):not(pre):first-child,.mynah-card-body>div>*:not(div):not(pre):first-child{margin-block-start:0}.mynah-card-body>*:not(div):not(pre):empty,.mynah-card-body>div>*:not(div):not(pre):empty{display:none}.mynah-card-body>p:last-of-type,.mynah-card-body>div>p:last-of-type{margin-block-end:0}.mynah-card-body mark[reference-tracker],.mynah-card-body>div mark[reference-tracker]{background-color:var(--mynah-color-highlight);color:inherit;cursor:help}.mynah-card-body .amzn-mynah-search-result-highlight,.mynah-card-body>div .amzn-mynah-search-result-highlight{background-color:var(--mynah-color-highlight);color:var(--mynah-color-highlight-text)}.mynah-card-body .amzn-mynah-search-result-ellipsis,.mynah-card-body>div .amzn-mynah-search-result-ellipsis{display:inline-block;position:relative;padding-left:var(--mynah-sizing-2);margin-top:var(--mynah-sizing-1);margin-bottom:var(--mynah-sizing-1);font-size:calc(1em + var(--mynah-sizing-1)) !important;user-select:none;cursor:default;height:var(--mynah-sizing-7)}.mynah-card-body .amzn-mynah-search-result-ellipsis:before,.mynah-card-body>div .amzn-mynah-search-result-ellipsis:before{pointer-events:none;content:\\\"\\\";width:calc(1em + var(--mynah-sizing-2));height:calc(1em + var(--mynah-sizing-2));position:absolute;left:0;top:0;background-color:currentColor;opacity:.1;border-radius:var(--mynah-sizing-1)}#mynah-feedback-form-wrapper{display:flex;flex-flow:column nowrap;position:absolute;bottom:0;left:var(--mynah-sizing-2);right:var(--mynah-sizing-2);width:auto;box-sizing:border-box;z-index:9999999;opacity:0;transform:translate3d(0, 5vh, 0);transition:var(--mynah-bottom-panel-transition);overflow:visible}#mynah-feedback-form-wrapper:before{transition:all 400ms cubic-bezier(0.25, 0, 0, 1);content:\\\"\\\";position:absolute;right:calc(-1*var(--mynah-sizing-2));bottom:0;left:0;width:100vw;height:100vh;background-color:#000;opacity:0;pointer-events:none;transform:translate3d(0, 0, 0) scale(2);transform-origin:center center;z-index:-1}#mynah-feedback-form-wrapper>.mynah-bottom-block-close-button{transform:translate3d(calc(-1 * var(--mynah-sizing-1)), calc(-100% - var(--mynah-sizing-3)), 0px)}#mynah-feedback-form-wrapper+#mynah-wrapper{transition:var(--mynah-bottom-panel-transition)}#mynah-feedback-form-wrapper:not(.mynah-feedback-form-show),#mynah-feedback-form-wrapper:not(.mynah-feedback-form-show) *{pointer-events:none !important}#mynah-feedback-form-wrapper.mynah-feedback-form-show{opacity:1;transform:translate3d(0, 0, 0)}#mynah-feedback-form-wrapper.mynah-feedback-form-show:before{opacity:.15}#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper{transform:translate3d(0, 0px, 0) scale(0.95);transform-origin:top center;opacity:.25}#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper,#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper *{pointer-events:none !important}.mynah-feedback-form{pointer-events:all;box-sizing:border-box;transition:var(--mynah-short-transition-rev);transform:translate3d(0, 0, 0);display:flex;flex-flow:column;gap:var(--mynah-sizing-4);align-items:stretch;transform-origin:right bottom;z-index:10;position:relative;border:var(--mynah-button-border-width) solid var(--mynah-color-border-default);border-top-right-radius:var(--mynah-card-radius);border-top-left-radius:var(--mynah-card-radius);border-bottom:none;box-shadow:0px -25px 20px -25px rgba(0,0,0,.15);background-color:var(--mynah-color-bg);padding:var(--mynah-sizing-4)}.mynah-feedback-form>.mynah-feedback-form-header{display:flex;box-sizing:border-box;align-items:center;margin-bottom:var(--mynah-sizing-4)}.mynah-feedback-form>.mynah-feedback-form-header>h4{flex:1;margin:0}.mynah-feedback-form>.mynah-feedback-form-comment{background-color:transparent;padding:var(--mynah-sizing-3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);resize:none;width:100%;height:100px;max-height:25vh;border-radius:var(--mynah-sizing-2);font-size:var(--mynah-font-size-small);outline:none;color:var(--mynah-color-text-input);background-color:var(--mynah-card-bg);box-sizing:border-box;font-family:inherit}.mynah-feedback-form>.mynah-feedback-form-select-wrapper{position:relative;display:flex;box-sizing:border-box;padding:var(--mynah-sizing-3);justify-content:flex-end;align-items:center}.mynah-feedback-form>.mynah-feedback-form-select-wrapper>.mynah-feedback-form-select{position:absolute;width:100%;left:0;color:var(--mynah-color-text-default);border-radius:var(--mynah-card-radius);padding:var(--mynah-sizing-3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);-webkit-appearance:none;appearance:none;text-indent:1px;text-overflow:clip;outline:none}.mynah-feedback-form>.mynah-feedback-form-select-wrapper>.mynah-feedback-form-select-handle{color:var(--mynah-color-text-weak);pointer-events:none}.mynah-feedback-form>.mynah-feedback-form-buttons-container{display:flex;justify-content:flex-end;align-items:center;gap:var(--mynah-sizing-1);box-sizing:border-box}.mynah-overlay{position:fixed;left:0;top:0;width:100%;height:100%;overflow:hidden;box-sizing:border-box;pointer-events:none;z-index:1000000}.mynah-overlay.mynah-overlay-dim-outside:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-bg);transition:var(--mynah-short-transition-rev-opacity);opacity:.45}.mynah-overlay>.mynah-overlay-container{--overlayLeftPos: 0;--overlayTopPos: 0;--overlayInnerHorizontalOrigin: left;--overlayInnerVerticalOrigin: top;position:absolute;display:block;overflow:visible;border-radius:var(--mynah-card-radius);transform:translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0)}.mynah-overlay>.mynah-overlay-container .mynah-card,.mynah-overlay>.mynah-overlay-container .mynah-card *{pointer-events:none !important}.mynah-overlay>.mynah-overlay-container .mynah-card .mynah-syntax-highlighter-copy-buttons,.mynah-overlay>.mynah-overlay-container .mynah-card * .mynah-syntax-highlighter-copy-buttons{display:none}.mynah-overlay>.mynah-overlay-container .mynah-card .mynah-syntax-highlighter-copy-buttons~*:last-child,.mynah-overlay>.mynah-overlay-container .mynah-card * .mynah-syntax-highlighter-copy-buttons~*:last-child{margin-bottom:0 !important}.mynah-overlay>.mynah-overlay-container.background:before{content:\\\"\\\";background-color:transparent;transition:var(--mynah-short-transition-rev);position:absolute;top:0;left:0;right:0;bottom:0;width:auto;height:auto;pointer-events:none;box-sizing:border-box;opacity:0;border:var(--mynah-button-border-width) solid var(--mynah-color-border-default);z-index:100;box-shadow:var(--mynah-shadow-overlay);transform-origin:left center}.mynah-overlay>.mynah-overlay-container.background:after{content:\\\"\\\";position:absolute;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);left:0;top:0;opacity:0;border:var(--mynah-sizing-4);background-color:var(--mynah-card-bg);border-radius:inherit;transition:var(--mynah-short-transition-rev);transition-delay:20ms}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left{--overlayLeftPos: -100%;--overlayInnerHorizontalOrigin: right}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left:before,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left:before{transform-origin:right center}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left:after,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left:after{left:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center{--overlayInnerHorizontalOrigin: center;--overlayLeftPos: -50%}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center:after{left:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top{--overlayTopPos: -100%;--overlayInnerVerticalOrigin: bottom}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top:after,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top:after{top:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center{--overlayInnerVerticalOrigin: center;--overlayTopPos: -50%}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center:after{top:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container{display:inline-block;overflow:hidden;z-index:10;position:relative;transform:translate3d(0, 0, 0) scale(0.85);transform-origin:var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);transition:var(--mynah-short-transition-rev);width:100%}.mynah-overlay>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(0.85);transition:var(--mynah-short-transition-rev)}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container,.mynah-overlay>.mynah-overlay-container:before{opacity:0;transition-delay:0ms}.mynah-overlay:not(.mynah-overlay-open),.mynah-overlay:not(.mynah-overlay-open) *{pointer-events:none !important}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transform:translate3d(0, 0, 0) scale(1)}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(1);transition-delay:50ms;opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transition-delay:20ms}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:after{transition-delay:0ms;left:0;top:0;width:100%;height:100%;opacity:1}.mynah-overlay.mynah-overlay-open.mynah-overlay-close-on-outside-click{pointer-events:all}.mynah-notification{display:inline-flex;flex-flow:row nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);padding:var(--mynah-sizing-5);overflow:hidden;position:relative}.mynah-notification.mynah-notification-clickable{pointer-events:all;cursor:pointer}.mynah-notification>.mynah-ui-icon{font-size:var(--mynah-sizing-6)}.mynah-notification>.mynah-ui-icon-ok-circled{color:var(--mynah-color-status-success)}.mynah-notification>.mynah-ui-icon-info{color:var(--mynah-color-status-info)}.mynah-notification>.mynah-ui-icon-warning{color:var(--mynah-color-status-warning)}.mynah-notification>.mynah-ui-icon-error{color:var(--mynah-color-status-error)}.mynah-notification>.mynah-notification-container{flex:1;max-width:50vw;min-width:200px;display:inline-flex;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);overflow:hidden;position:relative}.mynah-notification>.mynah-notification-container>.mynah-notification-title{margin:0}.mynah-notification>.mynah-notification-container>.mynah-notification-title:empty{display:none}.mynah-notification>.mynah-notification-container>.mynah-notification-content{font-size:var(--mynah-font-size-small);display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:flex-start;gap:var(--mynah-sizing-2)}.mynah-notification>.mynah-notification-container>.mynah-notification-content>.mynah-button{align-self:stretch;background-color:var(--mynah-color-alternate);color:var(--mynah-color-alternate-reverse)}.mynah-syntax-highlighter{display:flex;flex-flow:column nowrap;box-sizing:border-box;overflow:hidden;margin:var(--mynah-sizing-1) 0;background-color:var(--mynah-card-bg);max-width:100%;border:var(--mynah-border-width) solid var(--mynah-color-border-default);position:relative;border-radius:var(--mynah-card-radius);line-height:normal;color:var(--mynah-color-text-default)}.mynah-syntax-highlighter+*:not(:empty){margin-top:var(--mynah-sizing-2)}.mynah-syntax-highlighter:before,.mynah-syntax-highlighter>.line-numbers-rows:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-syntax-bg);opacity:.2;pointer-events:none;user-select:none}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:flex;align-items:center;justify-content:flex-end;padding:var(--mynah-sizing-half);padding-left:var(--mynah-sizing-3);order:256000;box-sizing:border-box;margin:0;margin-block:0 !important;position:relative;border-top:1px solid var(--mynah-color-border-default)}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-border-default);opacity:.25}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons>.mynah-syntax-highlighter-language{flex:1;font-size:var(--mynah-font-size-xsmall);display:inline-block;opacity:.65;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons .mynah-button{min-width:var(--mynah-sizing-6);height:calc(var(--mynah-sizing-6) + var(--mynah-sizing-half))}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons .mynah-button *{font-size:var(--mynah-font-size-xsmall);color:var(--mynah-color-text-strong)}.mynah-syntax-highlighter.mynah-inline-code{display:inline-flex;max-width:100%;line-height:normal;padding:0 !important;margin:0;margin-block-start:0;margin-block-end:0;overflow:visible;border:none;color:var(--mynah-color-syntax-attr);margin-left:2px;margin-right:2px;padding-bottom:1px !important;margin-bottom:-1px;background-color:transparent !important}.mynah-syntax-highlighter.mynah-inline-code>pre{padding:0}.mynah-syntax-highlighter.mynah-inline-code:after{content:\\\"\\\";position:absolute;box-sizing:border-box;top:0;height:100%;left:-2px;width:calc(100% + 4px);border-radius:calc(var(--mynah-card-radius)/2);border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);z-index:-1}.mynah-syntax-highlighter.mynah-inline-code:before{left:-2px;width:calc(100% + 4px);border-radius:calc(var(--mynah-card-radius)/2);box-sizing:border-box}.mynah-syntax-highlighter>pre{padding:var(--mynah-sizing-2);margin:0;overflow-x:auto;overflow-y:hidden;position:relative}.mynah-syntax-highlighter>pre *,.mynah-syntax-highlighter>pre{font-size:var(--mynah-syntax-code-font-size) !important;font-family:var(--mynah-syntax-code-font-family) !important}.mynah-syntax-highlighter>pre>code{color:var(--mynah-color-syntax-code);filter:brightness(0.95);white-space:pre}.mynah-syntax-highlighter>pre>code,.mynah-syntax-highlighter>pre{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;hyphens:none}.mynah-syntax-highlighter>pre>code::selection,.mynah-syntax-highlighter>pre::selection{text-shadow:none;background:#b3d4fc}.mynah-syntax-highlighter>pre .token.comment,.mynah-syntax-highlighter>pre .token.prolog,.mynah-syntax-highlighter>pre .token.doctype,.mynah-syntax-highlighter>pre .token.cdata{color:var(--mynah-color-syntax-comment)}.mynah-syntax-highlighter>pre .token.punctuation{color:currentColor}.mynah-syntax-highlighter>pre .token.namespace{opacity:.7}.mynah-syntax-highlighter>pre .token.property,.mynah-syntax-highlighter>pre .token.tag,.mynah-syntax-highlighter>pre .token.boolean,.mynah-syntax-highlighter>pre .token.number,.mynah-syntax-highlighter>pre .token.constant,.mynah-syntax-highlighter>pre .token.symbol,.mynah-syntax-highlighter>pre .token.deleted{color:var(--mynah-color-syntax-property)}.mynah-syntax-highlighter>pre .token.selector,.mynah-syntax-highlighter>pre .token.attr-name,.mynah-syntax-highlighter>pre .token.string,.mynah-syntax-highlighter>pre .token.char,.mynah-syntax-highlighter>pre .token.builtin,.mynah-syntax-highlighter>pre .token.inserted{color:var(--mynah-color-syntax-attr)}.mynah-syntax-highlighter>pre .token.operator,.mynah-syntax-highlighter>pre .token.entity,.mynah-syntax-highlighter>pre .token.url,.mynah-syntax-highlighter>pre .language-css .token.string,.mynah-syntax-highlighter>pre .style .token.string{color:var(--mynah-color-syntax-operator)}.mynah-syntax-highlighter>pre .token.atrule,.mynah-syntax-highlighter>pre .token.attr-value,.mynah-syntax-highlighter>pre .token.class-name,.mynah-syntax-highlighter>pre .token.keyword{color:var(--mynah-color-syntax-attr-value)}.mynah-syntax-highlighter>pre .token.function{color:var(--mynah-color-syntax-function);font-weight:500}.mynah-syntax-highlighter>pre .token.regex,.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.variable{color:var(--mynah-color-syntax-variable);font-weight:500}.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.bold{font-weight:bold}.mynah-syntax-highlighter>pre .token.italic{font-style:italic}.mynah-syntax-highlighter>pre .token.entity{cursor:help}.mynah-syntax-highlighter>pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber;position:relative}.mynah-syntax-highlighter>.line-numbers-rows{position:absolute;background-color:inherit;top:var(--mynah-sizing-2);font-size:100%;left:0;width:var(--mynah-sizing-12);overflow:hidden;text-overflow:clip;letter-spacing:-1px;border-right:1px solid var(--mynah-color-border-default)}.mynah-syntax-highlighter>.line-numbers-rows>span,.mynah-syntax-highlighter>.line-numbers-rows{pointer-events:none;user-select:none}.mynah-syntax-highlighter>.line-numbers-rows>span{display:block;color:var(--mynah-color-border-default);padding-right:.8em;text-align:right}.mynah-ui-syntax-highlighter-highlight-tooltip{max-width:80vw;min-width:10vw;max-height:80vh;background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);border:var(--mynah-border-width) solid var(--mynah-color-border-default);padding:var(--mynah-sizing-5)}.mynah-ui-syntax-highlighter-highlight-tooltip .mynah-card-body>p:first-child:last-of-type,.mynah-ui-syntax-highlighter-highlight-tooltip .mynah-card-body>p p:first-child{margin:0}.mynah-chat-related-content-preview-wrapper{max-width:80vw;max-height:80vh}.mynah-chat-related-content-preview-wrapper>.mynah-chat-related-content-preview-content{padding:var(--mynah-sizing-3);background-color:var(--mynah-card-bg);border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:var(--mynah-card-radius)}.mynah-chat-prompt-overlay-buttons-container{display:inline-flex;flex-flow:column nowrap;gap:var(--mynah-sizing-2);justify-content:flex-start;align-items:flex-start}.mynah-chat-wrapper{transition:var(--mynah-bottom-panel-transition);position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;flex-flow:column nowrap;overflow:hidden;justify-content:space-around;align-items:stretch;display:none}.mynah-chat-wrapper>div[class^=mynah-chat]{width:100%;max-width:100%;box-sizing:border-box;padding-left:var(--mynah-sizing-4);padding-right:var(--mynah-sizing-4)}.mynah-chat-wrapper:after{transition:all 400ms cubic-bezier(0.25, 0, 0, 1);content:\\\"\\\";position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;background-color:#000;z-index:1000;opacity:0;pointer-events:none;transform:translate3d(0, 0, 0) scale(2);transform-origin:center center}.mynah-chat-wrapper>.mynah-chat-items-container{display:flex;flex:1 1 0%;overflow-x:hidden;overflow-y:auto;flex-flow:column-reverse nowrap;align-items:flex-start;padding:var(--mynah-sizing-4);gap:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card{display:inline-flex;flex-flow:column nowrap;position:relative;max-width:90%;transition:var(--mynah-text-flow-transition);transform:translate3d(0, min(50%, 25vh), 0) scale(0.95, 1.25);opacity:0;transform-origin:center bottom;gap:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.reveal{opacity:1;transform:translate3d(0, 0, 0) scale(1, 1)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-no-content{display:none !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream.typewriter-animating:before{content:\\\"\\\";pointer-events:none;position:absolute;overflow:hidden;border-bottom-right-radius:var(--mynah-card-radius);bottom:0;left:var(--mynah-border-width);right:var(--mynah-border-width);width:auto;height:var(--mynah-sizing-2);box-sizing:border-box;z-index:10;background-image:linear-gradient(90deg, var(--mynah-color-button) 0%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 50%, var(--mynah-color-button) 100%);background-position:0% bottom;background-size:200% var(--mynah-sizing-half);background-repeat:repeat-x;animation:horizontal-roll 1250ms linear infinite both}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream .typewriter-part{visibility:hidden}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card{max-width:100%;width:100%;padding:var(--mynah-sizing-3) 0 var(--mynah-sizing-3) 0;border-top:1px solid var(--mynah-color-border-default);margin-top:var(--mynah-sizing-3);padding-bottom:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-title{font-size:var(--mynah-font-size-large)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>span.invisible{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-code-result{min-width:70%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-card-icon-wrapper{background-color:var(--mynah-color-alternate);color:var(--mynah-color-alternate-reverse);padding:var(--mynah-sizing-2);border-radius:100%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-chat-items-spinner{overflow:visible;z-index:10000;gap:var(--mynah-sizing-2);justify-content:flex-start;align-items:center;transition:var(--mynah-very-short-transition)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-chat-items-spinner>span{position:relative;display:inline-block;width:var(--mynah-sizing-5);height:var(--mynah-sizing-5);border:var(--mynah-sizing-half) solid rgba(0,0,0,0);border-radius:50%;border-top-color:var(--mynah-color-button);animation:spinner-spin 1s ease-in-out infinite;transform-origin:center center;overflow:visible}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-chat-items-spinner>span:before{position:absolute;content:\\\"\\\";top:calc(-1*var(--mynah-sizing-half));left:calc(-1*var(--mynah-sizing-half));right:calc(-1*var(--mynah-sizing-half));bottom:calc(-1*var(--mynah-sizing-half));width:auto;height:auto;aspect-ratio:1;border:var(--mynah-sizing-half) solid var(--mynah-color-button);border-radius:50%;opacity:.15;box-sizing:border-box}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-chat-items-spinner>div{opacity:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body{padding-left:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>.mynah-syntax-highlighter{filter:contrast(1.15) brightness(0.85)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h1:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h2:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h3:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h4:first-child{margin-top:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content{margin-top:var(--mynah-sizing-3);padding-top:var(--mynah-sizing-4);border-top:var(--mynah-button-border-width) solid var(--mynah-color-border-default)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-title{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);margin:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content .mynah-source-link-title{font-size:var(--mynah-font-size-small);font-weight:400}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card :hover::before{box-shadow:var(--mynah-shadow-card) !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question{display:inline-flex;flex-flow:column nowrap;position:relative;gap:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-text{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);font-style:italic}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper{display:inline-flex;flex-flow:row wrap;max-width:100%;gap:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option{padding:var(--mynah-sizing-2);color:var(--mynah-color-text-default);border:var(--mynah-border-width) solid currentColor;border-radius:var(--mynah-card-radius);cursor:pointer;font-size:var(--mynah-font-size-xsmall);max-width:100%;overflow:hidden;display:inline-flex;gap:var(--mynah-sizing-2);align-items:center;user-select:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option *{pointer-events:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-disabled{opacity:.5 !important;cursor:default !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option:not(:hover){opacity:.75}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-success{color:var(--mynah-color-status-success)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-error{color:var(--mynah-color-status-error)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-warning{color:var(--mynah-color-status-warning)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-info{color:var(--mynah-color-status-info)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content{display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-2);overflow:hidden;position:relative}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item{max-width:100%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card{padding:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item .amzn-mynah-search-result-highlight{background-color:inherit;color:inherit}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:not(:nth-of-type(1)){display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:nth-of-type(1){margin-bottom:calc(-1*var(--mynah-sizing-4));pointer-events:none;position:relative;-webkit-mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-12)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-12)), transparent 100%);mask-size:100% 100%;-webkit-mask-image:linear-gradient(to top, transparent var(--mynah-sizing-1), black 70%)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:nth-of-type(2)~.mynah-chat-item-card-related-content-show-more{display:flex}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more{display:none;max-width:80%;z-index:10000;margin-block-start:0;margin-block-end:0;align-self:center;height:var(--mynah-sizing-8);filter:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more>span,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more>i{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt{align-self:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-chat-item-card-icon-wrapper{align-self:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-followup-question,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-followup-question,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content{align-items:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card{box-shadow:0px 0px 5px -5px var(--mynah-color-button);padding:var(--mynah-sizing-4);background-color:var(--mynah-color-button);border-bottom-right-radius:0;border:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card>.mynah-card-body{color:var(--mynah-color-button-reverse)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card{background-color:var(--mynah-color-status-warning)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-empty:empty{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream.mynah-chat-item-empty.stream-ended{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-card{border-bottom-left-radius:0;max-height:100%;flex:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-icon-wrapper{align-self:flex-start}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact{opacity:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header{opacity:1}.mynah-chat-wrapper.loading>.mynah-chat-items-container{padding-bottom:var(--mynah-sizing-14)}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child>.mynah-card{min-width:100px;min-height:var(--mynah-sizing-14)}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child>.mynah-card>.mynah-card-votes-wrapper{display:none}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child.mynah-chat-item-empty .mynah-chat-items-spinner{display:inline-flex}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child.mynah-chat-item-empty .mynah-chat-items-spinner>span{flex:0 0 auto}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child:not(.mynah-chat-item-empty):before{content:\\\"\\\";pointer-events:none;position:absolute;overflow:hidden;border-bottom-right-radius:var(--mynah-card-radius);bottom:0;left:var(--mynah-border-width);right:var(--mynah-border-width);width:auto;height:var(--mynah-sizing-2);box-sizing:border-box;z-index:10;background-image:linear-gradient(90deg, var(--mynah-color-button) 0%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 50%, var(--mynah-color-button) 100%);background-position:0% bottom;background-size:200% var(--mynah-sizing-half);background-repeat:repeat-x;animation:horizontal-roll 1250ms linear infinite both}.mynah-chat-wrapper.loading>.mynah-chat-overflowing-intermediate-block{display:flex;flex-flow:column nowrap;max-height:0;overflow:visible;justify-content:flex-end}.mynah-chat-wrapper.loading>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button{display:inline-flex}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block{display:flex;flex-flow:column nowrap;max-height:0;overflow:visible;justify-content:flex-end;align-items:center;border-bottom:1px solid var(--mynah-color-border-default)}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block.hidden{display:none}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button{margin-bottom:var(--mynah-sizing-2);display:none;min-height:var(--mynah-sizing-8);background-color:var(--mynah-card-bg);padding-left:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button:active{box-shadow:none;filter:none}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button *{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper{display:block;padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt{display:flex;flex-flow:column nowrap;overflow:hidden;box-sizing:border-box;border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper{display:flex;flex-flow:row nowrap;overflow:hidden;box-sizing:border-box;gap:var(--mynah-sizing-1);align-items:flex-start;position:relative;color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper{align-self:flex-start;display:inline-flex;align-items:center;position:relative;gap:var(--mynah-sizing-1);box-sizing:border-box}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper.hidden{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper>.mynah-chat-prompt-input-command-text{user-select:none;cursor:pointer;font-family:var(--mynah-font-family);font-size:var(--mynah-font-size-large);color:var(--mynah-color-text-input);font-weight:bold}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper{display:block;width:100%;position:relative;align-self:center}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input{font-family:var(--mynah-font-family);border:none;resize:none;background-color:rgba(0,0,0,0);font-size:var(--mynah-font-size-large);color:var(--mynah-color-text-input);outline:none;width:100%;max-height:20vh;min-height:1.5rem}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input::placeholder{color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input:not(.mynah-chat-prompt-input-sizer){position:absolute;height:100%;top:0;left:0;padding:0}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input-sizer{display:block;width:100%;opacity:0;visibility:hidden;pointer-events:none;overflow:hidden;white-space:pre-wrap;word-break:break-word}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button{background-color:transparent;width:auto;min-width:0;height:auto;padding-top:1px}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button i{font-size:calc(2*var(--mynah-font-size-xsmall));color:var(--mynah-color-button);height:var(--mynah-sizing-6);padding-left:0}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper.no-text~.mynah-chat-prompt-button:not([disabled]),.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button[disabled]{pointer-events:none;opacity:.25}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper.no-text~.mynah-chat-prompt-button:not([disabled]) i,.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button[disabled] i{color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper:empty{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item{position:relative;display:inline-block;max-width:250px;cursor:pointer}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:after{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;border-radius:var(--mynah-card-radius);opacity:0;transition:var(--mynah-short-transition-rev);z-index:8000;background-color:var(--mynah-color-alternate)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-chat-attachment-delete-icon{color:var(--mynah-color-alternate-reverse);opacity:0;transition:var(--mynah-short-transition-rev);position:absolute;left:50%;top:50%;width:30px;height:30px;margin-left:-15px;margin-top:-15px;z-index:9000}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-chat-attachment-delete-icon>i{width:30px;height:30px}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:hover:after{opacity:.75}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:hover>.mynah-chat-attachment-delete-icon{opacity:1}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card{pointer-events:none !important}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card *{pointer-events:none !important}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card>.mynah-card-body{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper.input-has-focus>.mynah-chat-prompt{border:var(--mynah-border-width) solid var(--mynah-color-button)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt-chars-indicator{width:100%;font-size:var(--mynah-font-size-xsmall);padding-top:var(--mynah-sizing-2);opacity:.5;display:flex;align-items:center;justify-content:flex-end;font-style:italic}.mynah-chat-wrapper>.mynah-chat-prompt-input-info{display:flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;padding:0 var(--mynah-sizing-4) var(--mynah-sizing-4) var(--mynah-sizing-4);margin-top:calc(-1*var(--mynah-sizing-2))}.mynah-chat-wrapper>.mynah-chat-prompt-input-info,.mynah-chat-wrapper>.mynah-chat-prompt-input-info *{font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-prompt-input-info:empty{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-input-info>*{margin:0;margin-block-start:0;margin-block-end:0;margin-top:0;margin-bottom:0}.mynah-chat-command-selector{display:flex;box-sizing:border-box;background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);width:100%;pointer-events:all;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start}.mynah-chat-command-selector>.mynah-chat-command-selector-group{display:flex;box-sizing:border-box;width:100%;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start;padding:var(--mynah-sizing-2)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-group-title{margin:0;color:var(--mynah-color-text-weak);opacity:.75;padding:var(--mynah-sizing-2) var(--mynah-sizing-3)}.mynah-chat-command-selector>.mynah-chat-command-selector-group:not(:last-child){border-bottom:1px solid var(--mynah-color-border-default)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command{display:flex;box-sizing:border-box;width:100%;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;overflow:hidden;cursor:pointer;padding:var(--mynah-sizing-2) var(--mynah-sizing-3);color:var(--mynah-color-text-default);border-radius:var(--mynah-card-radius);transition:var(--mynah-short-transition-rev);gap:var(--mynah-sizing-1)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command{background-color:var(--mynah-color-button)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover *,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command *{color:var(--mynah-color-button-reverse)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command>.mynah-chat-command-selector-command-name{font-family:var(--mynah-font-family);font-size:var(--mynah-font-size-large);font-weight:bold;flex:0 1 0%}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command>.mynah-chat-command-selector-command-description{font-size:var(--mynah-font-size-small);opacity:.75;flex:1 0 100%}.mynah-chat-item-tree-view-wrapper{margin:0;margin-block-end:0 !important;margin-block-start:0 !important}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container{background-color:var(--mynah-card-bg);color:var(--mynah-color-text-default);margin-block-start:0 !important;margin-block-end:0 !important;position:relative;border-radius:var(--mynah-card-radius);border:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;position:relative;padding:var(--mynah-sizing-3);gap:var(--mynah-sizing-3);border-bottom:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title>h4{margin:0}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-border-default);opacity:.25;pointer-events:none}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view{padding:var(--mynah-sizing-3);overflow:hidden;box-sizing:border-box;width:100%;overflow-y:hidden;overflow-x:auto}.mynah-chat-item-tree-view-wrapper-label{border-top-left-radius:var(--mynah-card-radius);border-top-right-radius:var(--mynah-card-radius);background-color:var(--mynah-color-alternate);margin-bottom:0px;padding:var(--mynah-sizing-4)}.mynah-chat-item-tree-view-wrapper-feedback-label{padding-left:var(--mynah-sizing-4)}.mynah-chat-item-tree-view-wrapper-feedback-div{float:right}.mynah-chat-item-tree-view-wrapper-feedback-div button:first-child{margin-right:var(--mynah-sizing-2)}.mynah-chat-item-tree-view-license{color:var(--mynah-color-text-weak)}.mynah-chat-item-tree-view-license:before{content:\\\"\\\";position:absolute;left:0;right:0;top:0;bottom:0;background-color:var(--mynah-color-button);opacity:.07;pointer-events:none}.mynah-chat-item-tree-view-license ul{margin:0;padding-left:var(--mynah-sizing-8)}.mynah-chat-item-tree-view-license ul>li:not(:first-child){margin-top:var(--mynah-sizing-2)}.mynah-chat-item-tree-view-license ul>li .mynah-card-body p{margin:0}.mynah-chat-item-tree-view-license .mynah-chat-item-tree-view-license-dropdown-button>span{max-width:unset}.outer-container{display:flex}.outer-container:not(:empty){margin-top:var(--mynah-sizing-3)}.snippet-card-container.vertical-overflow pre{position:relative;-webkit-mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-16)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-16)), transparent 100%);mask-size:100% 100%}.snippet-card-container{box-sizing:border-box;max-width:100%;max-height:calc(2*var(--mynah-sizing-12))}.snippet-card-container>.mynah-button{position:absolute;background-color:var(--mynah-card-bg) !important;width:var(--mynah-sizing-7) !important;min-width:var(--mynah-sizing-7) !important;max-width:var(--mynah-sizing-7) !important;height:var(--mynah-sizing-7) !important;border-radius:100%;right:calc(-1*var(--mynah-sizing-2));top:calc(-1*var(--mynah-sizing-2));border:var(--mynah-border-width) solid var(--mynah-color-border-default);opacity:1 !important;filter:brightness(0.95)}.snippet-card-container:not(:hover)>.mynah-button{display:none}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter{border:none}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter pre{text-overflow:ellipsis}.mynah-prompt-input-snippet-attachment-overlay{max-width:90vw;max-height:70vh}.mynah-prompt-input-snippet-attachment-overlay>.mynah-card-body>.mynah-syntax-highlighter{max-height:calc(70vh - var(--mynah-sizing-12)) !important}.snippet-card-container,.mynah-prompt-input-snippet-attachment-overlay{position:relative;overflow:visible;width:100%;box-sizing:border-box}.snippet-card-container>.mynah-card-body,.mynah-prompt-input-snippet-attachment-overlay>.mynah-card-body{max-height:100%}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter,.mynah-prompt-input-snippet-attachment-overlay>.mynah-card-body>.mynah-syntax-highlighter{user-select:none;pointer-events:none;margin:0;max-height:100%;overflow:hidden}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons,.mynah-prompt-input-snippet-attachment-overlay>.mynah-card-body>.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:none}.snippet-card-container pre,.mynah-prompt-input-snippet-attachment-overlay pre{text-overflow:ellipsis}.mynah-collapsible-content-wrapper{display:block;box-sizing:border-box;width:100%;overflow:hidden;position:relative}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox{display:none}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label{box-sizing:border-box;display:flex;flex-flow:column nowrap;overflow:hidden;align-items:flex-start;justify-content:stretch;padding:var(--mynah-sizing-2);gap:var(--mynah-sizing-2)}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-title-wrapper{gap:var(--mynah-sizing-2);display:flex;flex-flow:row nowrap;box-sizing:border-box;width:100%;overflow:hidden;justify-content:flex-start;align-items:flex-start;pointer-events:all;cursor:pointer;user-select:none}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-title-wrapper>.mynah-collapsible-content-label-title-text{flex:1;overflow:hidden}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-content-wrapper{overflow:hidden;box-sizing:border-box;width:100%}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox:checked+.mynah-collapsible-content-label>.mynah-collapsible-content-label-content-wrapper{display:none}body,html{background-color:var(--mynah-color-bg);color:var(--mynah-color-text-default);height:100%;width:100%;overflow:hidden;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:600}::-webkit-scrollbar{width:2px;height:2px;opacity:.25}::-webkit-scrollbar:horizontal{width:0px;height:0px}*:focus{outline:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/styles/_variables.scss\",\"webpack://./src/styles/_animations.scss\",\"webpack://./src/styles/components/_main-container.scss\",\"webpack://./src/styles/components/_button.scss\",\"webpack://./src/styles/components/_toggle.scss\",\"webpack://./src/styles/components/_icon.scss\",\"webpack://./src/styles/components/_nav-tabs.scss\",\"webpack://./src/styles/components/card/_card.scss\",\"webpack://./src/styles/components/_source-link-header.scss\",\"webpack://./src/styles/components/_votes-wrapper.scss\",\"webpack://./src/styles/components/card/_card-body.scss\",\"webpack://./src/styles/components/_feedback-form.scss\",\"webpack://./src/styles/components/_overlay.scss\",\"webpack://./src/styles/components/_notification.scss\",\"webpack://./src/styles/components/_syntax-highlighter.scss\",\"webpack://./src/styles/components/chat/_chat-wrapper.scss\",\"webpack://./src/styles/components/chat/_chat-items-container.scss\",\"webpack://./src/styles/components/chat/_chat-items-bottom-animator.scss\",\"webpack://./src/styles/_mixins.scss\",\"webpack://./src/styles/components/chat/_chat-overflowing-intermediate-block.scss\",\"webpack://./src/styles/components/chat/_chat-prompt-wrapper.scss\",\"webpack://./src/styles/components/chat/_chat-command-selector.scss\",\"webpack://./src/styles/components/chat/_chat-item-tree-view.scss\",\"webpack://./src/styles/components/chat/_chat-prompt-code-snippet.scss\",\"webpack://./src/styles/components/_collapsible-content.scss\",\"webpack://./src/styles/styles.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\":root {\\n --mynah-font-family: var(--vscode-font-family), system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\",\\n \\\"Amazon Ember\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;\\n font-size: var(--vscode-font-size, 13px);\\n font-family: var(--mynah-font-family, \\\"system-ui\\\");\\n --mynah-max-width: 2560px;\\n --mynah-sizing-base: 0.25rem;\\n --mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);\\n --mynah-sizing-1: var(--mynah-sizing-base);\\n --mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);\\n --mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);\\n --mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);\\n --mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);\\n --mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);\\n --mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);\\n --mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);\\n --mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);\\n --mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);\\n --mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);\\n --mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);\\n --mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);\\n --mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);\\n --mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);\\n --mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);\\n --mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);\\n --mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);\\n --mynah-button-border-width: 1px;\\n --mynah-border-width: 1px;\\n\\n --mynah-color-text-default: var(--vscode-foreground);\\n --mynah-color-text-strong: var(--vscode-input-foreground);\\n --mynah-color-text-weak: var(--vscode-disabledForeground);\\n --mynah-color-text-link: var(--vscode-textLink-foreground);\\n --mynah-color-text-input: var(--vscode-input-foreground);\\n\\n --mynah-color-bg: var(--vscode-sideBar-background);\\n --mynah-color-bg-alt: var(--vscode-editorPane-background, var(--mynah-color-bg));\\n --mynah-color-tab-active: var(--vscode-tab-activeBackground, var(--vscode-editor-background, var(--mynah-card-bg)));\\n --mynah-color-light: rgba(0, 0, 0, 0.05);\\n\\n --mynah-color-deep: var(--vscode-checkbox-background);\\n --mynah-color-deep-reverse: var(--vscode-checkbox-foreground);\\n --mynah-color-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));\\n --mynah-color-input-bg: var(--vscode-input-background);\\n\\n --mynah-color-highlight: rgba(255, 179, 0, 0.25);\\n --mynah-color-highlight-text: #886411;\\n\\n --mynah-color-context-must-contain: #c7ebce;\\n --mynah-color-context-should-contain: var(--vscode-sideBar-background);\\n --mynah-color-context-must-not-contain: #f3cac7;\\n --mynah-color-context-reverse: rgba(0, 0, 0, 0.5);\\n --mynah-color-context-filter: 0.975;\\n\\n --mynah-color-syntax-bg: var(--vscode-terminal-dropBackground);\\n --mynah-color-syntax-variable: var(--vscode-debugTokenExpression-name);\\n --mynah-color-syntax-function: var(--vscode-gitDecoration-modifiedResourceForeground);\\n --mynah-color-syntax-operator: var(--vscode-debugTokenExpression-name);\\n --mynah-color-syntax-attr-value: var(--vscode-debugIcon-stepBackForeground);\\n --mynah-color-syntax-attr: var(--vscode-debugTokenExpression-string);\\n --mynah-color-syntax-property: var(--vscode-terminal-ansiCyan);\\n --mynah-color-syntax-comment: var(--vscode-debugConsole-sourceForeground);\\n --mynah-color-syntax-code: var(--vscode-terminal-ansiBlue);\\n --mynah-syntax-code-font-family: var(--vscode-editor-font-family);\\n --mynah-syntax-code-font-size: var(--vscode-editor-font-size, var(--mynah-font-size-medium));\\n\\n --mynah-color-status-info: var(--vscode-editorInfo-foreground);\\n --mynah-color-status-success: var(--vscode-terminal-ansiGreen);\\n --mynah-color-status-warning: var(--vscode-editorWarning-foreground);\\n --mynah-color-status-error: var(--vscode-editorError-foreground);\\n\\n --mynah-color-button: var(--vscode-button-background);\\n --mynah-color-button-reverse: var(--vscode-button-foreground);\\n\\n --mynah-color-alternate: var(--vscode-button-secondaryBackground);\\n --mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);\\n\\n --mynah-color-code-bg: rgba(0, 0, 0, 0.25);\\n --mynah-color-code-text: var(--vscode-textPreformat-foreground);\\n\\n --mynah-color-main: var(--vscode-button-background);\\n --mynah-color-main-reverse: var(--vscode-button-foreground);\\n\\n --mynah-card-bg: var(--vscode-editor-background);\\n\\n --mynah-shadow-generic: none; //0 5px 10px -10px rgba(0, 0, 0, 0.25);\\n --mynah-shadow-card: none; //0 10px 20px -15px rgba(0, 0, 0, 0.25);\\n --mynah-shadow-card-more: none; //0 10px 20px -10px rgba(0, 0, 0, 0.5);\\n --mynah-shadow-card-active: none; //0 10px 20px -10px rgba(0, 0, 0, 0.5);\\n --mynah-shadow-feedback-form: none; //0 0px 40px 0px var(--mynah-color-bg);\\n --mynah-shadow-overlay: 0 0 25px 20px var(--mynah-color-bg);\\n\\n --mynah-font-size-xxsmall: 0.75rem;\\n --mynah-font-size-xsmall: 0.85rem;\\n --mynah-font-size-small: 0.95rem;\\n --mynah-font-size-medium: 1rem;\\n --mynah-font-size-large: 1.125rem;\\n --mynah-font-size-xlarge: 1.175rem;\\n\\n --mynah-card-radius: var(--mynah-sizing-2);\\n --mynah-button-radius: var(--mynah-sizing-1);\\n\\n --mynah-bottom-panel-transition: all 750ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-xx-short-transition: all 100ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-very-short-transition: all 500ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-transform: transform 500ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-long-transition: all 620ms cubic-bezier(0.35, 1, 0.15, 1);\\n --mynah-pretty-long-transition: all 700ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-very-long-transition: all 1500ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition: all 450ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-short-transition-rev: all 480ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-rev-opacity: opacity 650ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-reflection: all 900ms cubic-bezier(0.25, 1, 0, 1),\\n opacity 750ms 400ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo: all 500ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo-bounce: all 600ms cubic-bezier(0.25, 1, 0, 1),\\n transform 700ms cubic-bezier(0.25, 4, 0, 1);\\n --mynah-short-transition-bounce: all 750ms cubic-bezier(0.25, 1, 0, 1),\\n transform 1000ms cubic-bezier(0.15, 1.25, 0, 1);\\n --mynah-text-flow-transition: all 700ms cubic-bezier(0.35, 1.2, 0, 1),\\n transform 700ms cubic-bezier(0.2, 1.05, 0, 1);\\n\\n --mynah-mask-image: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(100% - var(--mynah-sizing-14)),\\n transparent\\n );\\n --mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);\\n --mynah-mask-image-main: linear-gradient(\\n to bottom,\\n transparent,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent\\n );\\n --mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);\\n\\n --mynah-mask-image-skeleton: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(50% - var(--mynah-sizing-14)),\\n transparent\\n );\\n\\n --mynah-policy-group-filter: saturate(0.5) brightness(0.85);\\n}\\n\",\"@keyframes horizontal-roll {\\n 0% {\\n background-position: 0% bottom;\\n }\\n 100% {\\n background-position: -200% bottom;\\n }\\n}\\n\\n@keyframes bounce {\\n from {\\n transform: translate3d(0, 0, 0);\\n }\\n to {\\n transform: translate3d(0, calc(-1 * var(--mynah-sizing-2)), 0);\\n }\\n}\\n\\n@keyframes spinner-spin {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes typewriter {\\n 0% {\\n visibility: hidden;\\n opacity: 0;\\n }\\n 1% {\\n visibility: visible;\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n visibility: visible;\\n }\\n}\\n@keyframes typewriter-visibility-only {\\n to {\\n visibility: visible;\\n }\\n}\\n\",\"$smoothbezier: cubic-bezier(0.25, 0, 0, 1);\\n$smoothduration: 400ms;\\n#mynah-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n margin: 0 auto;\\n width: 100%;\\n max-width: var(--mynah-max-width);\\n box-sizing: border-box;\\n height: 100%;\\n position: relative;\\n overflow: hidden;\\n justify-content: stretch;\\n align-items: stretch;\\n\\n > .mynah-ui-tab-contents-wrapper {\\n flex: 1;\\n position: relative;\\n }\\n}\\n\",\"button.mynah-button {\\n border: none;\\n min-width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n border-radius: var(--mynah-button-radius);\\n background-color: var(--mynah-color-button);\\n color: var(--mynah-color-button-reverse);\\n box-shadow: var(--mynah-shadow-generic);\\n cursor: pointer;\\n transition: var(--mynah-very-short-transition);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n outline: none;\\n overflow: hidden;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(1.00001);\\n padding: 0;\\n filter: brightness(0.9);\\n opacity: 0.85;\\n &.mynah-bottom-block-close-button {\\n position: absolute;\\n align-self: flex-end;\\n transform: translate3d(var(--mynah-sizing-2), calc(-100% - var(--mynah-sizing-6)), 0px);\\n background-color: var(--mynah-card-bg);\\n color: var(--mynah-color-text-default);\\n box-shadow: var(--mynah-shadow-feedback-form);\\n }\\n &[disabled=\\\"disabled\\\"] {\\n opacity: 0.25 !important;\\n pointer-events: none;\\n }\\n &.mynah-button-secondary {\\n background-color: transparent;\\n color: inherit;\\n box-shadow: none;\\n opacity: 0.75;\\n height: var(--mynah-sizing-6);\\n &:focus-visible,\\n &:hover {\\n opacity: 1;\\n }\\n &:active {\\n box-shadow: none;\\n }\\n }\\n &:focus-visible,\\n &:hover {\\n filter: brightness(1);\\n opacity: 1;\\n }\\n &:active {\\n filter: brightness(0.9);\\n opacity: 0.85;\\n }\\n &.mynah-icon-button {\\n width: var(--mynah-sizing-10);\\n height: var(--mynah-sizing-10);\\n }\\n > .mynah-mutating-next-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: var(--mynah-font-size-xlarge);\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n > .mynah-search-history-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: 2rem;\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n &.mynah-button-wait {\\n background-color: var(--mynah-color-light);\\n color: var(--mynah-color-text-default);\\n box-shadow: 0 5px 10px -10px var(--mynah-color-light);\\n pointer-events: none;\\n > .mynah-mutating-next-icon > i {\\n &:first-child {\\n display: none;\\n }\\n &:nth-child(2) {\\n display: block;\\n }\\n }\\n }\\n > span {\\n white-space: nowrap;\\n font-size: var(--mynah-font-size-medium);\\n max-width: 35vw;\\n transition: var(--mynah-very-long-transition);\\n overflow: hidden;\\n box-sizing: border-box;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-left: var(--mynah-sizing-3);\\n padding-right: var(--mynah-sizing-3);\\n }\\n > i + span {\\n padding-left: var(--mynah-sizing-base);\\n }\\n}\\n\",\".mynah-toggle-container {\\n flex-flow: row nowrap;\\n max-width: 100%;\\n overflow: hidden;\\n align-items: center;\\n position: relative;\\n background: var(--mynah-color-context-should-contain);\\n color: var(--mynah-color-context-reverse);\\n justify-content: flex-start;\\n overflow-y: hidden;\\n overflow-x: auto;\\n display: flex;\\n > span {\\n overflow: hidden;\\n height: 100%;\\n min-width: var(--mynah-sizing-8);\\n max-width: calc(3 * var(--mynah-sizing-15));\\n flex-shrink: 0;\\n > .mynah-toggle-option {\\n display: none;\\n &:not(:first-child) + .mynah-toggle-option-label {\\n margin-left: calc(-1 * var(--mynah-sizing-1));\\n }\\n &:not(:checked) + .mynah-toggle-option-label {\\n &.indication:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 50%;\\n margin-top: calc(-1 * var(--mynah-sizing-half));\\n left: var(--mynah-sizing-2);\\n height: var(--mynah-sizing-1);\\n width: var(--mynah-sizing-1);\\n background-color: var(--mynah-color-status-success);\\n border-radius: var(--mynah-sizing-1);\\n border: 1px solid var(--mynah-color-text-weak);\\n opacity: 0.75;\\n }\\n }\\n & + .mynah-toggle-option-label {\\n cursor: pointer;\\n pointer-events: all;\\n position: relative;\\n z-index: 100;\\n padding: 0 var(--mynah-sizing-3) 0 var(--mynah-sizing-5);\\n height: 100%;\\n box-sizing: border-box;\\n display: inline-flex;\\n overflow: hidden;\\n justify-content: stretch;\\n align-items: center;\\n color: var(--mynah-color-text-weak);\\n border-right: 1px solid var(--mynah-color-border-default);\\n border-top: 1px solid transparent;\\n background-color: var(--mynah-color-bg);\\n opacity: 0.75;\\n max-width: 100%;\\n &,\\n & * {\\n user-select: none;\\n }\\n > span {\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 100%;\\n display: block;\\n }\\n > .mynah-toggle-close-button {\\n margin-left: var(--mynah-sizing-3);\\n font-size: var(--mynah-font-size-xsmall);\\n min-width: 1em;\\n }\\n }\\n &:checked + .mynah-toggle-option-label {\\n border-top-color: var(--mynah-color-button);\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n background-color: var(--mynah-color-tab-active);\\n }\\n &[disabled=\\\"disabled\\\"] {\\n pointer-events: none !important;\\n & + .mynah-toggle-option-label {\\n pointer-events: none !important;\\n opacity: 0.25;\\n }\\n }\\n }\\n }\\n\\n &.mynah-toggle-direction-vertical {\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n }\\n}\\n\\n.mynah-toggle-disabled-tooltip-container {\\n max-width: 30vw;\\n display: inline-block;\\n padding: var(--mynah-sizing-3);\\n font-size: 80%;\\n opacity: 0.85;\\n}\\n\",\".mynah-ui-icon {\\n font-style: normal;\\n font-weight: normal;\\n display: inline-flex;\\n width: 1em;\\n height: 1em;\\n font-variant: normal;\\n text-transform: none;\\n -webkit-mask-size: 100%;\\n mask-size: 100%;\\n -webkit-mask-position: center center;\\n mask-position: center center;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n color: inherit;\\n background-color: currentColor;\\n > span {\\n display: none;\\n }\\n}\\n\",\".mynah-nav-tabs-wrapper {\\n border-top: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-color-bg);\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n box-shadow: var(--mynah-shadow-generic);\\n z-index: 100;\\n min-height: var(--mynah-sizing-10);\\n max-height: var(--mynah-sizing-10);\\n position: relative;\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: var(--mynah-button-border-width);\\n background-color: var(--mynah-color-border-default);\\n }\\n\\n > .mynah-toggle-container {\\n height: 100%;\\n background: none;\\n box-sizing: border-box;\\n > span {\\n white-space: nowrap;\\n }\\n }\\n &:empty {\\n display: none;\\n }\\n\\n &.mynah-nav-tabs-loading,\\n &.mynah-nav-tabs-loading * {\\n pointer-events: none;\\n }\\n}\\n\\n.mynah-nav-tabs-max-reached-overlay {\\n min-width: max(20vw, 100px);\\n max-width: 90vw;\\n}\\n\",\".mynah-card {\\n text-decoration: none;\\n outline: none;\\n position: relative;\\n transition: var(--mynah-short-transition-rev);\\n box-sizing: border-box;\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n transform: translate3d(0, 0, 0);\\n flex: auto 0 0;\\n width: 100%;\\n overflow: hidden;\\n border-radius: var(--mynah-card-radius);\\n\\n &.padding {\\n &-none {\\n padding: 0;\\n }\\n &-small {\\n padding: var(--mynah-sizing-1);\\n }\\n &-medium {\\n padding: var(--mynah-sizing-3);\\n }\\n &-large {\\n padding: var(--mynah-sizing-5);\\n }\\n }\\n &.background {\\n background-color: var(--mynah-card-bg);\\n }\\n &.border {\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n }\\n\\n > * {\\n z-index: 10;\\n position: relative;\\n }\\n\\n @import '../source-link-header';\\n @import '../votes-wrapper';\\n}\\n\\n@import 'card-body';\\n\",\"> .mynah-source-link-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n opacity: 1;\\n gap: var(--mynah-sizing-2);\\n transition: var(--mynah-very-short-transition);\\n > .mynah-source-thumbnail {\\n font-style: normal;\\n font-weight: normal;\\n display: none;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n font-variant: normal;\\n text-transform: none;\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: 100%;\\n background-size: 85%;\\n background-clip: content-box;\\n background-position: center center;\\n background-repeat: no-repeat;\\n align-self: flex-start;\\n box-sizing: border-box;\\n background-color: var(--mynah-card-bg);\\n position: relative;\\n overflow: hidden;\\n &:after {\\n content: \\\"\\\";\\n pointer-events: none;\\n box-sizing: border-box;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: auto;\\n border: 2px solid var(--mynah-card-bg);\\n border-radius: 100%;\\n }\\n }\\n > .mynah-source-link-title-wrapper {\\n flex: 1 1 0;\\n display: flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-half);\\n max-width: 100%;\\n overflow: hidden;\\n cursor: pointer;\\n &:hover > .mynah-source-link-title > .mynah-source-link-expand-icon {\\n opacity: 0.75;\\n align-self: baseline;\\n }\\n > .mynah-source-link-title {\\n font-size: var(--mynah-font-size-medium);\\n font-weight: 500;\\n color: var(--mynah-color-text-strong);\\n width: 100%;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-2);\\n white-space: normal;\\n text-overflow: ellipsis;\\n text-decoration: none;\\n outline: none;\\n overflow: hidden;\\n > .mynah-source-link-expand-icon {\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n display: inline;\\n padding: var(--mynah-sizing-1);\\n }\\n }\\n > .mynah-source-link-url {\\n font-size: var(--mynah-font-size-xsmall);\\n font-weight: 300;\\n color: var(--mynah-color-text-link);\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n text-decoration: none;\\n outline: none;\\n overflow: hidden;\\n max-width: 100%;\\n position: relative;\\n padding-bottom: var(--mynah-sizing-1);\\n display: inline-block;\\n transition: var(--mynah-short-transition-rev);\\n &:after {\\n content: \\\"\\\";\\n position: relative;\\n display: block;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 1px;\\n border-radius: var(--mynah-sizing-half);\\n background-color: currentColor;\\n transform: translate3d(-30%, 0, 0);\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n }\\n &:hover {\\n &:after {\\n transform: translate3d(0, 0, 0);\\n opacity: 1;\\n }\\n }\\n > span {\\n &:not(:last-child):after {\\n content: \\\">\\\";\\n margin-left: var(--mynah-sizing-1);\\n margin-right: var(--mynah-sizing-1);\\n }\\n &:nth-child(3) ~ span:not(:last-child) {\\n display: none;\\n }\\n &:last-child {\\n font-weight: bold;\\n }\\n &:nth-child(3):not(:last-child):after {\\n content: \\\"> ... >\\\";\\n }\\n }\\n }\\n > .mynah-title-meta-block {\\n display: flex;\\n flex-flow: row wrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n margin-bottom: var(--mynah-sizing-half);\\n &:empty {\\n display: none;\\n }\\n > .mynah-title-meta-block-item {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n padding: calc(var(--mynah-sizing-half) * 3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-button-radius);\\n opacity: 0.75;\\n > .mynah-icon {\\n opacity: 0.5;\\n font-size: var(--mynah-font-size-medium);\\n color: var(--mynah-color-text-weak);\\n }\\n > .mynah-title-meta-block-item-text {\\n font-size: var(--mynah-font-size-xxsmall);\\n color: var(--mynah-color-text-weak);\\n &::first-letter {\\n text-transform: capitalize;\\n }\\n }\\n &.approved-answer {\\n border-color: green;\\n position: relative;\\n &:before {\\n content: \\\"\\\";\\n border-radius: var(--mynah-button-radius);\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: green;\\n opacity: 0.04;\\n }\\n > .mynah-icon {\\n opacity: 1;\\n color: green;\\n border-radius: var(--mynah-button-radius);\\n width: var(--mynah-sizing-3);\\n height: var(--mynah-sizing-3);\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"> .mynah-card-votes-wrapper {\\n align-items: center;\\n gap: var(--mynah-sizing-2);\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n border-top: 1px solid var(--mynah-color-border-default);\\n padding-top: var(--mynah-sizing-3);\\n font-size: var(--mynah-font-size-small);\\n > span.mynah-feedback-thanks {\\n overflow: hidden;\\n }\\n > .mynah-button > span {\\n padding: 0;\\n font-size: var(--mynah-font-size-small);\\n color: var(--mynah-color-text-link);\\n }\\n > .mynah-vote-text {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-small);\\n }\\n > .mynah-card-vote {\\n position: relative;\\n overflow: visible;\\n display: inline-flex;\\n align-items: center;\\n box-sizing: border-box;\\n gap: var(--mynah-sizing-3);\\n > .mynah-vote-radio {\\n display: none;\\n }\\n > .mynah-vote-label {\\n z-index: 10;\\n cursor: pointer;\\n font-size: var(--mynah-font-size-small);\\n transition: var(--mynah-short-transition);\\n width: var(--mynah-sizing-5);\\n height: var(--mynah-sizing-5);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n color: var(--mynah-color-text-weak);\\n opacity: 0.5;\\n > * {\\n pointer-events: none;\\n }\\n > i {\\n height: calc(var(--mynah-sizing-6) + var(--mynah-sizing-half));\\n }\\n }\\n > .mynah-vote-up-radio:checked {\\n & ~ .mynah-vote-up {\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n }\\n }\\n > .mynah-vote-down-radio:checked {\\n & ~ .mynah-vote-down {\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n }\\n }\\n }\\n}\\n\",\".mynah-card-body {\\n flex: 1;\\n overflow: hidden;\\n position: relative;\\n display: block;\\n\\n a {\\n pointer-events: bounding-box;\\n color: var(--mynah-color-text-link);\\n }\\n\\n > *:not(pre) {\\n font-size: var(--mynah-font-size-medium);\\n }\\n span[start][end] {\\n display: none;\\n }\\n > p:first-child {\\n &,\\n & h1:first-child,\\n & h2:first-child,\\n & h3:first-child,\\n & h4:first-child,\\n & h5:first-child {\\n margin-top: 0;\\n }\\n }\\n > p:first-child:last-of-type,\\n > p p:first-child {\\n margin: 0;\\n }\\n &,\\n & > div {\\n > *:not(div):not(pre) {\\n margin-block-start: 0.75em;\\n margin-block-end: 0.75em;\\n padding-bottom: 1px !important;\\n &:first-child {\\n margin-block-start: 0;\\n }\\n user-select: text;\\n &:empty {\\n display: none;\\n }\\n }\\n > p:last-of-type {\\n margin-block-end: 0;\\n }\\n mark[reference-tracker] {\\n background-color: var(--mynah-color-highlight);\\n color: inherit;\\n cursor: help;\\n }\\n .amzn-mynah-search-result-highlight {\\n background-color: var(--mynah-color-highlight);\\n color: var(--mynah-color-highlight-text);\\n }\\n .amzn-mynah-search-result-ellipsis {\\n display: inline-block;\\n position: relative;\\n padding-left: var(--mynah-sizing-2);\\n margin-top: var(--mynah-sizing-1);\\n margin-bottom: var(--mynah-sizing-1);\\n font-size: calc(1em + var(--mynah-sizing-1)) !important;\\n user-select: none;\\n cursor: default;\\n height: var(--mynah-sizing-7);\\n\\n &:before {\\n pointer-events: none;\\n content: \\\"\\\";\\n width: calc(1em + var(--mynah-sizing-2));\\n height: calc(1em + var(--mynah-sizing-2));\\n position: absolute;\\n left: 0;\\n top: 0;\\n background-color: currentColor;\\n opacity: 0.1;\\n border-radius: var(--mynah-sizing-1);\\n }\\n }\\n }\\n}\\n\",\"#mynah-feedback-form-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n position: absolute;\\n bottom: 0;\\n left: var(--mynah-sizing-2);\\n right: var(--mynah-sizing-2);\\n width: auto;\\n box-sizing: border-box;\\n z-index: 9999999;\\n opacity: 0;\\n transform: translate3d(0, 5vh, 0);\\n transition: var(--mynah-bottom-panel-transition);\\n overflow: visible;\\n &:before {\\n transition: all 400ms cubic-bezier(0.25, 0, 0, 1);\\n content: \\\"\\\";\\n position: absolute;\\n right: calc(-1 * var(--mynah-sizing-2));\\n bottom: 0;\\n left: 0;\\n width: 100vw;\\n height: 100vh;\\n background-color: black;\\n opacity: 0;\\n pointer-events: none;\\n transform: translate3d(0, 0, 0) scale(2);\\n transform-origin: center center;\\n z-index: -1;\\n }\\n > .mynah-bottom-block-close-button {\\n transform: translate3d(calc(-1 * var(--mynah-sizing-1)), calc(-100% - var(--mynah-sizing-3)), 0px);\\n }\\n & + #mynah-wrapper {\\n transition: var(--mynah-bottom-panel-transition);\\n }\\n &:not(.mynah-feedback-form-show) {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n &.mynah-feedback-form-show {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n &:before {\\n opacity: 0.15;\\n }\\n & + #mynah-wrapper {\\n transform: translate3d(0, 0px, 0) scale(0.95);\\n transform-origin: top center;\\n opacity: 0.25;\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n }\\n}\\n\\n.mynah-feedback-form {\\n pointer-events: all;\\n box-sizing: border-box;\\n transition: var(--mynah-short-transition-rev);\\n transform: translate3d(0, 0, 0);\\n display: flex;\\n flex-flow: column;\\n gap: var(--mynah-sizing-4);\\n align-items: stretch;\\n transform-origin: right bottom;\\n z-index: 10;\\n position: relative;\\n border: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n border-top-right-radius: var(--mynah-card-radius);\\n border-top-left-radius: var(--mynah-card-radius);\\n border-bottom: none;\\n box-shadow: 0px -25px 20px -25px rgba(0, 0, 0, 0.15);\\n background-color: var(--mynah-color-bg);\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-feedback-form-header {\\n display: flex;\\n box-sizing: border-box;\\n align-items: center;\\n margin-bottom: var(--mynah-sizing-4);\\n > h4 {\\n flex: 1;\\n margin: 0;\\n }\\n }\\n\\n > .mynah-feedback-form-comment {\\n background-color: transparent;\\n padding: var(--mynah-sizing-3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n resize: none;\\n width: 100%;\\n height: 100px;\\n max-height: 25vh;\\n border-radius: var(--mynah-sizing-2);\\n font-size: var(--mynah-font-size-small);\\n outline: none;\\n color: var(--mynah-color-text-input);\\n background-color: var(--mynah-card-bg);\\n box-sizing: border-box;\\n font-family: inherit;\\n }\\n\\n > .mynah-feedback-form-select-wrapper {\\n position: relative;\\n display: flex;\\n box-sizing: border-box;\\n padding: var(--mynah-sizing-3);\\n justify-content: flex-end;\\n align-items: center;\\n > .mynah-feedback-form-select {\\n position: absolute;\\n width: 100%;\\n left: 0;\\n color: var(--mynah-color-text-default);\\n border-radius: var(--mynah-card-radius);\\n padding: var(--mynah-sizing-3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n -webkit-appearance: none;\\n appearance: none;\\n text-indent: 1px;\\n text-overflow: clip;\\n outline: none;\\n }\\n > .mynah-feedback-form-select-handle {\\n color: var(--mynah-color-text-weak);\\n pointer-events: none;\\n }\\n }\\n\\n > .mynah-feedback-form-buttons-container {\\n display: flex;\\n justify-content: flex-end;\\n align-items: center;\\n gap: var(--mynah-sizing-1);\\n box-sizing: border-box;\\n }\\n}\\n\",\".mynah-overlay {\\n position: fixed;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n box-sizing: border-box;\\n pointer-events: none;\\n z-index: 1000000;\\n &.mynah-overlay-dim-outside {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-bg);\\n transition: var(--mynah-short-transition-rev-opacity);\\n opacity: 0.45;\\n }\\n }\\n > .mynah-overlay-container {\\n --overlayLeftPos: 0;\\n --overlayTopPos: 0;\\n --overlayInnerHorizontalOrigin: left;\\n --overlayInnerVerticalOrigin: top;\\n position: absolute;\\n display: block;\\n overflow: visible;\\n border-radius: var(--mynah-card-radius);\\n\\n .mynah-card,\\n .mynah-card * {\\n pointer-events: none !important;\\n .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n & ~ *:last-child {\\n margin-bottom: 0 !important;\\n }\\n }\\n }\\n\\n &.background {\\n &:before {\\n content: \\\"\\\";\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: auto;\\n pointer-events: none;\\n box-sizing: border-box;\\n opacity: 0;\\n border: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n z-index: 100;\\n box-shadow: var(--mynah-shadow-overlay);\\n transform-origin: left center;\\n }\\n\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n left: 0;\\n top: 0;\\n opacity: 0;\\n border: var(--mynah-sizing-4);\\n background-color: var(--mynah-card-bg);\\n border-radius: inherit;\\n transition: var(--mynah-short-transition-rev);\\n transition-delay: 20ms;\\n }\\n }\\n\\n &.horizontal-direction {\\n &-to-left,\\n &-from-end-to-left {\\n --overlayLeftPos: -100%;\\n --overlayInnerHorizontalOrigin: right;\\n &:before{\\n transform-origin: right center;\\n }\\n &:after {\\n left: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerHorizontalOrigin: center;\\n --overlayLeftPos: -50%;\\n &:after {\\n left: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n &.vertical-direction {\\n &-to-top,\\n &-from-end-to-top {\\n --overlayTopPos: -100%;\\n --overlayInnerVerticalOrigin: bottom;\\n &:after {\\n top: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerVerticalOrigin: center;\\n --overlayTopPos: -50%;\\n &:after {\\n top: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n\\n > .mynah-overlay-inner-container {\\n display: inline-block;\\n overflow: hidden;\\n z-index: 10;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transform-origin: var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);\\n transition: var(--mynah-short-transition-rev);\\n width: 100%;\\n // box-shadow: var(--mynah-shadow-overlay);\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transition: var(--mynah-short-transition-rev);\\n }\\n > .mynah-overlay-inner-container,\\n &:before {\\n opacity: 0;\\n transition-delay: 0ms;\\n }\\n\\n transform: translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0);\\n }\\n &:not(.mynah-overlay-open) {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n\\n &.mynah-overlay-open {\\n > .mynah-overlay-container {\\n > .mynah-overlay-inner-container {\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(1);\\n transition-delay: 50ms;\\n opacity: 1;\\n }\\n > .mynah-overlay-inner-container {\\n transition-delay: 20ms;\\n }\\n > .mynah-overlay-inner-container {\\n opacity: 1;\\n }\\n &:after {\\n transition-delay: 0ms;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 1;\\n }\\n }\\n &.mynah-overlay-close-on-outside-click {\\n pointer-events: all;\\n }\\n }\\n}\\n\",\".mynah-notification {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n padding: var(--mynah-sizing-5);\\n overflow: hidden;\\n position: relative;\\n &.mynah-notification-clickable {\\n pointer-events: all;\\n cursor: pointer;\\n }\\n > .mynah-ui-icon {\\n font-size: var(--mynah-sizing-6);\\n &- {\\n &ok-circled {\\n color: var(--mynah-color-status-success);\\n }\\n &info {\\n color: var(--mynah-color-status-info);\\n }\\n &warning {\\n color: var(--mynah-color-status-warning);\\n }\\n &error {\\n color: var(--mynah-color-status-error);\\n }\\n }\\n }\\n > .mynah-notification-container {\\n flex: 1;\\n max-width: 50vw;\\n min-width: 200px;\\n display: inline-flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n overflow: hidden;\\n position: relative;\\n > .mynah-notification-title {\\n margin: 0;\\n &:empty {\\n display: none;\\n }\\n }\\n > .mynah-notification-content {\\n font-size: var(--mynah-font-size-small);\\n display: flex;\\n flex-flow: column nowrap;\\n justify-content: flex-start;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-2);\\n > .mynah-button {\\n align-self: stretch;\\n background-color: var(--mynah-color-alternate);\\n color: var(--mynah-color-alternate-reverse);\\n }\\n }\\n }\\n}\\n\",\".mynah-syntax-highlighter {\\n display: flex;\\n flex-flow: column nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n margin: var(--mynah-sizing-1) 0;\\n background-color: var(--mynah-card-bg);\\n max-width: 100%;\\n & + *:not(:empty) {\\n margin-top: var(--mynah-sizing-2);\\n }\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n position: relative;\\n border-radius: var(--mynah-card-radius);\\n line-height: normal;\\n color: var(--mynah-color-text-default);\\n &:before,\\n & > .line-numbers-rows:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-syntax-bg);\\n opacity: 0.2;\\n pointer-events: none;\\n user-select: none;\\n }\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n padding: var(--mynah-sizing-half);\\n padding-left: var(--mynah-sizing-3);\\n order: 256000;\\n box-sizing: border-box;\\n margin: 0;\\n margin-block: 0 !important;\\n position: relative;\\n border-top: 1px solid var(--mynah-color-border-default);\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-border-default);\\n opacity: 0.25;\\n }\\n > .mynah-syntax-highlighter-language {\\n flex: 1;\\n font-size: var(--mynah-font-size-xsmall);\\n display: inline-block;\\n opacity: 0.65;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n .mynah-button {\\n min-width: var(--mynah-sizing-6);\\n height: calc(var(--mynah-sizing-6) + var(--mynah-sizing-half));\\n * {\\n font-size: var(--mynah-font-size-xsmall);\\n color: var(--mynah-color-text-strong);\\n }\\n }\\n }\\n &.mynah-inline-code {\\n display: inline-flex;\\n max-width: 100%;\\n line-height: normal;\\n padding: 0 !important;\\n margin: 0;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n overflow: visible;\\n border: none;\\n color: var(--mynah-color-syntax-attr);\\n margin-left: 2px;\\n margin-right: 2px;\\n padding-bottom: 1px !important;\\n margin-bottom: -1px;\\n background-color: transparent !important;\\n > pre {\\n padding: 0;\\n }\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n box-sizing: border-box;\\n top: 0;\\n height: 100%;\\n left: -2px;\\n width: calc(100% + 4px);\\n border-radius: calc(var(--mynah-card-radius) / 2);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n z-index: -1;\\n }\\n &:before {\\n left: -2px;\\n width: calc(100% + 4px);\\n border-radius: calc(var(--mynah-card-radius) / 2);\\n box-sizing: border-box;\\n }\\n }\\n > pre {\\n padding: var(--mynah-sizing-2);\\n margin: 0;\\n overflow-x: auto;\\n overflow-y: hidden;\\n position: relative;\\n\\n *,\\n & {\\n font-size: var(--mynah-syntax-code-font-size) !important;\\n font-family: var(--mynah-syntax-code-font-family) !important;\\n }\\n > code {\\n color: var(--mynah-color-syntax-code);\\n filter: brightness(0.95);\\n white-space: pre;\\n }\\n\\n > code,\\n & {\\n text-align: left;\\n white-space: pre;\\n word-spacing: normal;\\n word-break: normal;\\n word-wrap: normal;\\n tab-size: 4;\\n hyphens: none;\\n }\\n > code::selection,\\n &::selection {\\n text-shadow: none;\\n background: #b3d4fc;\\n }\\n\\n .token.comment,\\n .token.prolog,\\n .token.doctype,\\n .token.cdata {\\n color: var(--mynah-color-syntax-comment);\\n }\\n\\n .token.punctuation {\\n color: currentColor;\\n }\\n\\n .token.namespace {\\n opacity: 0.7;\\n }\\n\\n .token.property,\\n .token.tag,\\n .token.boolean,\\n .token.number,\\n .token.constant,\\n .token.symbol,\\n .token.deleted {\\n color: var(--mynah-color-syntax-property);\\n }\\n\\n .token.selector,\\n .token.attr-name,\\n .token.string,\\n .token.char,\\n .token.builtin,\\n .token.inserted {\\n color: var(--mynah-color-syntax-attr);\\n }\\n\\n .token.operator,\\n .token.entity,\\n .token.url,\\n .language-css .token.string,\\n .style .token.string {\\n color: var(--mynah-color-syntax-operator);\\n }\\n\\n .token.atrule,\\n .token.attr-value,\\n .token.class-name,\\n .token.keyword {\\n color: var(--mynah-color-syntax-attr-value);\\n }\\n\\n .token.function {\\n color: var(--mynah-color-syntax-function);\\n font-weight: 500;\\n }\\n \\n .token.regex,\\n .token.important,\\n .token.variable {\\n color: var(--mynah-color-syntax-variable);\\n font-weight: 500;\\n }\\n\\n .token.important,\\n .token.bold {\\n font-weight: bold;\\n }\\n .token.italic {\\n font-style: italic;\\n }\\n\\n .token.entity {\\n cursor: help;\\n }\\n\\n &.line-numbers {\\n position: relative;\\n padding-left: 3.8em;\\n counter-reset: linenumber;\\n position: relative;\\n }\\n }\\n > .line-numbers-rows {\\n position: absolute;\\n background-color: inherit;\\n > span,\\n & {\\n pointer-events: none;\\n user-select: none;\\n }\\n top: var(--mynah-sizing-2);\\n font-size: 100%;\\n left: 0;\\n width: var(--mynah-sizing-12);\\n overflow: hidden;\\n text-overflow: clip;\\n letter-spacing: -1px;\\n border-right: 1px solid var(--mynah-color-border-default);\\n\\n > span {\\n display: block;\\n color: var(--mynah-color-border-default);\\n padding-right: 0.8em;\\n text-align: right;\\n }\\n }\\n}\\n\\n.mynah-ui-syntax-highlighter-highlight-tooltip {\\n max-width: 80vw;\\n min-width: 10vw;\\n max-height: 80vh;\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n padding: var(--mynah-sizing-5);\\n .mynah-card-body {\\n > p:first-child:last-of-type,\\n > p p:first-child {\\n margin: 0;\\n }\\n }\\n}\\n\",\".mynah-chat-related-content-preview-wrapper {\\n max-width: 80vw;\\n max-height: 80vh;\\n > .mynah-chat-related-content-preview-content {\\n padding: var(--mynah-sizing-3);\\n background-color: var(--mynah-card-bg);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-card-radius);\\n }\\n}\\n.mynah-chat-prompt-overlay-buttons-container {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-2);\\n justify-content: flex-start;\\n align-items: flex-start;\\n}\\n.mynah-chat-wrapper {\\n transition: var(--mynah-bottom-panel-transition);\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n justify-content: space-around;\\n align-items: stretch;\\n display: none;\\n > div[class^=\\\"mynah-chat\\\"] {\\n width: 100%;\\n max-width: 100%;\\n box-sizing: border-box;\\n padding-left: var(--mynah-sizing-4);\\n padding-right: var(--mynah-sizing-4);\\n }\\n &:after {\\n transition: all $smoothduration $smoothbezier;\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n background-color: black;\\n z-index: 1000;\\n opacity: 0;\\n pointer-events: none;\\n transform: translate3d(0, 0, 0) scale(2);\\n transform-origin: center center;\\n }\\n\\n @import \\\"chat-items-container\\\";\\n @import \\\"chat-overflowing-intermediate-block\\\";\\n @import \\\"chat-prompt-wrapper\\\";\\n}\\n\\n@import 'chat-command-selector';\\n@import \\\"chat-item-tree-view\\\";\\n@import \\\"chat-prompt-code-snippet\\\";\\n\",\"> .mynah-chat-items-container {\\n display: flex;\\n flex: 1 1 0%;\\n overflow-x: hidden;\\n overflow-y: auto;\\n flex-flow: column-reverse nowrap;\\n align-items: flex-start;\\n padding: var(--mynah-sizing-4);\\n gap: var(--mynah-sizing-4);\\n .mynah-chat-item-card {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n position: relative;\\n max-width: 90%;\\n transition: var(--mynah-text-flow-transition);\\n transform: translate3d(0, min(50%, 25vh), 0) scale(0.95, 1.25);\\n opacity: 0;\\n transform-origin: center bottom;\\n gap: var(--mynah-sizing-4);\\n &.reveal {\\n opacity: 1;\\n transform: translate3d(0, 0, 0) scale(1, 1);\\n }\\n &.mynah-chat-item-no-content {\\n display: none !important;\\n }\\n\\n &.mynah-chat-item-answer-stream {\\n &.typewriter-animating {\\n @import \\\"chat-items-bottom-animator\\\";\\n }\\n .typewriter-part {\\n visibility: hidden;\\n }\\n }\\n\\n .mynah-chat-item-card {\\n max-width: 100%;\\n width: 100%;\\n padding: var(--mynah-sizing-3) 0 var(--mynah-sizing-3) 0;\\n border-top: 1px solid var(--mynah-color-border-default);\\n margin-top: var(--mynah-sizing-3);\\n padding-bottom: 0;\\n .mynah-chat-item-card-related-content > .mynah-chat-item-card-related-content-title {\\n font-size: var(--mynah-font-size-large);\\n }\\n }\\n\\n > span.invisible {\\n display: none;\\n }\\n\\n &.mynah-chat-item-code-result {\\n min-width: 70%;\\n }\\n > .mynah-chat-item-card-icon-wrapper {\\n background-color: var(--mynah-color-alternate);\\n color: var(--mynah-color-alternate-reverse);\\n padding: var(--mynah-sizing-2);\\n border-radius: 100%;\\n }\\n > .mynah-card {\\n > .mynah-chat-items-spinner {\\n overflow: visible;\\n z-index: 10000;\\n gap: var(--mynah-sizing-2);\\n justify-content: flex-start;\\n align-items: center;\\n transition: var(--mynah-very-short-transition);\\n > span {\\n position: relative;\\n display: inline-block;\\n width: var(--mynah-sizing-5);\\n height: var(--mynah-sizing-5);\\n border: var(--mynah-sizing-half) solid rgba(0, 0, 0, 0);\\n border-radius: 50%;\\n border-top-color: var(--mynah-color-button);\\n animation: spinner-spin 1s ease-in-out infinite;\\n transform-origin: center center;\\n overflow: visible;\\n &:before {\\n position: absolute;\\n content: \\\"\\\";\\n top: calc(-1 * var(--mynah-sizing-half));\\n left: calc(-1 * var(--mynah-sizing-half));\\n right: calc(-1 * var(--mynah-sizing-half));\\n bottom: calc(-1 * var(--mynah-sizing-half));\\n width: auto;\\n height: auto;\\n aspect-ratio: 1; // Just to make sure that the spinner is a circle\\n border: var(--mynah-sizing-half) solid var(--mynah-color-button);\\n border-radius: 50%;\\n opacity: 0.15;\\n box-sizing: border-box;\\n }\\n }\\n > div {\\n opacity: 1;\\n }\\n }\\n > .mynah-card-body {\\n & > div {\\n > .mynah-syntax-highlighter {\\n filter: contrast(1.15) brightness(0.85);\\n }\\n > h1,\\n > h2,\\n > h3,\\n > h4 {\\n &:first-child {\\n margin-top: 0;\\n }\\n }\\n }\\n > .mynah-chat-item-card-related-content {\\n margin-top: var(--mynah-sizing-3);\\n padding-top: var(--mynah-sizing-4);\\n border-top: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n > .mynah-chat-item-card-related-content-title {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n margin: 0;\\n }\\n .mynah-source-link-title {\\n font-size: var(--mynah-font-size-small);\\n font-weight: 400;\\n }\\n }\\n padding-left: 0;\\n }\\n :hover::before {\\n box-shadow: var(--mynah-shadow-card) !important;\\n }\\n }\\n\\n > .mynah-chat-item-followup-question {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n position: relative;\\n gap: var(--mynah-sizing-2);\\n > .mynah-chat-item-followup-question-text {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n font-style: italic;\\n }\\n > .mynah-chat-item-followup-question-options-wrapper {\\n display: inline-flex;\\n flex-flow: row wrap;\\n max-width: 100%;\\n gap: var(--mynah-sizing-2);\\n > .mynah-chat-item-followup-question-option {\\n padding: var(--mynah-sizing-2);\\n color: var(--mynah-color-text-default);\\n border: var(--mynah-border-width) solid currentColor;\\n border-radius: var(--mynah-card-radius);\\n cursor: pointer;\\n font-size: var(--mynah-font-size-xsmall);\\n max-width: 100%;\\n overflow: hidden;\\n display: inline-flex;\\n gap: var(--mynah-sizing-2);\\n align-items: center;\\n user-select: none;\\n * {\\n pointer-events: none;\\n }\\n &-disabled {\\n opacity: 0.5 !important;\\n cursor: default !important;\\n }\\n &:not(:hover) {\\n opacity: 0.75;\\n }\\n &-status {\\n &-success {\\n color: var(--mynah-color-status-success);\\n }\\n &-error {\\n color: var(--mynah-color-status-error);\\n }\\n &-warning {\\n color: var(--mynah-color-status-warning);\\n }\\n &-info {\\n color: var(--mynah-color-status-info);\\n }\\n }\\n }\\n }\\n }\\n\\n .mynah-chat-item-card-related-content {\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-2);\\n overflow: hidden;\\n position: relative;\\n > .mynah-chat-item-card-related-content-item {\\n max-width: 100%;\\n > .mynah-card {\\n padding: 0;\\n }\\n .amzn-mynah-search-result-highlight {\\n background-color: inherit;\\n color: inherit;\\n }\\n }\\n &:not(.expanded) {\\n > .mynah-chat-item-card-related-content-item {\\n $maxItems: 1;\\n $selector: \\\"&\\\";\\n @for $i from 1 through $maxItems {\\n $selector: #{$selector} + \\\":not(:nth-of-type(\\\" + #{$i} + \\\"))\\\";\\n }\\n #{$selector} {\\n display: none;\\n }\\n &:nth-of-type(#{$maxItems}) {\\n margin-bottom: calc(-1 * var(--mynah-sizing-4));\\n pointer-events: none;\\n @include list-fader-bottom(var(--mynah-sizing-12));\\n -webkit-mask-image: linear-gradient(to top, transparent var(--mynah-sizing-1), black 70%);\\n }\\n &:nth-of-type(#{$maxItems + 1}) {\\n & ~ .mynah-chat-item-card-related-content-show-more {\\n display: flex;\\n }\\n }\\n }\\n }\\n\\n > .mynah-chat-item-card-related-content-show-more {\\n display: none;\\n max-width: 80%;\\n z-index: 10000;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n align-self: center;\\n height: var(--mynah-sizing-8);\\n filter: none;\\n > span,\\n > i {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n }\\n }\\n &.mynah-chat-item-system-prompt,\\n &.mynah-chat-item-prompt {\\n align-self: flex-end;\\n > .mynah-chat-item-card-icon-wrapper {\\n align-self: flex-end;\\n }\\n .mynah-chat-item-followup-question,\\n .mynah-chat-item-card-related-content {\\n align-items: flex-end;\\n }\\n\\n .mynah-syntax-highlighter {\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n }\\n }\\n\\n .mynah-chat-item-card-related-content > .mynah-card,\\n > .mynah-card {\\n box-shadow: 0px 0px 5px -5px var(--mynah-color-button);\\n padding: var(--mynah-sizing-4);\\n background-color: var(--mynah-color-button);\\n border-bottom-right-radius: 0;\\n border: none;\\n &,\\n > .mynah-card-body {\\n color: var(--mynah-color-button-reverse);\\n }\\n }\\n }\\n &.mynah-chat-item-system-prompt {\\n > .mynah-card {\\n background-color: var(--mynah-color-status-warning);\\n }\\n }\\n\\n &.mynah-chat-item-empty:empty {\\n display: none;\\n }\\n &.mynah-chat-item-answer-stream.mynah-chat-item-empty.stream-ended {\\n display: none;\\n }\\n &.mynah-chat-item-answer,\\n &.mynah-chat-item-answer-stream {\\n > .mynah-card {\\n border-bottom-left-radius: 0;\\n max-height: 100%;\\n flex: 1;\\n }\\n }\\n &.mynah-chat-item-ai-prompt,\\n &.mynah-chat-item-answer,\\n &.mynah-chat-item-answer-stream {\\n > .mynah-chat-item-card-icon-wrapper {\\n align-self: flex-start;\\n }\\n > .mynah-chat-item-card-related-content {\\n > .mynah-chat-item-card-related-content-item > .mynah-card-compact {\\n opacity: 1;\\n > .mynah-source-link-header {\\n opacity: 1;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n&.loading {\\n > .mynah-chat-items-container {\\n padding-bottom: var(--mynah-sizing-14);\\n > .mynah-chat-item-card.mynah-chat-item-answer-stream {\\n &:first-child {\\n > .mynah-card {\\n min-width: 100px;\\n min-height: var(--mynah-sizing-14);\\n > .mynah-card-votes-wrapper {\\n display: none;\\n }\\n }\\n &.mynah-chat-item-empty {\\n .mynah-chat-items-spinner {\\n display: inline-flex;\\n > span {\\n // Spinner's size should remain the same\\n flex: 0 0 auto;\\n }\\n }\\n }\\n &:not(.mynah-chat-item-empty) {\\n @import \\\"chat-items-bottom-animator\\\";\\n }\\n }\\n }\\n }\\n}\\n\",\"&:before {\\n content: \\\"\\\";\\n pointer-events: none;\\n position: absolute;\\n overflow: hidden;\\n border-bottom-right-radius: var(--mynah-card-radius);\\n bottom: 0; // calc(var(--mynah-sizing-6) + var(--mynah-border-width));\\n left: var(--mynah-border-width);\\n right: var(--mynah-border-width);\\n width: auto;\\n height: var(--mynah-sizing-2);\\n box-sizing: border-box;\\n z-index: 10;\\n background-image: linear-gradient(\\n 90deg,\\n var(--mynah-color-button) 0%,\\n rgba(255, 255, 255, 0) 25%,\\n rgba(255, 255, 255, 0) 50%,\\n var(--mynah-color-button) 100%\\n );\\n background-position: 0% bottom;\\n background-size: 200% var(--mynah-sizing-half);\\n background-repeat: repeat-x;\\n animation: horizontal-roll 1250ms linear infinite both;\\n}\",\"@mixin background-shadow {\\n overflow: visible;\\n &:before {\\n content: \\\"\\\";\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: inherit;\\n box-shadow: var(--mynah-shadow-card);\\n pointer-events: none;\\n filter: brightness(50%) saturate(250%) contrast(250%);\\n opacity: 0.4;\\n }\\n}\\n\\n@mixin lighten-darken {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n backdrop-filter: brightness(var(--mynah-color-context-filter));\\n }\\n}\\n\\n@mixin list-fader {\\n position: relative;\\n $listFader: linear-gradient(\\n to bottom,\\n transparent 0%,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n\\n@mixin list-fader-bottom($height: var(--mynah-sizing-6)) {\\n position: relative;\\n $listFader: linear-gradient(\\n to bottom,\\n black 30%,\\n black calc(100% - $height),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n@mixin list-fader-right($height: var(--mynah-sizing-6)) {\\n position: relative;\\n $listFader: linear-gradient(\\n to right,\\n black 30%,\\n black calc(100% - $height),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n\\n@mixin context-pill-group-background {\\n &:after,\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 2;\\n border-radius: calc(var(--mynah-button-radius) * 3 / 2);\\n border: var(--mynah-border-width) solid transparent;\\n }\\n &:after {\\n background-color: var(--mynah-card-bg);\\n z-index: 1;\\n }\\n}\\n\\n@mixin chatMode {\\n &[mode=\\\"chat\\\"] {\\n @content;\\n }\\n}\\n\",\"&.loading {\\n > .mynah-chat-overflowing-intermediate-block {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 0;\\n overflow: visible;\\n justify-content: flex-end;\\n > .mynah-chat-stop-chat-response-button {\\n display: inline-flex;\\n }\\n }\\n}\\n> .mynah-chat-overflowing-intermediate-block {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 0;\\n overflow: visible;\\n justify-content: flex-end;\\n align-items: center;\\n border-bottom: 1px solid var(--mynah-color-border-default);\\n &.hidden {\\n display: none;\\n }\\n > .mynah-chat-stop-chat-response-button {\\n margin-bottom: var(--mynah-sizing-2);\\n display: none;\\n min-height: var(--mynah-sizing-8);\\n background-color: var(--mynah-card-bg);\\n padding-left: var(--mynah-sizing-2);\\n &:active {\\n box-shadow: none;\\n filter: none;\\n }\\n * {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n }\\n}\\n\",\"> .mynah-chat-prompt-wrapper {\\n display: block;\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-chat-prompt {\\n display: flex;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n box-sizing: border-box;\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-chat-prompt-input-wrapper {\\n display: flex;\\n flex-flow: row nowrap;\\n overflow: hidden;\\n box-sizing: border-box;\\n gap: var(--mynah-sizing-1);\\n align-items: flex-start;\\n position: relative;\\n color: var(--mynah-color-text-weak);\\n > .mynah-chat-prompt-input-command-wrapper {\\n align-self: flex-start;\\n display: inline-flex;\\n align-items: center;\\n position: relative;\\n gap: var(--mynah-sizing-1);\\n box-sizing: border-box;\\n &.hidden {\\n display: none;\\n }\\n > .mynah-chat-prompt-input-command-text {\\n user-select: none;\\n cursor: pointer;\\n font-family: var(--mynah-font-family);\\n font-size: var(--mynah-font-size-large);\\n color: var(--mynah-color-text-input);\\n font-weight: bold;\\n }\\n }\\n > .mynah-chat-prompt-input-inner-wrapper {\\n display: block;\\n width: 100%;\\n position: relative;\\n align-self: center;\\n > .mynah-chat-prompt-input {\\n font-family: var(--mynah-font-family);\\n border: none;\\n resize: none;\\n background-color: rgba(0, 0, 0, 0);\\n font-size: var(--mynah-font-size-large);\\n color: var(--mynah-color-text-input);\\n outline: none;\\n width: 100%;\\n max-height: 20vh;\\n min-height: 1.5rem;\\n &::placeholder {\\n color: var(--mynah-color-text-weak);\\n }\\n &:not(.mynah-chat-prompt-input-sizer) {\\n position: absolute;\\n height: 100%;\\n top: 0;\\n left: 0;\\n padding: 0;\\n }\\n }\\n > .mynah-chat-prompt-input-sizer {\\n display: block;\\n width: 100%;\\n opacity: 0;\\n visibility: hidden;\\n pointer-events: none;\\n overflow: hidden;\\n white-space: pre-wrap;\\n word-break: break-word;\\n }\\n & ~ .mynah-chat-prompt-button {\\n background-color: transparent;\\n width: auto;\\n min-width: 0;\\n height: auto;\\n padding-top: 1px;\\n i {\\n font-size: calc(2 * var(--mynah-font-size-xsmall));\\n color: var(--mynah-color-button);\\n height: var(--mynah-sizing-6);\\n padding-left: 0;\\n }\\n }\\n &.no-text ~ .mynah-chat-prompt-button:not([disabled]),\\n & ~ .mynah-chat-prompt-button[disabled] {\\n pointer-events: none;\\n opacity: 0.25;\\n i {\\n color: var(--mynah-color-text-weak);\\n }\\n }\\n }\\n }\\n > .mynah-chat-prompt-attachment-wrapper {\\n &:empty {\\n display: none;\\n }\\n > .mynah-chat-attachment-item {\\n position: relative;\\n display: inline-block;\\n max-width: 250px;\\n cursor: pointer;\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: var(--mynah-card-radius);\\n opacity: 0;\\n transition: var(--mynah-short-transition-rev);\\n z-index: 8000;\\n background-color: var(--mynah-color-alternate);\\n }\\n > .mynah-chat-attachment-delete-icon {\\n color: var(--mynah-color-alternate-reverse);\\n opacity: 0;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n width: 30px;\\n height: 30px;\\n margin-left: -15px;\\n margin-top: -15px;\\n z-index: 9000;\\n > i {\\n width: 30px;\\n height: 30px;\\n }\\n }\\n &:hover {\\n &:after {\\n opacity: 0.75;\\n }\\n > .mynah-chat-attachment-delete-icon {\\n opacity: 1;\\n }\\n }\\n > .mynah-card {\\n pointer-events: none !important;\\n * {\\n pointer-events: none !important;\\n }\\n > .mynah-card-body {\\n display: none;\\n }\\n }\\n }\\n }\\n }\\n &.input-has-focus > .mynah-chat-prompt {\\n border: var(--mynah-border-width) solid var(--mynah-color-button);\\n }\\n\\n > .mynah-chat-prompt-chars-indicator {\\n width: 100%;\\n font-size: var(--mynah-font-size-xsmall);\\n padding-top: var(--mynah-sizing-2);\\n opacity: 0.5;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n font-style: italic;\\n }\\n}\\n\\n> .mynah-chat-prompt-input-info {\\n display: flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n padding: 0 var(--mynah-sizing-4) var(--mynah-sizing-4) var(--mynah-sizing-4);\\n margin-top: calc(-1 * var(--mynah-sizing-2));\\n &,\\n & * {\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n &:empty {\\n display: none;\\n }\\n > * {\\n margin: 0;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n }\\n}\\n\",\".mynah-chat-command-selector {\\n display: flex;\\n box-sizing: border-box;\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n width: 100%;\\n pointer-events: all;\\n flex-flow: column nowrap;\\n align-items: stretch;\\n justify-content: flex-start;\\n > .mynah-chat-command-selector-group {\\n display: flex;\\n box-sizing: border-box;\\n width: 100%;\\n flex-flow: column nowrap;\\n align-items: stretch;\\n justify-content: flex-start;\\n padding: var(--mynah-sizing-2);\\n > .mynah-chat-command-selector-group-title {\\n margin: 0;\\n color: var(--mynah-color-text-weak);\\n opacity: 0.75;\\n padding: var(--mynah-sizing-2) var(--mynah-sizing-3);\\n }\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid var(--mynah-color-border-default);\\n }\\n\\n > .mynah-chat-command-selector-command {\\n display: flex;\\n box-sizing: border-box;\\n width: 100%;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n overflow: hidden;\\n cursor: pointer;\\n padding: var(--mynah-sizing-2) var(--mynah-sizing-3);\\n color: var(--mynah-color-text-default);\\n border-radius: var(--mynah-card-radius);\\n transition: var(--mynah-short-transition-rev);\\n gap: var(--mynah-sizing-1);\\n &:hover,\\n &.target-command {\\n background-color: var(--mynah-color-button);\\n &,\\n & * {\\n color: var(--mynah-color-button-reverse);\\n }\\n }\\n > .mynah-chat-command-selector-command-name {\\n font-family: var(--mynah-font-family);\\n font-size: var(--mynah-font-size-large);\\n font-weight: bold;\\n flex: 0 1 0%;\\n }\\n > .mynah-chat-command-selector-command-description {\\n font-size: var(--mynah-font-size-small);\\n opacity: 0.75;\\n flex: 1 0 100%;\\n }\\n }\\n }\\n}\\n\",\".mynah-chat-item-tree-view-wrapper {\\n margin: 0;\\n margin-block-end: 0 !important;\\n margin-block-start: 0 !important;\\n > .mynah-chat-item-tree-view-wrapper-container {\\n background-color: var(--mynah-card-bg);\\n color: var(--mynah-color-text-default);\\n margin-block-start: 0 !important;\\n margin-block-end: 0 !important;\\n position: relative;\\n border-radius: var(--mynah-card-radius);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n > .mynah-chat-item-tree-view-wrapper-title {\\n display: flex;\\n flex-flow: row nowrap;\\n justify-content: flex-start;\\n align-items: center;\\n position: relative;\\n padding: var(--mynah-sizing-3);\\n gap: var(--mynah-sizing-3);\\n border-bottom: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n > h4 {\\n margin: 0;\\n }\\n\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-border-default);\\n opacity: 0.25;\\n pointer-events: none;\\n }\\n }\\n > .mynah-chat-item-tree-view {\\n padding: var(--mynah-sizing-3);\\n overflow: hidden;\\n box-sizing: border-box;\\n width: 100%;\\n overflow-y: hidden;\\n overflow-x: auto;\\n }\\n }\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-label {\\n border-top-left-radius: var(--mynah-card-radius);\\n border-top-right-radius: var(--mynah-card-radius);\\n background-color: var(--mynah-color-alternate);\\n margin-bottom: 0px;\\n padding: var(--mynah-sizing-4);\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-feedback-label {\\n padding-left: var(--mynah-sizing-4);\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-feedback-div {\\n float: right;\\n\\n button:first-child {\\n margin-right: var(--mynah-sizing-2);\\n }\\n}\\n\\n.mynah-chat-item-tree-view-license {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n background-color: var(--mynah-color-button);\\n opacity: 0.07;\\n pointer-events: none;\\n }\\n\\n color: var(--mynah-color-text-weak);\\n\\n ul {\\n margin: 0;\\n padding-left: var(--mynah-sizing-8);\\n > li {\\n &:not(:first-child) {\\n margin-top: var(--mynah-sizing-2);\\n }\\n .mynah-card-body p {\\n margin: 0;\\n }\\n }\\n }\\n\\n .mynah-chat-item-tree-view-license-dropdown-button > span {\\n max-width: unset;\\n }\\n}\\n\",\".outer-container {\\n display: flex;\\n &:not(:empty) {\\n margin-top: var(--mynah-sizing-3);\\n }\\n}\\n\\n.snippet-card-container.vertical-overflow {\\n & pre {\\n // Show fading effect at the bottom when overflowing\\n @include list-fader-bottom(var(--mynah-sizing-16));\\n }\\n}\\n\\n.snippet-card-container {\\n box-sizing: border-box;\\n max-width: 100%;\\n max-height: calc(2 * var(--mynah-sizing-12));\\n > .mynah-button {\\n position: absolute;\\n background-color: var(--mynah-card-bg) !important;\\n width: var(--mynah-sizing-7) !important;\\n min-width: var(--mynah-sizing-7) !important;\\n max-width: var(--mynah-sizing-7) !important;\\n height: var(--mynah-sizing-7) !important;\\n border-radius: 100%;\\n right: calc(-1 * var(--mynah-sizing-2));\\n top: calc(-1 * var(--mynah-sizing-2));\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n opacity: 1 !important;\\n filter: brightness(0.95);\\n }\\n &:not(:hover) {\\n > .mynah-button {\\n display: none;\\n }\\n }\\n > .mynah-card-body > .mynah-syntax-highlighter {\\n border: none;\\n & pre {\\n text-overflow: ellipsis;\\n }\\n }\\n}\\n\\n.mynah-prompt-input-snippet-attachment-overlay {\\n max-width: 90vw;\\n max-height: 70vh;\\n > .mynah-card-body {\\n > .mynah-syntax-highlighter {\\n max-height: calc(70vh - var(--mynah-sizing-12)) !important;\\n }\\n }\\n}\\n.snippet-card-container,\\n.mynah-prompt-input-snippet-attachment-overlay {\\n position: relative;\\n overflow: visible;\\n width: 100%;\\n box-sizing: border-box;\\n > .mynah-card-body {\\n max-height: 100%;\\n > .mynah-syntax-highlighter {\\n user-select: none;\\n pointer-events: none;\\n margin: 0;\\n max-height: 100%;\\n overflow: hidden;\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n }\\n }\\n }\\n & pre {\\n text-overflow: ellipsis;\\n }\\n}\\n\",\".mynah-collapsible-content-wrapper {\\n display: block;\\n box-sizing: border-box;\\n width: 100%;\\n overflow: hidden;\\n position: relative;\\n > .mynah-collapsible-content-checkbox {\\n display: none;\\n & + .mynah-collapsible-content-label {\\n box-sizing: border-box;\\n display: flex;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n align-items: flex-start;\\n justify-content: stretch;\\n padding: var(--mynah-sizing-2);\\n gap: var(--mynah-sizing-2);\\n > .mynah-collapsible-content-label-title-wrapper {\\n gap: var(--mynah-sizing-2);\\n display: flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n width: 100%;\\n overflow: hidden;\\n justify-content: flex-start;\\n align-items: flex-start;\\n pointer-events: all;\\n cursor: pointer;\\n user-select: none;\\n > .mynah-collapsible-content-label-title-text {\\n flex: 1;\\n overflow: hidden;\\n }\\n }\\n > .mynah-collapsible-content-label-content-wrapper {\\n overflow: hidden;\\n box-sizing: border-box;\\n width: 100%;\\n }\\n }\\n\\n &:checked + .mynah-collapsible-content-label {\\n > .mynah-collapsible-content-label-content-wrapper {\\n display: none;\\n }\\n }\\n }\\n}\\n\",\"@import \\\"mixins\\\";\\n@import \\\"variables\\\";\\n@import \\\"animations\\\";\\n@import \\\"dark\\\";\\n@import \\\"favicons\\\";\\n\\n// Components\\n@import \\\"./components/main-container\\\";\\n@import \\\"./components/button\\\";\\n@import \\\"./components/toggle\\\";\\n@import \\\"./components/icon\\\";\\n@import \\\"./components/nav-tabs\\\";\\n@import \\\"./components/card/card\\\";\\n@import \\\"./components/feedback-form\\\";\\n@import \\\"./components/overlay\\\";\\n@import \\\"./components/notification\\\";\\n@import \\\"./components/syntax-highlighter\\\";\\n@import \\\"./components/chat/chat-wrapper\\\";\\n@import \\\"./components/collapsible-content\\\";\\n\\nbody,\\nhtml {\\n background-color: var(--mynah-color-bg);\\n color: var(--mynah-color-text-default);\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n margin: 0;\\n padding: 0;\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-weight: 600;\\n}\\n\\n::-webkit-scrollbar {\\n width: 2px;\\n height: 2px;\\n opacity: 0.25;\\n &:horizontal {\\n width: 0px;\\n height: 0px;\\n }\\n}\\n\\n*:focus {\\n outline: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","!function(e){var t=\"\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b\",a={pattern:/(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,lookbehind:!0,alias:\"punctuation\",inside:null},n={bash:a,environment:{pattern:RegExp(\"\\\\$\"+t),alias:\"constant\"},variable:[{pattern:/\\$?\\(\\([\\s\\S]+?\\)\\)/,greedy:!0,inside:{variable:[{pattern:/(^\\$\\(\\([\\s\\S]+)\\)\\)/,lookbehind:!0},/^\\$\\(\\(/],number:/\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,operator:/--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,punctuation:/\\(\\(?|\\)\\)?|,|;/}},{pattern:/\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,greedy:!0,inside:{variable:/^\\$\\(|^`|\\)$|`$/}},{pattern:/\\$\\{[^}]+\\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,punctuation:/[\\[\\]]/,environment:{pattern:RegExp(\"(\\\\{)\"+t),lookbehind:!0,alias:\"constant\"}}},/\\$(?:\\w+|[#?*!@$])/],entity:/\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\\s*\\/.*/,alias:\"important\"},comment:{pattern:/(^|[^\"{\\\\$])#.*/,lookbehind:!0},\"function-name\":[{pattern:/(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,lookbehind:!0,alias:\"function\"},{pattern:/\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,alias:\"function\"}],\"for-or-select\":{pattern:/(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,alias:\"variable\",lookbehind:!0},\"assign-left\":{pattern:/(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,inside:{environment:{pattern:RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\"+t),lookbehind:!0,alias:\"constant\"}},alias:\"variable\",lookbehind:!0},parameter:{pattern:/(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,alias:\"variable\",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,lookbehind:!0,greedy:!0,inside:n},{pattern:/(^|[^$\\\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,greedy:!0,inside:{entity:n.entity}}],environment:{pattern:RegExp(\"\\\\$?\"+t),alias:\"constant\"},variable:n.variable,function:{pattern:/(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,lookbehind:!0,alias:\"class-name\"},boolean:{pattern:/(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,lookbehind:!0},\"file-descriptor\":{pattern:/\\B&\\d\\b/,alias:\"important\"},operator:{pattern:/\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,inside:{\"file-descriptor\":{pattern:/^\\d/,alias:\"important\"}}},punctuation:/\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,number:{pattern:/(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,lookbehind:!0}},a.inside=e.languages.bash;for(var s=[\"comment\",\"function-name\",\"for-or-select\",\"assign-left\",\"parameter\",\"string\",\"environment\",\"function\",\"keyword\",\"builtin\",\"boolean\",\"file-descriptor\",\"operator\",\"punctuation\",\"number\"],o=n.variable[1].inside,i=0;i<s.length;i++)o[s[i]]=e.languages.bash[s[i]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash}(Prism);","Prism.languages.c=Prism.languages.extend(\"clike\",{comment:{pattern:/\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,greedy:!0},string:{pattern:/\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,greedy:!0},\"class-name\":{pattern:/(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,lookbehind:!0},keyword:/\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,function:/\\b[a-z_]\\w*(?=\\s*\\()/i,number:/(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore(\"c\",\"string\",{char:{pattern:/'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,greedy:!0}}),Prism.languages.insertBefore(\"c\",\"string\",{macro:{pattern:/(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,lookbehind:!0,greedy:!0,alias:\"property\",inside:{string:[{pattern:/^(#\\s*include\\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,\"macro-name\":[{pattern:/(^#\\s*define\\s+)\\w+\\b(?!\\()/i,lookbehind:!0},{pattern:/(^#\\s*define\\s+)\\w+\\b(?=\\()/i,lookbehind:!0,alias:\"function\"}],directive:{pattern:/^(#\\s*)[a-z]+/,lookbehind:!0,alias:\"keyword\"},\"directive-hash\":/^#/,punctuation:/##|\\\\(?=[\\r\\n])/,expression:{pattern:/\\S[\\s\\S]*/,inside:Prism.languages.c}}}}),Prism.languages.insertBefore(\"c\",\"function\",{constant:/\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/}),delete Prism.languages.c.boolean;","Prism.languages.clike={comment:[{pattern:/(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\\\:])\\/\\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\\\]/}},keyword:/\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,boolean:/\\b(?:false|true)\\b/,function:/\\b\\w+(?=\\()/,number:/\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,punctuation:/[{}[\\];(),.:]/};","!function(e){function n(e,n){return e.replace(/<<(\\d+)>>/g,(function(e,s){return\"(?:\"+n[+s]+\")\"}))}function s(e,s,a){return RegExp(n(e,s),a||\"\")}function a(e,n){for(var s=0;s<n;s++)e=e.replace(/<<self>>/g,(function(){return\"(?:\"+e+\")\"}));return e.replace(/<<self>>/g,\"[^\\\\s\\\\S]\")}var t=\"bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void\",r=\"class enum interface record struct\",i=\"add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)\",o=\"abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield\";function l(e){return\"\\\\b(?:\"+e.trim().replace(/ /g,\"|\")+\")\\\\b\"}var d=l(r),p=RegExp(l(t+\" \"+r+\" \"+i+\" \"+o)),c=l(r+\" \"+i+\" \"+o),u=l(t+\" \"+r+\" \"+o),g=a(\"<(?:[^<>;=+\\\\-*/%&|^]|<<self>>)*>\",2),b=a(\"\\\\((?:[^()]|<<self>>)*\\\\)\",2),h=\"@?\\\\b[A-Za-z_]\\\\w*\\\\b\",f=n(\"<<0>>(?:\\\\s*<<1>>)?\",[h,g]),m=n(\"(?!<<0>>)<<1>>(?:\\\\s*\\\\.\\\\s*<<1>>)*\",[c,f]),k=\"\\\\[\\\\s*(?:,\\\\s*)*\\\\]\",y=n(\"<<0>>(?:\\\\s*(?:\\\\?\\\\s*)?<<1>>)*(?:\\\\s*\\\\?)?\",[m,k]),w=n(\"[^,()<>[\\\\];=+\\\\-*/%&|^]|<<0>>|<<1>>|<<2>>\",[g,b,k]),v=n(\"\\\\(<<0>>+(?:,<<0>>+)+\\\\)\",[w]),x=n(\"(?:<<0>>|<<1>>)(?:\\\\s*(?:\\\\?\\\\s*)?<<2>>)*(?:\\\\s*\\\\?)?\",[v,m,k]),$={keyword:p,punctuation:/[<>()?,.:[\\]]/},_=\"'(?:[^\\r\\n'\\\\\\\\]|\\\\\\\\.|\\\\\\\\[Uux][\\\\da-fA-F]{1,8})'\",B='\"(?:\\\\\\\\.|[^\\\\\\\\\"\\r\\n])*\"';e.languages.csharp=e.languages.extend(\"clike\",{string:[{pattern:s(\"(^|[^$\\\\\\\\])<<0>>\",['@\"(?:\"\"|\\\\\\\\[^]|[^\\\\\\\\\"])*\"(?!\")']),lookbehind:!0,greedy:!0},{pattern:s(\"(^|[^@$\\\\\\\\])<<0>>\",[B]),lookbehind:!0,greedy:!0}],\"class-name\":[{pattern:s(\"(\\\\busing\\\\s+static\\\\s+)<<0>>(?=\\\\s*;)\",[m]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\busing\\\\s+<<0>>\\\\s*=\\\\s*)<<1>>(?=\\\\s*;)\",[h,x]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\busing\\\\s+)<<0>>(?=\\\\s*=)\",[h]),lookbehind:!0},{pattern:s(\"(\\\\b<<0>>\\\\s+)<<1>>\",[d,f]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\bcatch\\\\s*\\\\(\\\\s*)<<0>>\",[m]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\bwhere\\\\s+)<<0>>\",[h]),lookbehind:!0},{pattern:s(\"(\\\\b(?:is(?:\\\\s+not)?|as)\\\\s+)<<0>>\",[y]),lookbehind:!0,inside:$},{pattern:s(\"\\\\b<<0>>(?=\\\\s+(?!<<1>>|with\\\\s*\\\\{)<<2>>(?:\\\\s*[=,;:{)\\\\]]|\\\\s+(?:in|when)\\\\b))\",[x,u,h]),inside:$}],keyword:p,number:/(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:[dflmu]|lu|ul)?\\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\\?\\.?|::|[{}[\\];(),.:]/}),e.languages.insertBefore(\"csharp\",\"number\",{range:{pattern:/\\.\\./,alias:\"operator\"}}),e.languages.insertBefore(\"csharp\",\"punctuation\",{\"named-parameter\":{pattern:s(\"([(,]\\\\s*)<<0>>(?=\\\\s*:)\",[h]),lookbehind:!0,alias:\"punctuation\"}}),e.languages.insertBefore(\"csharp\",\"class-name\",{namespace:{pattern:s(\"(\\\\b(?:namespace|using)\\\\s+)<<0>>(?:\\\\s*\\\\.\\\\s*<<0>>)*(?=\\\\s*[;{])\",[h]),lookbehind:!0,inside:{punctuation:/\\./}},\"type-expression\":{pattern:s(\"(\\\\b(?:default|sizeof|typeof)\\\\s*\\\\(\\\\s*(?!\\\\s))(?:[^()\\\\s]|\\\\s(?!\\\\s)|<<0>>)*(?=\\\\s*\\\\))\",[b]),lookbehind:!0,alias:\"class-name\",inside:$},\"return-type\":{pattern:s(\"<<0>>(?=\\\\s+(?:<<1>>\\\\s*(?:=>|[({]|\\\\.\\\\s*this\\\\s*\\\\[)|this\\\\s*\\\\[))\",[x,m]),inside:$,alias:\"class-name\"},\"constructor-invocation\":{pattern:s(\"(\\\\bnew\\\\s+)<<0>>(?=\\\\s*[[({])\",[x]),lookbehind:!0,inside:$,alias:\"class-name\"},\"generic-method\":{pattern:s(\"<<0>>\\\\s*<<1>>(?=\\\\s*\\\\()\",[h,g]),inside:{function:s(\"^<<0>>\",[h]),generic:{pattern:RegExp(g),alias:\"class-name\",inside:$}}},\"type-list\":{pattern:s(\"\\\\b((?:<<0>>\\\\s+<<1>>|record\\\\s+<<1>>\\\\s*<<5>>|where\\\\s+<<2>>)\\\\s*:\\\\s*)(?:<<3>>|<<4>>|<<1>>\\\\s*<<5>>|<<6>>)(?:\\\\s*,\\\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\\\s*(?:where|[{;]|=>|$))\",[d,f,h,x,p.source,b,\"\\\\bnew\\\\s*\\\\(\\\\s*\\\\)\"]),lookbehind:!0,inside:{\"record-arguments\":{pattern:s(\"(^(?!new\\\\s*\\\\()<<0>>\\\\s*)<<1>>\",[f,b]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:p,\"class-name\":{pattern:RegExp(x),greedy:!0,inside:$},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\\t ]*)#.*/m,lookbehind:!0,alias:\"property\",inside:{directive:{pattern:/(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,lookbehind:!0,alias:\"keyword\"}}}});var E=B+\"|\"+_,R=n(\"/(?![*/])|//[^\\r\\n]*[\\r\\n]|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/|<<0>>\",[E]),z=a(n(\"[^\\\"'/()]|<<0>>|\\\\(<<self>>*\\\\)\",[R]),2),S=\"\\\\b(?:assembly|event|field|method|module|param|property|return|type)\\\\b\",j=n(\"<<0>>(?:\\\\s*\\\\(<<1>>*\\\\))?\",[m,z]);e.languages.insertBefore(\"csharp\",\"class-name\",{attribute:{pattern:s(\"((?:^|[^\\\\s\\\\w>)?])\\\\s*\\\\[\\\\s*)(?:<<0>>\\\\s*:\\\\s*)?<<1>>(?:\\\\s*,\\\\s*<<1>>)*(?=\\\\s*\\\\])\",[S,j]),lookbehind:!0,greedy:!0,inside:{target:{pattern:s(\"^<<0>>(?=\\\\s*:)\",[S]),alias:\"keyword\"},\"attribute-arguments\":{pattern:s(\"\\\\(<<0>>*\\\\)\",[z]),inside:e.languages.csharp},\"class-name\":{pattern:RegExp(m),inside:{punctuation:/\\./}},punctuation:/[:,]/}}});var A=\":[^}\\r\\n]+\",F=a(n(\"[^\\\"'/()]|<<0>>|\\\\(<<self>>*\\\\)\",[R]),2),P=n(\"\\\\{(?!\\\\{)(?:(?![}:])<<0>>)*<<1>>?\\\\}\",[F,A]),U=a(n(\"[^\\\"'/()]|/(?!\\\\*)|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/|<<0>>|\\\\(<<self>>*\\\\)\",[E]),2),Z=n(\"\\\\{(?!\\\\{)(?:(?![}:])<<0>>)*<<1>>?\\\\}\",[U,A]);function q(n,a){return{interpolation:{pattern:s(\"((?:^|[^{])(?:\\\\{\\\\{)*)<<0>>\",[n]),lookbehind:!0,inside:{\"format-string\":{pattern:s(\"(^\\\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\\\}$)\",[a,A]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\\{|\\}$/,expression:{pattern:/[\\s\\S]+/,alias:\"language-csharp\",inside:e.languages.csharp}}},string:/[\\s\\S]+/}}e.languages.insertBefore(\"csharp\",\"string\",{\"interpolation-string\":[{pattern:s('(^|[^\\\\\\\\])(?:\\\\$@|@\\\\$)\"(?:\"\"|\\\\\\\\[^]|\\\\{\\\\{|<<0>>|[^\\\\\\\\{\"])*\"',[P]),lookbehind:!0,greedy:!0,inside:q(P,F)},{pattern:s('(^|[^@\\\\\\\\])\\\\$\"(?:\\\\\\\\.|\\\\{\\\\{|<<0>>|[^\\\\\\\\\"{])*\"',[Z]),lookbehind:!0,greedy:!0,inside:q(Z,U)}],char:{pattern:RegExp(_),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism);","!function(s){var e=/(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;s.languages.css={comment:/\\/\\*[\\s\\S]*?\\*\\//,atrule:{pattern:RegExp(\"@[\\\\w-](?:[^;{\\\\s\\\"']|\\\\s+(?!\\\\s)|\"+e.source+\")*?(?:;|(?=\\\\s*\\\\{))\"),inside:{rule:/^@[\\w-]+/,\"selector-function-argument\":{pattern:/(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,lookbehind:!0,alias:\"selector\"},keyword:{pattern:/(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,lookbehind:!0}}},url:{pattern:RegExp(\"\\\\burl\\\\((?:\"+e.source+\"|(?:[^\\\\\\\\\\r\\n()\\\"']|\\\\\\\\[^])*)\\\\)\",\"i\"),greedy:!0,inside:{function:/^url/i,punctuation:/^\\(|\\)$/,string:{pattern:RegExp(\"^\"+e.source+\"$\"),alias:\"url\"}}},selector:{pattern:RegExp(\"(^|[{}\\\\s])[^{}\\\\s](?:[^{};\\\"'\\\\s]|\\\\s+(?![\\\\s{])|\"+e.source+\")*(?=\\\\s*\\\\{)\"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,lookbehind:!0},important:/!important\\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined(\"style\",\"css\"),t.tag.addAttribute(\"style\",\"css\"))}(Prism);","!function(e){var n=/\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/,t=\"(?:[a-z]\\\\w*\\\\s*\\\\.\\\\s*)*(?:[A-Z]\\\\w*\\\\s*\\\\.\\\\s*)*\",s={pattern:RegExp(\"(^|[^\\\\w.])\"+t+\"[A-Z](?:[\\\\d_A-Z]*[a-z]\\\\w*)?\\\\b\"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,inside:{punctuation:/\\./}},punctuation:/\\./}};e.languages.java=e.languages.extend(\"clike\",{string:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,lookbehind:!0,greedy:!0},\"class-name\":[s,{pattern:RegExp(\"(^|[^\\\\w.])\"+t+\"[A-Z]\\\\w*(?=\\\\s+\\\\w+\\\\s*[;,=()]|\\\\s*(?:\\\\[[\\\\s,]*\\\\]\\\\s*)?::\\\\s*new\\\\b)\"),lookbehind:!0,inside:s.inside},{pattern:RegExp(\"(\\\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\\\s+)\"+t+\"[A-Z]\\\\w*\\\\b\"),lookbehind:!0,inside:s.inside}],keyword:n,function:[e.languages.clike.function,{pattern:/(::\\s*)[a-z_]\\w*/,lookbehind:!0}],number:/\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\\b[A-Z][A-Z_\\d]+\\b/}),e.languages.insertBefore(\"java\",\"string\",{\"triple-quoted-string\":{pattern:/\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,greedy:!0,alias:\"string\"},char:{pattern:/'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore(\"java\",\"class-name\",{annotation:{pattern:/(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,lookbehind:!0,alias:\"punctuation\"},generics:{pattern:/<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{\"class-name\":s,keyword:n,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(\"(\\\\bimport\\\\s+)\"+t+\"(?:[A-Z]\\\\w*|\\\\*)(?=\\\\s*;)\"),lookbehind:!0,inside:{namespace:s.inside.namespace,punctuation:/\\./,operator:/\\*/,\"class-name\":/\\w+/}},{pattern:RegExp(\"(\\\\bimport\\\\s+static\\\\s+)\"+t+\"(?:\\\\w+|\\\\*)(?=\\\\s*;)\"),lookbehind:!0,alias:\"static\",inside:{namespace:s.inside.namespace,static:/\\b\\w+$/,punctuation:/\\./,operator:/\\*/,\"class-name\":/\\w+/}}],namespace:{pattern:RegExp(\"(\\\\b(?:exports|import(?:\\\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\\\s+)(?!<keyword>)[a-z]\\\\w*(?:\\\\.[a-z]\\\\w*)*\\\\.?\".replace(/<keyword>/g,(function(){return n.source}))),lookbehind:!0,inside:{punctuation:/\\./}}})}(Prism);","Prism.languages.javascript=Prism.languages.extend(\"clike\",{\"class-name\":[Prism.languages.clike[\"class-name\"],{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\\})\\s*)catch\\b/,lookbehind:!0},{pattern:/(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,lookbehind:!0}],function:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,number:{pattern:RegExp(\"(^|[^\\\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\\\dA-Fa-f]+(?:_[\\\\dA-Fa-f]+)*n?|\\\\d+(?:_\\\\d+)*n|(?:\\\\d+(?:_\\\\d+)*(?:\\\\.(?:\\\\d+(?:_\\\\d+)*)?)?|\\\\.\\\\d+(?:_\\\\d+)*)(?:[Ee][+-]?\\\\d+(?:_\\\\d+)*)?)(?![\\\\w$])\"),lookbehind:!0},operator:/--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/}),Prism.languages.javascript[\"class-name\"][0].pattern=/(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/,Prism.languages.insertBefore(\"javascript\",\"keyword\",{regex:{pattern:RegExp(\"((?:^|[^$\\\\w\\\\xA0-\\\\uFFFF.\\\"'\\\\])\\\\s]|\\\\b(?:return|yield))\\\\s*)/(?:(?:\\\\[(?:[^\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}|(?:\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\])*\\\\])*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\\\s|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/)*(?:$|[\\r\\n,.;:})\\\\]]|//))\"),lookbehind:!0,greedy:!0,inside:{\"regex-source\":{pattern:/^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,lookbehind:!0,alias:\"language-regex\",inside:Prism.languages.regex},\"regex-delimiter\":/^\\/|\\/$/,\"regex-flags\":/^[a-z]+$/}},\"function-variable\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,alias:\"function\"},parameter:[{pattern:/(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/}),Prism.languages.insertBefore(\"javascript\",\"string\",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:\"comment\"},\"template-string\":{pattern:/`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,greedy:!0,inside:{\"template-punctuation\":{pattern:/^`|`$/,alias:\"string\"},interpolation:{pattern:/((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,lookbehind:!0,inside:{\"interpolation-punctuation\":{pattern:/^\\$\\{|\\}$/,alias:\"punctuation\"},rest:Prism.languages.javascript}},string:/[\\s\\S]+/}},\"string-property\":{pattern:/((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,lookbehind:!0,greedy:!0,alias:\"property\"}}),Prism.languages.insertBefore(\"javascript\",\"operator\",{\"literal-property\":{pattern:/((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,lookbehind:!0,alias:\"property\"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined(\"script\",\"javascript\"),Prism.languages.markup.tag.addAttribute(\"on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)\",\"javascript\")),Prism.languages.js=Prism.languages.javascript;","Prism.languages.json={property:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,greedy:!0},number:/-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,punctuation:/[{}[\\],]/,operator:/:/,boolean:/\\b(?:false|true)\\b/,null:{pattern:/\\bnull\\b/,alias:\"keyword\"}},Prism.languages.webmanifest=Prism.languages.json;","!function(t){var n=t.util.clone(t.languages.javascript),e=\"(?:\\\\{<S>*\\\\.{3}(?:[^{}]|<BRACES>)*\\\\})\";function a(t,n){return t=t.replace(/<S>/g,(function(){return\"(?:\\\\s|//.*(?!.)|/\\\\*(?:[^*]|\\\\*(?!/))\\\\*/)\"})).replace(/<BRACES>/g,(function(){return\"(?:\\\\{(?:\\\\{(?:\\\\{[^{}]*\\\\}|[^{}])*\\\\}|[^{}])*\\\\})\"})).replace(/<SPREAD>/g,(function(){return e})),RegExp(t,n)}e=a(e).source,t.languages.jsx=t.languages.extend(\"markup\",n),t.languages.jsx.tag.pattern=a(\"</?(?:[\\\\w.:-]+(?:<S>+(?:[\\\\w.:$-]+(?:=(?:\\\"(?:\\\\\\\\[^]|[^\\\\\\\\\\\"])*\\\"|'(?:\\\\\\\\[^]|[^\\\\\\\\'])*'|[^\\\\s{'\\\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*/?)?>\"),t.languages.jsx.tag.inside.tag.pattern=/^<\\/?[^\\s>\\/]*/,t.languages.jsx.tag.inside[\"attr-value\"].pattern=/=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/,t.languages.jsx.tag.inside.tag.inside[\"class-name\"]=/^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/,t.languages.jsx.tag.inside.comment=n.comment,t.languages.insertBefore(\"inside\",\"attr-name\",{spread:{pattern:a(\"<SPREAD>\"),inside:t.languages.jsx}},t.languages.jsx.tag),t.languages.insertBefore(\"inside\",\"special-attr\",{script:{pattern:a(\"=<BRACES>\"),alias:\"language-javascript\",inside:{\"script-punctuation\":{pattern:/^=(?=\\{)/,alias:\"punctuation\"},rest:t.languages.jsx}}},t.languages.jsx.tag);var s=function(t){return t?\"string\"==typeof t?t:\"string\"==typeof t.content?t.content:t.content.map(s).join(\"\"):\"\"},g=function(n){for(var e=[],a=0;a<n.length;a++){var o=n[a],i=!1;if(\"string\"!=typeof o&&(\"tag\"===o.type&&o.content[0]&&\"tag\"===o.content[0].type?\"</\"===o.content[0].content[0].content?e.length>0&&e[e.length-1].tagName===s(o.content[0].content[1])&&e.pop():\"/>\"===o.content[o.content.length-1].content||e.push({tagName:s(o.content[0].content[1]),openedBraces:0}):e.length>0&&\"punctuation\"===o.type&&\"{\"===o.content?e[e.length-1].openedBraces++:e.length>0&&e[e.length-1].openedBraces>0&&\"punctuation\"===o.type&&\"}\"===o.content?e[e.length-1].openedBraces--:i=!0),(i||\"string\"==typeof o)&&e.length>0&&0===e[e.length-1].openedBraces){var r=s(o);a<n.length-1&&(\"string\"==typeof n[a+1]||\"plain-text\"===n[a+1].type)&&(r+=s(n[a+1]),n.splice(a+1,1)),a>0&&(\"string\"==typeof n[a-1]||\"plain-text\"===n[a-1].type)&&(r=s(n[a-1])+r,n.splice(a-1,1),a--),n[a]=new t.Token(\"plain-text\",r,null,r)}o.content&&\"string\"!=typeof o.content&&g(o.content)}};t.hooks.add(\"after-tokenize\",(function(t){\"jsx\"!==t.language&&\"tsx\"!==t.language||g(t.tokens)}))}(Prism);","Prism.languages.less=Prism.languages.extend(\"css\",{comment:[/\\/\\*[\\s\\S]*?\\*\\//,{pattern:/(^|[^\\\\])\\/\\/.*/,lookbehind:!0}],atrule:{pattern:/@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,inside:{variable:/@+[\\w-]+/}},property:/(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/,operator:/[+\\-*\\/]/}),Prism.languages.insertBefore(\"less\",\"property\",{variable:[{pattern:/@[\\w-]+\\s*:/,inside:{punctuation:/:/}},/@@?[\\w-]+/],\"mixin-usage\":{pattern:/([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,lookbehind:!0,alias:\"function\"}});","Prism.languages.lua={comment:/^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,string:{pattern:/([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[^z]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,greedy:!0},number:/\\b0x[a-f\\d]+(?:\\.[a-f\\d]*)?(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|(?:\\.\\d*)?(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,keyword:/\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,function:/(?!\\d)\\w+(?=\\s*(?:[({]))/,operator:[/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\\.\\.(?!\\.)/,lookbehind:!0}],punctuation:/[\\[\\](){},;]|\\.+|:+/};","!function(n){function e(n){return n=n.replace(/<inner>/g,(function(){return\"(?:\\\\\\\\.|[^\\\\\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))\"})),RegExp(\"((?:^|[^\\\\\\\\])(?:\\\\\\\\{2})*)(?:\"+n+\")\")}var t=\"(?:\\\\\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\\\\\|\\r\\n`])+\",a=\"\\\\|?__(?:\\\\|__)+\\\\|?(?:(?:\\n|\\r\\n?)|(?![^]))\".replace(/__/g,(function(){return t})),i=\"\\\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\\\|?(?:\\n|\\r\\n?)\";n.languages.markdown=n.languages.extend(\"markup\",{}),n.languages.insertBefore(\"markdown\",\"prolog\",{\"front-matter-block\":{pattern:/(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,\"front-matter\":{pattern:/\\S+(?:\\s+\\S+)*/,alias:[\"yaml\",\"language-yaml\"],inside:n.languages.yaml}}},blockquote:{pattern:/^>(?:[\\t ]*>)*/m,alias:\"punctuation\"},table:{pattern:RegExp(\"^\"+a+i+\"(?:\"+a+\")*\",\"m\"),inside:{\"table-data-rows\":{pattern:RegExp(\"^(\"+a+i+\")(?:\"+a+\")*$\"),lookbehind:!0,inside:{\"table-data\":{pattern:RegExp(t),inside:n.languages.markdown},punctuation:/\\|/}},\"table-line\":{pattern:RegExp(\"^(\"+a+\")\"+i+\"$\"),lookbehind:!0,inside:{punctuation:/\\||:?-{3,}:?/}},\"table-header-row\":{pattern:RegExp(\"^\"+a+\"$\"),inside:{\"table-header\":{pattern:RegExp(t),alias:\"important\",inside:n.languages.markdown},punctuation:/\\|/}}}},code:[{pattern:/((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,lookbehind:!0,alias:\"keyword\"},{pattern:/^```[\\s\\S]*?^```$/m,greedy:!0,inside:{\"code-block\":{pattern:/^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,lookbehind:!0},\"code-language\":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,alias:\"important\",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\\s*)#.+/m,lookbehind:!0,alias:\"important\",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,lookbehind:!0,alias:\"punctuation\"},list:{pattern:/(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,lookbehind:!0,alias:\"punctuation\"},\"url-reference\":{pattern:/!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,inside:{variable:{pattern:/^(!?\\[)[^\\]]+/,lookbehind:!0},string:/(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,punctuation:/^[\\[\\]!:]|[<>]/},alias:\"url\"},bold:{pattern:e(\"\\\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\\\b|\\\\*\\\\*(?:(?!\\\\*)<inner>|\\\\*(?:(?!\\\\*)<inner>)+\\\\*)+\\\\*\\\\*\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\\s\\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\\*\\*|__/}},italic:{pattern:e(\"\\\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\\\b|\\\\*(?:(?!\\\\*)<inner>|\\\\*\\\\*(?:(?!\\\\*)<inner>)+\\\\*\\\\*)+\\\\*\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\\s\\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:e(\"(~~?)(?:(?!~)<inner>)+\\\\2\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\\s\\S]+(?=\\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},\"code-snippet\":{pattern:/(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:[\"code\",\"keyword\"]},url:{pattern:e('!?\\\\[(?:(?!\\\\])<inner>)+\\\\](?:\\\\([^\\\\s)]+(?:[\\t ]+\"(?:\\\\\\\\.|[^\"\\\\\\\\])*\")?\\\\)|[ \\t]?\\\\[(?:(?!\\\\])<inner>)+\\\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\\[)[^\\]]+(?=\\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,lookbehind:!0},url:{pattern:/(^\\]\\()[^\\s)]+/,lookbehind:!0},string:{pattern:/(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,lookbehind:!0}}}}),[\"url\",\"bold\",\"italic\",\"strike\"].forEach((function(e){[\"url\",\"bold\",\"italic\",\"strike\",\"code-snippet\"].forEach((function(t){e!==t&&(n.languages.markdown[e].inside.content.inside[t]=n.languages.markdown[t])}))})),n.hooks.add(\"after-tokenize\",(function(n){\"markdown\"!==n.language&&\"md\"!==n.language||function n(e){if(e&&\"string\"!=typeof e)for(var t=0,a=e.length;t<a;t++){var i=e[t];if(\"code\"===i.type){var r=i.content[1],o=i.content[3];if(r&&o&&\"code-language\"===r.type&&\"code-block\"===o.type&&\"string\"==typeof r.content){var l=r.content.replace(/\\b#/g,\"sharp\").replace(/\\b\\+\\+/g,\"pp\"),s=\"language-\"+(l=(/[a-z][\\w-]*/i.exec(l)||[\"\"])[0].toLowerCase());o.alias?\"string\"==typeof o.alias?o.alias=[o.alias,s]:o.alias.push(s):o.alias=[s]}}else n(i.content)}}(n.tokens)})),n.hooks.add(\"wrap\",(function(e){if(\"code-block\"===e.type){for(var t=\"\",a=0,i=e.classes.length;a<i;a++){var s=e.classes[a],d=/language-(.+)/.exec(s);if(d){t=d[1];break}}var p=n.languages[t];if(p)e.content=n.highlight(e.content.replace(r,\"\").replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi,(function(n,e){var t;return\"#\"===(e=e.toLowerCase())[0]?(t=\"x\"===e[1]?parseInt(e.slice(2),16):Number(e.slice(1)),l(t)):o[e]||n})),p,t);else if(t&&\"none\"!==t&&n.plugins.autoloader){var u=\"md-\"+(new Date).valueOf()+\"-\"+Math.floor(1e16*Math.random());e.attributes.id=u,n.plugins.autoloader.loadLanguages(t,(function(){var e=document.getElementById(u);e&&(e.innerHTML=n.highlight(e.textContent,n.languages[t],t))}))}}}));var r=RegExp(n.languages.markup.tag.pattern.source,\"gi\"),o={amp:\"&\",lt:\"<\",gt:\">\",quot:'\"'},l=String.fromCodePoint||String.fromCharCode;n.languages.md=n.languages.markdown}(Prism);","Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\\s\\S])*?-->/,greedy:!0},prolog:{pattern:/<\\?[\\s\\S]+?\\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,greedy:!0,inside:{\"internal-subset\":{pattern:/(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/\"[^\"]*\"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\\]]/,\"doctype-tag\":/^DOCTYPE/i,name:/[^\\s<>'\"]+/}},cdata:{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,greedy:!0},tag:{pattern:/<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,greedy:!0,inside:{tag:{pattern:/^<\\/?[^\\s>\\/]+/,inside:{punctuation:/^<\\/?/,namespace:/^[^\\s>\\/:]+:/}},\"special-attr\":[],\"attr-value\":{pattern:/=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:\"attr-equals\"},{pattern:/^(\\s*)[\"']|[\"']$/,lookbehind:!0}]}},punctuation:/\\/?>/,\"attr-name\":{pattern:/[^\\s>\\/]+/,inside:{namespace:/^[^\\s>\\/:]+:/}}}},entity:[{pattern:/&[\\da-z]{1,8};/i,alias:\"named-entity\"},/&#x?[\\da-f]{1,8};/i]},Prism.languages.markup.tag.inside[\"attr-value\"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside[\"internal-subset\"].inside=Prism.languages.markup,Prism.hooks.add(\"wrap\",(function(a){\"entity\"===a.type&&(a.attributes.title=a.content.replace(/&/,\"&\"))})),Object.defineProperty(Prism.languages.markup.tag,\"addInlined\",{value:function(a,e){var s={};s[\"language-\"+e]={pattern:/(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\\[CDATA\\[|\\]\\]>$/i;var t={\"included-cdata\":{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,inside:s}};t[\"language-\"+e]={pattern:/[\\s\\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp(\"(<__[^>]*>)(?:<!\\\\[CDATA\\\\[(?:[^\\\\]]|\\\\](?!\\\\]>))*\\\\]\\\\]>|(?!<!\\\\[CDATA\\\\[)[^])*?(?=</__>)\".replace(/__/g,(function(){return a})),\"i\"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore(\"markup\",\"cdata\",n)}}),Object.defineProperty(Prism.languages.markup.tag,\"addAttribute\",{value:function(a,e){Prism.languages.markup.tag.inside[\"special-attr\"].push({pattern:RegExp(\"(^|[\\\"'\\\\s])(?:\"+a+\")\\\\s*=\\\\s*(?:\\\"[^\\\"]*\\\"|'[^']*'|[^\\\\s'\\\">=]+(?=[\\\\s>]))\",\"i\"),lookbehind:!0,inside:{\"attr-name\":/^[^\\s=]+/,\"attr-value\":{pattern:/=[\\s\\S]+/,inside:{value:{pattern:/(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,lookbehind:!0,alias:[e,\"language-\"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:\"attr-equals\"},/\"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend(\"markup\",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;","!function($){var e=[\"$eq\",\"$gt\",\"$gte\",\"$in\",\"$lt\",\"$lte\",\"$ne\",\"$nin\",\"$and\",\"$not\",\"$nor\",\"$or\",\"$exists\",\"$type\",\"$expr\",\"$jsonSchema\",\"$mod\",\"$regex\",\"$text\",\"$where\",\"$geoIntersects\",\"$geoWithin\",\"$near\",\"$nearSphere\",\"$all\",\"$elemMatch\",\"$size\",\"$bitsAllClear\",\"$bitsAllSet\",\"$bitsAnyClear\",\"$bitsAnySet\",\"$comment\",\"$elemMatch\",\"$meta\",\"$slice\",\"$currentDate\",\"$inc\",\"$min\",\"$max\",\"$mul\",\"$rename\",\"$set\",\"$setOnInsert\",\"$unset\",\"$addToSet\",\"$pop\",\"$pull\",\"$push\",\"$pullAll\",\"$each\",\"$position\",\"$slice\",\"$sort\",\"$bit\",\"$addFields\",\"$bucket\",\"$bucketAuto\",\"$collStats\",\"$count\",\"$currentOp\",\"$facet\",\"$geoNear\",\"$graphLookup\",\"$group\",\"$indexStats\",\"$limit\",\"$listLocalSessions\",\"$listSessions\",\"$lookup\",\"$match\",\"$merge\",\"$out\",\"$planCacheStats\",\"$project\",\"$redact\",\"$replaceRoot\",\"$replaceWith\",\"$sample\",\"$set\",\"$skip\",\"$sort\",\"$sortByCount\",\"$unionWith\",\"$unset\",\"$unwind\",\"$setWindowFields\",\"$abs\",\"$accumulator\",\"$acos\",\"$acosh\",\"$add\",\"$addToSet\",\"$allElementsTrue\",\"$and\",\"$anyElementTrue\",\"$arrayElemAt\",\"$arrayToObject\",\"$asin\",\"$asinh\",\"$atan\",\"$atan2\",\"$atanh\",\"$avg\",\"$binarySize\",\"$bsonSize\",\"$ceil\",\"$cmp\",\"$concat\",\"$concatArrays\",\"$cond\",\"$convert\",\"$cos\",\"$dateFromParts\",\"$dateToParts\",\"$dateFromString\",\"$dateToString\",\"$dayOfMonth\",\"$dayOfWeek\",\"$dayOfYear\",\"$degreesToRadians\",\"$divide\",\"$eq\",\"$exp\",\"$filter\",\"$first\",\"$floor\",\"$function\",\"$gt\",\"$gte\",\"$hour\",\"$ifNull\",\"$in\",\"$indexOfArray\",\"$indexOfBytes\",\"$indexOfCP\",\"$isArray\",\"$isNumber\",\"$isoDayOfWeek\",\"$isoWeek\",\"$isoWeekYear\",\"$last\",\"$last\",\"$let\",\"$literal\",\"$ln\",\"$log\",\"$log10\",\"$lt\",\"$lte\",\"$ltrim\",\"$map\",\"$max\",\"$mergeObjects\",\"$meta\",\"$min\",\"$millisecond\",\"$minute\",\"$mod\",\"$month\",\"$multiply\",\"$ne\",\"$not\",\"$objectToArray\",\"$or\",\"$pow\",\"$push\",\"$radiansToDegrees\",\"$range\",\"$reduce\",\"$regexFind\",\"$regexFindAll\",\"$regexMatch\",\"$replaceOne\",\"$replaceAll\",\"$reverseArray\",\"$round\",\"$rtrim\",\"$second\",\"$setDifference\",\"$setEquals\",\"$setIntersection\",\"$setIsSubset\",\"$setUnion\",\"$size\",\"$sin\",\"$slice\",\"$split\",\"$sqrt\",\"$stdDevPop\",\"$stdDevSamp\",\"$strcasecmp\",\"$strLenBytes\",\"$strLenCP\",\"$substr\",\"$substrBytes\",\"$substrCP\",\"$subtract\",\"$sum\",\"$switch\",\"$tan\",\"$toBool\",\"$toDate\",\"$toDecimal\",\"$toDouble\",\"$toInt\",\"$toLong\",\"$toObjectId\",\"$toString\",\"$toLower\",\"$toUpper\",\"$trim\",\"$trunc\",\"$type\",\"$week\",\"$year\",\"$zip\",\"$count\",\"$dateAdd\",\"$dateDiff\",\"$dateSubtract\",\"$dateTrunc\",\"$getField\",\"$rand\",\"$sampleRate\",\"$setField\",\"$unsetField\",\"$comment\",\"$explain\",\"$hint\",\"$max\",\"$maxTimeMS\",\"$min\",\"$orderby\",\"$query\",\"$returnKey\",\"$showDiskLoc\",\"$natural\"],t=\"(?:\"+(e=e.map((function($){return $.replace(\"$\",\"\\\\$\")}))).join(\"|\")+\")\\\\b\";$.languages.mongodb=$.languages.extend(\"javascript\",{}),$.languages.insertBefore(\"mongodb\",\"string\",{property:{pattern:/(?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)(?=\\s*:)/,greedy:!0,inside:{keyword:RegExp(\"^(['\\\"])?\"+t+\"(?:\\\\1)?$\")}}}),$.languages.mongodb.string.inside={url:{pattern:/https?:\\/\\/[-\\w@:%.+~#=]{1,256}\\.[a-z0-9()]{1,6}\\b[-\\w()@:%+.~#?&/=]*/i,greedy:!0},entity:{pattern:/\\b(?:(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\b/,greedy:!0}},$.languages.insertBefore(\"mongodb\",\"constant\",{builtin:{pattern:RegExp(\"\\\\b(?:\"+[\"ObjectId\",\"Code\",\"BinData\",\"DBRef\",\"Timestamp\",\"NumberLong\",\"NumberDecimal\",\"MaxKey\",\"MinKey\",\"RegExp\",\"ISODate\",\"UUID\"].join(\"|\")+\")\\\\b\"),alias:\"keyword\"}})}(Prism);","Prism.languages.objectivec=Prism.languages.extend(\"c\",{string:{pattern:/@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,greedy:!0},keyword:/\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,operator:/-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/}),delete Prism.languages.objectivec[\"class-name\"],Prism.languages.objc=Prism.languages.objectivec;","Prism.languages.python={comment:{pattern:/(^|[^\\\\])#.*/,lookbehind:!0,greedy:!0},\"string-interpolation\":{pattern:/(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,lookbehind:!0,inside:{\"format-spec\":{pattern:/(:)[^:(){}]+(?=\\}$)/,lookbehind:!0},\"conversion-option\":{pattern://,alias:\"punctuation\"},rest:null}},string:/[\\s\\S]+/}},\"triple-quoted-string\":{pattern:/(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,greedy:!0,alias:\"string\"},string:{pattern:/(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,greedy:!0},function:{pattern:/((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,lookbehind:!0},\"class-name\":{pattern:/(\\bclass\\s+)\\w+/i,lookbehind:!0},decorator:{pattern:/(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,lookbehind:!0,alias:[\"annotation\",\"punctuation\"],inside:{punctuation:/\\./}},keyword:/\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,builtin:/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,boolean:/\\b(?:False|None|True)\\b/,number:/\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,operator:/[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\\];(),.:]/},Prism.languages.python[\"string-interpolation\"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;","!function(a){var e={pattern:/\\\\[\\\\(){}[\\]^$+*?|.]/,alias:\"escape\"},n=/\\\\(?:x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u\\{[\\da-fA-F]+\\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,t=\"(?:[^\\\\\\\\-]|\"+n.source+\")\",s=RegExp(t+\"-\"+t),i={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:\"variable\"};a.languages.regex={\"char-class\":{pattern:/((?:^|[^\\\\])(?:\\\\\\\\)*)\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/,lookbehind:!0,inside:{\"char-class-negation\":{pattern:/(^\\[)\\^/,lookbehind:!0,alias:\"operator\"},\"char-class-punctuation\":{pattern:/^\\[|\\]$/,alias:\"punctuation\"},range:{pattern:s,inside:{escape:n,\"range-punctuation\":{pattern:/-/,alias:\"operator\"}}},\"special-escape\":e,\"char-set\":{pattern:/\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,alias:\"class-name\"},escape:n}},\"special-escape\":e,\"char-set\":{pattern:/\\.|\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,alias:\"class-name\"},backreference:[{pattern:/\\\\(?![123][0-7]{2})[1-9]/,alias:\"keyword\"},{pattern:/\\\\k<[^<>']+>/,alias:\"keyword\",inside:{\"group-name\":i}}],anchor:{pattern:/[$^]|\\\\[ABbGZz]/,alias:\"function\"},escape:n,group:[{pattern:/\\((?:\\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:\"punctuation\",inside:{\"group-name\":i}},{pattern:/\\)/,alias:\"punctuation\"}],quantifier:{pattern:/(?:[+*?]|\\{\\d+(?:,\\d*)?\\})[?+]?/,alias:\"number\"},alternation:{pattern:/\\|/,alias:\"keyword\"}}}(Prism);","Prism.languages.scala=Prism.languages.extend(\"java\",{\"triple-quoted-string\":{pattern:/\"\"\"[\\s\\S]*?\"\"\"/,greedy:!0,alias:\"string\"},string:{pattern:/(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},keyword:/<-|=>|\\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\\b/,number:/\\b0x(?:[\\da-f]*\\.)?[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e\\d+)?[dfl]?/i,builtin:/\\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\\b/,symbol:/'[^\\d\\s\\\\]\\w*/}),Prism.languages.insertBefore(\"scala\",\"triple-quoted-string\",{\"string-interpolation\":{pattern:/\\b[a-z]\\w*(?:\"\"\"(?:[^$]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*?\"\"\"|\"(?:[^$\"\\r\\n]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*\")/i,greedy:!0,inside:{id:{pattern:/^\\w+/,greedy:!0,alias:\"function\"},escape:{pattern:/\\\\\\$\"|\\$[$\"]/,greedy:!0,alias:\"symbol\"},interpolation:{pattern:/\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,greedy:!0,inside:{punctuation:/^\\$\\{?|\\}$/,expression:{pattern:/[\\s\\S]+/,inside:Prism.languages.scala}}},string:/[\\s\\S]+/}}}),delete Prism.languages.scala[\"class-name\"],delete Prism.languages.scala.function,delete Prism.languages.scala.constant;","Prism.languages.scss=Prism.languages.extend(\"css\",{comment:{pattern:/(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,lookbehind:!0},atrule:{pattern:/@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,inside:{rule:/@[\\w-]+/}},url:/(?:[-a-z]+-)?url(?=\\()/i,selector:{pattern:/(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:\"important\"},placeholder:/%[-\\w]+/,variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}},property:{pattern:/(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,inside:{variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}}}),Prism.languages.insertBefore(\"scss\",\"atrule\",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore(\"scss\",\"important\",{variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}),Prism.languages.insertBefore(\"scss\",\"function\",{\"module-modifier\":{pattern:/\\b(?:as|hide|show|with)\\b/i,alias:\"keyword\"},placeholder:{pattern:/%[-\\w]+/,alias:\"selector\"},statement:{pattern:/\\B!(?:default|optional)\\b/i,alias:\"keyword\"},boolean:/\\b(?:false|true)\\b/,null:{pattern:/\\bnull\\b/,alias:\"keyword\"},operator:{pattern:/(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|not|or)(?=\\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss;","!function(e){var a=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend(\"jsx\",a),delete e.languages.tsx.parameter,delete e.languages.tsx[\"literal-property\"];var t=e.languages.tsx.tag;t.pattern=RegExp(\"(^|[^\\\\w$]|(?=</))(?:\"+t.pattern.source+\")\",t.pattern.flags),t.lookbehind=!0}(Prism);","!function(e){e.languages.typescript=e.languages.extend(\"javascript\",{\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/}),e.languages.typescript.keyword.push(/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,/\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,/\\btype\\b(?=\\s*(?:[\\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript[\"literal-property\"];var s=e.languages.extend(\"typescript\",{});delete s[\"class-name\"],e.languages.typescript[\"class-name\"].inside=s,e.languages.insertBefore(\"typescript\",\"function\",{decorator:{pattern:/@[$\\w\\xA0-\\uFFFF]+/,inside:{at:{pattern:/^@/,alias:\"operator\"},function:/^[\\s\\S]+/}},\"generic-function\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,greedy:!0,inside:{function:/^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,generic:{pattern:/<[\\s\\S]+/,alias:\"class-name\",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);","!function(a){function e(e,n){a.languages[e]&&a.languages.insertBefore(e,\"comment\",{\"doc-comment\":n})}var n=a.languages.markup.tag,t={pattern:/\\/\\/\\/.*/,greedy:!0,alias:\"comment\",inside:{tag:n}},g={pattern:/'''.*/,greedy:!0,alias:\"comment\",inside:{tag:n}};e(\"csharp\",t),e(\"fsharp\",t),e(\"vbnet\",g)}(Prism);","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined' || !document.createRange) {\n\t\treturn;\n\t}\n\n\tPrism.plugins.KeepMarkup = true;\n\n\tPrism.hooks.add('before-highlight', function (env) {\n\t\tif (!env.element.children.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Prism.util.isActive(env.element, 'keep-markup', true)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dropTokens = Prism.util.isActive(env.element, 'drop-tokens', false);\n\t\t/**\n\t\t * Returns whether the given element should be kept.\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t * @returns {boolean}\n\t\t */\n\t\tfunction shouldKeep(element) {\n\t\t\tif (dropTokens && element.nodeName.toLowerCase() === 'span' && element.classList.contains('token')) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tvar pos = 0;\n\t\tvar data = [];\n\t\tfunction processElement(element) {\n\t\t\tif (!shouldKeep(element)) {\n\t\t\t\t// don't keep this element and just process its children\n\t\t\t\tprocessChildren(element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar o = {\n\t\t\t\t// Store original element so we can restore it after highlighting\n\t\t\t\telement: element,\n\t\t\t\tposOpen: pos\n\t\t\t};\n\t\t\tdata.push(o);\n\n\t\t\tprocessChildren(element);\n\n\t\t\to.posClose = pos;\n\t\t}\n\t\tfunction processChildren(element) {\n\t\t\tfor (var i = 0, l = element.childNodes.length; i < l; i++) {\n\t\t\t\tvar child = element.childNodes[i];\n\t\t\t\tif (child.nodeType === 1) { // element\n\t\t\t\t\tprocessElement(child);\n\t\t\t\t} else if (child.nodeType === 3) { // text\n\t\t\t\t\tpos += child.data.length;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tprocessChildren(env.element);\n\n\t\tif (data.length) {\n\t\t\t// data is an array of all existing tags\n\t\t\tenv.keepMarkup = data;\n\t\t}\n\t});\n\n\tPrism.hooks.add('after-highlight', function (env) {\n\t\tif (env.keepMarkup && env.keepMarkup.length) {\n\n\t\t\tvar walk = function (elt, nodeState) {\n\t\t\t\tfor (var i = 0, l = elt.childNodes.length; i < l; i++) {\n\n\t\t\t\t\tvar child = elt.childNodes[i];\n\n\t\t\t\t\tif (child.nodeType === 1) { // element\n\t\t\t\t\t\tif (!walk(child, nodeState)) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (child.nodeType === 3) { // text\n\t\t\t\t\t\tif (!nodeState.nodeStart && nodeState.pos + child.data.length > nodeState.node.posOpen) {\n\t\t\t\t\t\t\t// We found the start position\n\t\t\t\t\t\t\tnodeState.nodeStart = child;\n\t\t\t\t\t\t\tnodeState.nodeStartPos = nodeState.node.posOpen - nodeState.pos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (nodeState.nodeStart && nodeState.pos + child.data.length >= nodeState.node.posClose) {\n\t\t\t\t\t\t\t// We found the end position\n\t\t\t\t\t\t\tnodeState.nodeEnd = child;\n\t\t\t\t\t\t\tnodeState.nodeEndPos = nodeState.node.posClose - nodeState.pos;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnodeState.pos += child.data.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (nodeState.nodeStart && nodeState.nodeEnd) {\n\t\t\t\t\t\t// Select the range and wrap it with the element\n\t\t\t\t\t\tvar range = document.createRange();\n\t\t\t\t\t\trange.setStart(nodeState.nodeStart, nodeState.nodeStartPos);\n\t\t\t\t\t\trange.setEnd(nodeState.nodeEnd, nodeState.nodeEndPos);\n\t\t\t\t\t\tnodeState.node.element.innerHTML = '';\n\t\t\t\t\t\tnodeState.node.element.appendChild(range.extractContents());\n\t\t\t\t\t\trange.insertNode(nodeState.node.element);\n\t\t\t\t\t\trange.detach();\n\n\t\t\t\t\t\t// Process is over\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t\t// For each tag, we walk the DOM to reinsert it\n\t\t\tenv.keepMarkup.forEach(function (node) {\n\t\t\t\twalk(env.element, {\n\t\t\t\t\tnode: node,\n\t\t\t\t\tpos: 0\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Store new highlightedCode for later hooks calls\n\t\t\tenv.highlightedCode = env.element.innerHTML;\n\t\t}\n\t});\n}());\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t/**\n\t * Plugin name which is used as a class name for <pre> which is activating the plugin\n\t *\n\t * @type {string}\n\t */\n\tvar PLUGIN_NAME = 'line-numbers';\n\n\t/**\n\t * Regular expression used for determining line breaks\n\t *\n\t * @type {RegExp}\n\t */\n\tvar NEW_LINE_EXP = /\\n(?!$)/g;\n\n\n\t/**\n\t * Global exports\n\t */\n\tvar config = Prism.plugins.lineNumbers = {\n\t\t/**\n\t\t * Get node for provided line number\n\t\t *\n\t\t * @param {Element} element pre element\n\t\t * @param {number} number line number\n\t\t * @returns {Element|undefined}\n\t\t */\n\t\tgetLine: function (element, number) {\n\t\t\tif (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar lineNumberRows = element.querySelector('.line-numbers-rows');\n\t\t\tif (!lineNumberRows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;\n\t\t\tvar lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);\n\n\t\t\tif (number < lineNumberStart) {\n\t\t\t\tnumber = lineNumberStart;\n\t\t\t}\n\t\t\tif (number > lineNumberEnd) {\n\t\t\t\tnumber = lineNumberEnd;\n\t\t\t}\n\n\t\t\tvar lineIndex = number - lineNumberStart;\n\n\t\t\treturn lineNumberRows.children[lineIndex];\n\t\t},\n\n\t\t/**\n\t\t * Resizes the line numbers of the given element.\n\t\t *\n\t\t * This function will not add line numbers. It will only resize existing ones.\n\t\t *\n\t\t * @param {HTMLElement} element A `<pre>` element with line numbers.\n\t\t * @returns {void}\n\t\t */\n\t\tresize: function (element) {\n\t\t\tresizeElements([element]);\n\t\t},\n\n\t\t/**\n\t\t * Whether the plugin can assume that the units font sizes and margins are not depended on the size of\n\t\t * the current viewport.\n\t\t *\n\t\t * Setting this to `true` will allow the plugin to do certain optimizations for better performance.\n\t\t *\n\t\t * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tassumeViewportIndependence: true\n\t};\n\n\t/**\n\t * Resizes the given elements.\n\t *\n\t * @param {HTMLElement[]} elements\n\t */\n\tfunction resizeElements(elements) {\n\t\telements = elements.filter(function (e) {\n\t\t\tvar codeStyles = getStyles(e);\n\t\t\tvar whiteSpace = codeStyles['white-space'];\n\t\t\treturn whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line';\n\t\t});\n\n\t\tif (elements.length == 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar infos = elements.map(function (element) {\n\t\t\tvar codeElement = element.querySelector('code');\n\t\t\tvar lineNumbersWrapper = element.querySelector('.line-numbers-rows');\n\t\t\tif (!codeElement || !lineNumbersWrapper) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t/** @type {HTMLElement} */\n\t\t\tvar lineNumberSizer = element.querySelector('.line-numbers-sizer');\n\t\t\tvar codeLines = codeElement.textContent.split(NEW_LINE_EXP);\n\n\t\t\tif (!lineNumberSizer) {\n\t\t\t\tlineNumberSizer = document.createElement('span');\n\t\t\t\tlineNumberSizer.className = 'line-numbers-sizer';\n\n\t\t\t\tcodeElement.appendChild(lineNumberSizer);\n\t\t\t}\n\n\t\t\tlineNumberSizer.innerHTML = '0';\n\t\t\tlineNumberSizer.style.display = 'block';\n\n\t\t\tvar oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\treturn {\n\t\t\t\telement: element,\n\t\t\t\tlines: codeLines,\n\t\t\t\tlineHeights: [],\n\t\t\t\toneLinerHeight: oneLinerHeight,\n\t\t\t\tsizer: lineNumberSizer,\n\t\t\t};\n\t\t}).filter(Boolean);\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lines = info.lines;\n\t\t\tvar lineHeights = info.lineHeights;\n\t\t\tvar oneLinerHeight = info.oneLinerHeight;\n\n\t\t\tlineHeights[lines.length - 1] = undefined;\n\t\t\tlines.forEach(function (line, index) {\n\t\t\t\tif (line && line.length > 1) {\n\t\t\t\t\tvar e = lineNumberSizer.appendChild(document.createElement('span'));\n\t\t\t\t\te.style.display = 'block';\n\t\t\t\t\te.textContent = line;\n\t\t\t\t} else {\n\t\t\t\t\tlineHeights[index] = oneLinerHeight;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lineHeights = info.lineHeights;\n\n\t\t\tvar childIndex = 0;\n\t\t\tfor (var i = 0; i < lineHeights.length; i++) {\n\t\t\t\tif (lineHeights[i] === undefined) {\n\t\t\t\t\tlineHeights[i] = lineNumberSizer.children[childIndex++].getBoundingClientRect().height;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar wrapper = info.element.querySelector('.line-numbers-rows');\n\n\t\t\tlineNumberSizer.style.display = 'none';\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\tinfo.lineHeights.forEach(function (height, lineNumber) {\n\t\t\t\twrapper.children[lineNumber].style.height = height + 'px';\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Returns style declarations for the element\n\t *\n\t * @param {Element} element\n\t */\n\tfunction getStyles(element) {\n\t\tif (!element) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);\n\t}\n\n\tvar lastWidth = undefined;\n\twindow.addEventListener('resize', function () {\n\t\tif (config.assumeViewportIndependence && lastWidth === window.innerWidth) {\n\t\t\treturn;\n\t\t}\n\t\tlastWidth = window.innerWidth;\n\n\t\tresizeElements(Array.prototype.slice.call(document.querySelectorAll('pre.' + PLUGIN_NAME)));\n\t});\n\n\tPrism.hooks.add('complete', function (env) {\n\t\tif (!env.code) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar code = /** @type {Element} */ (env.element);\n\t\tvar pre = /** @type {HTMLElement} */ (code.parentNode);\n\n\t\t// works only for <code> wrapped inside <pre> (not inline)\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort if line numbers already exists\n\t\tif (code.querySelector('.line-numbers-rows')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only add line numbers if <code> or one of its ancestors has the `line-numbers` class\n\t\tif (!Prism.util.isActive(code, PLUGIN_NAME)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the class 'line-numbers' from the <code>\n\t\tcode.classList.remove(PLUGIN_NAME);\n\t\t// Add the class 'line-numbers' to the <pre>\n\t\tpre.classList.add(PLUGIN_NAME);\n\n\t\tvar match = env.code.match(NEW_LINE_EXP);\n\t\tvar linesNum = match ? match.length + 1 : 1;\n\t\tvar lineNumbersWrapper;\n\n\t\tvar lines = new Array(linesNum + 1).join('<span></span>');\n\n\t\tlineNumbersWrapper = document.createElement('span');\n\t\tlineNumbersWrapper.setAttribute('aria-hidden', 'true');\n\t\tlineNumbersWrapper.className = 'line-numbers-rows';\n\t\tlineNumbersWrapper.innerHTML = lines;\n\n\t\tif (pre.hasAttribute('data-start')) {\n\t\t\tpre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);\n\t\t}\n\n\t\tenv.element.appendChild(lineNumbersWrapper);\n\n\t\tresizeElements([pre]);\n\n\t\tPrism.hooks.run('line-numbers', env);\n\t});\n\n\tPrism.hooks.add('line-numbers', function (env) {\n\t\tenv.plugins = env.plugins || {};\n\t\tenv.plugins.lineNumbers = true;\n\t});\n\n}());\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading…';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '✖ Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQ3MV80MzEzKSI+IDxwYXRoIGQ9Ik02IDExLjI1QzguODk5NSAxMS4yNSAxMS4yNSA4Ljg5OTUgMTEuMjUgNkMxMS4yNSAzLjEwMDUxIDguODk5NSAwLjc1IDYgMC43NUMzLjEwMDUxIDAuNzUgMC43NSAzLjEwMDUxIDAuNzUgNkMwLjc1IDguODk5NSAzLjEwMDUxIDExLjI1IDYgMTEuMjVaIiBzdHJva2U9IiM5QkE3QjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPHBhdGggZD0iTTguMjUgNkgzLjc1IiBzdHJva2U9IiM5QkE3QjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQ3MV80MzEzIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FsZW5kYXIiPiA8cGF0aCBkPSJNMjAsM2gtMXYyYzAsMS4xMDQtMC44OTYsMi0yLDJzLTItMC44OTYtMi0yVjNIOXYyYzAsMS4xMDQtMC44OTYsMi0yLDJTNSw2LjEwNCw1LDVWM0g0QzIuODk1LDMsMiwzLjg5NSwyLDV2MTR2MSBjMCwxLjEwNSwwLjg5NSwyLDIsMmgxNmMxLjEwNSwwLDItMC44OTUsMi0ydi0xVjVDMjIsMy44OTUsMjEuMTA1LDMsMjAsM3ogTTcsMTguNUM3LDE4Ljc3NSw2Ljc3NSwxOSw2LjUsMTloLTEgQzUuMjI1LDE5LDUsMTguNzc1LDUsMTguNXYtMUM1LDE3LjIyNSw1LjIyNSwxNyw1LjUsMTdoMUM2Ljc3NSwxNyw3LDE3LjIyNSw3LDE3LjVWMTguNXogTTcsMTQuNUM3LDE0Ljc3NSw2Ljc3NSwxNSw2LjUsMTVoLTEgQzUuMjI1LDE1LDUsMTQuNzc1LDUsMTQuNXYtMUM1LDEzLjIyNSw1LjIyNSwxMyw1LjUsMTNoMUM2Ljc3NSwxMyw3LDEzLjIyNSw3LDEzLjVWMTQuNXogTTcsMTAuNUM3LDEwLjc3NSw2Ljc3NSwxMSw2LjUsMTFoLTEgQzUuMjI1LDExLDUsMTAuNzc1LDUsMTAuNXYtMUM1LDkuMjI1LDUuMjI1LDksNS41LDloMUM2Ljc3NSw5LDcsOS4yMjUsNyw5LjVWMTAuNXogTTExLDE4LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTksOSwxOC43NzUsOSwxOC41di0xQzksMTcuMjI1LDkuMjI1LDE3LDkuNSwxN2gxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTguNXogTTExLDE0LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTUsOSwxNC43NzUsOSwxNC41di0xQzksMTMuMjI1LDkuMjI1LDEzLDkuNSwxM2gxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTQuNXogTTExLDEwLjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTEsOSwxMC43NzUsOSwxMC41di0xQzksOS4yMjUsOS4yMjUsOSw5LjUsOWgxQzEwLjc3NSw5LDExLDkuMjI1LDExLDkuNVYxMC41eiBNMTUsMTguNWMwLDAuMjc1LTAuMjI1LDAuNS0wLjUsMC41aC0xIGMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNVYxOC41eiBNMTUsMTQuNWMwLDAuMjc1LTAuMjI1LDAuNS0wLjUsMC41IGgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNVYxNC41eiBNMTUsMTAuNSBjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMUMxMyw5LjIyNSwxMy4yMjUsOSwxMy41LDloMUMxNC43NzUsOSwxNSw5LjIyNSwxNSw5LjVWMTAuNXogTTE5LDE4LjUgYzAsMC4yNzUtMC4yMjUsMC41LTAuNSwwLjVoLTFjLTAuMjc1LDAtMC41LTAuMjI1LTAuNS0wLjV2LTFjMC0wLjI3NSwwLjIyNS0wLjUsMC41LTAuNWgxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTguNXogTTE5LDE0LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNSBWMTQuNXogTTE5LDEwLjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMUMxNyw5LjIyNSwxNy4yMjUsOSwxNy41LDloMUMxOC43NzUsOSwxOSw5LjIyNSwxOSw5LjUgVjEwLjV6IE02LDVWMmMwLTAuNTUyLDAuNDQ4LTEsMS0xczEsMC40NDgsMSwxdjNjMCwwLjU1Mi0wLjQ0OCwxLTEsMVM2LDUuNTUyLDYsNXogTTE2LDVWMmMwLTAuNTUyLDAuNDQ3LTEsMS0xczEsMC40NDgsMSwxdjMgYzAsMC41NTItMC40NDcsMS0xLDFTMTYsNS41NTIsMTYsNXoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDI0IDI0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+IDxnIGlkPSJjYW5jZWwiPiA8cGF0aCBkPSJNMTkuMDcxLDE3LjY1N0wxMy40MTQsMTJsNS42NTctNS42NTdjMC4zOS0wLjM5LDAuMzktMS4wMjQsMC0xLjQxNHMtMS4wMjQtMC4zOS0xLjQxNCwwTDEyLDEwLjU4Nkw2LjM0Myw0LjkyOSBjLTAuMzktMC4zOS0xLjAyNC0wLjM5LTEuNDE0LDBzLTAuMzksMS4wMjQsMCwxLjQxNEwxMC41ODYsMTJsLTUuNjU3LDUuNjU3Yy0wLjM5MSwwLjM5MS0wLjM5LDEuMDI0LDAsMS40MTRzMS4wMjMsMC4zOTEsMS40MTQsMCBMMTIsMTMuNDE0bDUuNjU3LDUuNjU3YzAuMzksMC4zOSwxLjAyNCwwLjM5LDEuNDE0LDBTMTkuNDYyLDE4LjA0NywxOS4wNzEsMTcuNjU3eiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic21zIj4gPHBhdGggZD0iTTE4LjQ4MSwxMGgtMS45NDdjLTIuMTg4LDAtNC4xNDIsMS42MDItNC40NzksMy44NDhDMTEuNjMsMTYuNjc4LDEzLjY5OCwxOSwxNi4zNDcsMTloMS4xSDE4IGMwLjI2NCwwLjQwOSwwLjQ3NCwxLjA0MiwwLjQ3NCwxLjU3MWMwLDAuMjY1LTAuMDM5LDAuNjExLTAuMTE0LDAuOTM5Yy0wLjA3NSwwLjMyOSwwLjI1MiwwLjYwNCwwLjUzNiwwLjQ0MSBjMS45NjgtMS4xMzIsNC4wNDctNC4zMTcsNC4xMDMtNy4yNTlDMjMuMDQ4LDEyLjExMiwyMC45NjUsMTAsMTguNDgxLDEweiIvPiA8cGF0aCBzdHlsZT0ib3BhY2l0eTowLjU7IiBkPSJNMTYuOTIxLDcuNDUxQzE2LjQzMSw0LjI2OSwxMy41ODgsMiwxMC40MDYsMkg3LjU3M0MzLjk2LDIsMC45Myw0Ljk5MiwxLjAwMSw4LjY0OCBjMC4wODIsNC4xNjgsMy4xMDUsOC42NzksNS45NjgsMTAuMjgzYzAuNDE0LDAuMjMyLDAuODg5LTAuMTU5LDAuNzgtMC42MjRjLTAuMTA5LTAuNDY2LTAuMTY2LTAuOTU1LTAuMTY2LTEuMzMxIGMwLTAuNzUsMC4wMzMtMS4zOTYsMC40MTctMS45NzZoMC44MDRoMS42YzAuMjA2LDAsMC40MS0wLjAxNSwwLjYxMi0wLjAzNWMtMC4wMjktMC40MTctMC4wMTUtMC44NDEsMC4wNDktMS4yNjYgQzExLjQ2NywxMS4wMiwxMy44MTgsOSwxNi41MzMsOWgwLjQzM0MxNy4wMTIsOC40OTYsMTcuMDAyLDcuOTc4LDE2LjkyMSw3LjQ1MXoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzY0KSI+IDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMS44MTA2NiA2LjAwMDA2TDMuOTA1MzMgMy45MDUzOEwyLjg0NDY3IDIuODQ0NzNMMC4yMTk2NyA1LjQ2OTczQy0wLjA3MzIyMzMgNS43NjI2MiAtMC4wNzMyMjMzIDYuMjM3NDkgMC4yMTk2NyA2LjUzMDM4TDIuODQ0NjcgOS4xNTU0TDMuOTA1MzMgOC4wOTQ3NUwxLjgxMDY2IDYuMDAwMDZaTTQuMTU5NTggOC40ODg0Mkw2LjQ1NDU4IDIuOTM4NEw3Ljg0MDcyIDMuNTExNkw1LjU0NTc0IDkuMDYxNTdMNC4xNTk1OCA4LjQ4ODQyWk0xMS43ODAzIDUuNDY5NzNMOS4xNTUzMiAyLjg0NDczTDguMDk0NjcgMy45MDUzOEwxMC4xODkzIDYuMDAwMDZMOC4wOTQ2NyA4LjA5NDc1TDkuMTU1MzIgOS4xNTU0TDExLjc4MDMgNi41MzAzOEMxMi4wNzMyIDYuMjM3NDkgMTIuMDczMiA1Ljc2MjYyIDExLjc4MDMgNS40Njk3M1oiIGZpbGw9IndoaXRlIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzY0Ij4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE4OV80Mjk4OSkiPiA8cGF0aCBkPSJNNy41IDQuNUgxLjVWMTAuNUg3LjVWNC41WiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNMy43NSA0LjVWMS41SDEwLjVWOC4yNUg3LjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPC9nPiA8ZGVmcz4gPGNsaXBQYXRoIGlkPSJjbGlwMF8xODlfNDI5ODkiPiA8cmVjdCB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9IndoaXRlIiAvPiA8L2NsaXBQYXRoPiA8L2RlZnM+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDIuMjVDMCAxLjgzNTc5IDAuMzM1Nzg2IDEuNSAwLjc1IDEuNUgxMS4yNUMxMS42NjQyIDEuNSAxMiAxLjgzNTc5IDEyIDIuMjVWNC41SDEwLjVWM0gxLjVWOC4yNUg0LjVWOS43NUgwLjc1QzAuMzM1Nzg2IDkuNzUgMCA5LjQxNDIzIDAgOVYyLjI1Wk05Ljc1IDcuNUgxMlY5SDkuNzVWMTEuMjVIOC4yNVY5SDZWNy41SDguMjVWNS4yNUg5Ljc1VjcuNVoiIGZpbGw9IndoaXRlIiAvPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTExLjcwNjcgMy4yNjY2N0wxMi4wMjY3IDQuMDEzMzNWMTIuOTczM0wxMS4wMTMzIDEzLjk4NjdIMkwwLjk4NjY2NyAxMi45NzMzVjAuOTczMzMzTDIgMC4wMTMzMzMzSDguMDI2NjdMOC43MiAwLjI4TDExLjcwNjcgMy4yNjY2N1pNMTEuMDEzMyAxMi45NzMzVjQuOTczMzNINy4wMTMzM1YwLjk3MzMzM0gyVjEyLjk3MzNIMTEuMDEzM1pNOC4wMjY2NyA0LjAxMzMzSDExLjAxMzNMOC4wMjY2NyAwLjk3MzMzM1Y0LjAxMzMzWiIgZmlsbD0iI0M1QzVDNSIvPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wLjc1IDMuODU2NjZMMS43MTMzNSAyLjg5MzMxTDYgNy4xNzk0M0wxMC4yODY3IDIuODkzMzFMMTEuMjUgMy44NTY2Nkw2IDkuMTA2NjZMMC43NSAzLjg1NjY2WiIgZmlsbD0iI0QxRDVEQiIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4gPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTEyIDEzLjc1QzEyLjk2NjUgMTMuNzUgMTMuNzUgMTIuOTY2NSAxMy43NSAxMkMxMy43NSAxMS4wMzM1IDEyLjk2NjUgMTAuMjUgMTIgMTAuMjVDMTEuMDMzNSAxMC4yNSAxMC4yNSAxMS4wMzM1IDEwLjI1IDEyQzEwLjI1IDEyLjk2NjUgMTEuMDMzNSAxMy43NSAxMiAxMy43NVoiIGZpbGw9IiMwMDAwMDAiLz4gPHBhdGggZD0iTTEyIDYuNzVDMTIuOTY2NSA2Ljc1IDEzLjc1IDUuOTY2NSAxMy43NSA1QzEzLjc1IDQuMDMzNSAxMi45NjY1IDMuMjUgMTIgMy4yNUMxMS4wMzM1IDMuMjUgMTAuMjUgNC4wMzM1IDEwLjI1IDVDMTAuMjUgNS45NjY1IDExLjAzMzUgNi43NSAxMiA2Ljc1WiIgZmlsbD0iIzAwMDAwMCIvPiA8cGF0aCBkPSJNMTIgMjAuNzVDMTIuOTY2NSAyMC43NSAxMy43NSAxOS45NjY1IDEzLjc1IDE5QzEzLjc1IDE4LjAzMzUgMTIuOTY2NSAxNy4yNSAxMiAxNy4yNUMxMS4wMzM1IDE3LjI1IDEwLjI1IDE4LjAzMzUgMTAuMjUgMTlDMTAuMjUgMTkuOTY2NSAxMS4wMzM1IDIwLjc1IDEyIDIwLjc1WiIgZmlsbD0iIzAwMDAwMCIvPiA8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjQ0Nzk5IDAuMTA2NjkxQzEuMDc4ODYgLTAuMDc3OTk5OSAwLjYzNDE5MiAtMC4wMTY5MjYxIDAuMzI4NTI4IDAuMjYwNDQ0QzAuMDIyODY0NCAwLjUzNzgxMyAtMC4wODA5OCAwLjk3NDQ4MiAwLjA2NzEwMDEgMS4zNTk3NkwyLjYyMTIyIDguMDA1MDVMMC4wNjcyODQ3IDE0LjYzOTdDLTAuMDgwOTg2OSAxNS4wMjQ5IDAuMDIyNjE2OCAxNS40NjE2IDAuMzI4MTEgMTUuNzM5MUMwLjYzMzYwNCAxNi4wMTY2IDEuMDc4MjIgMTYuMDc4IDEuNDQ3NDQgMTUuODkzNUwxNS40NDY0IDguODk5OTFDMTUuNzg1MyA4LjczMDYzIDE1Ljk5OTQgOC4zODQ0MiAxNS45OTk1IDguMDA1NjRDMTUuOTk5NiA3LjYyNjg1IDE1Ljc4NTcgNy4yODA1MiAxNS40NDcgNy4xMTEwM0wxLjQ0Nzk5IDAuMTA2NjkxWk00LjM3OTYxIDcuMDA1MzNMMi44NTkwMyAzLjA0OTA3TDEwLjc2NjEgNy4wMDUzM0g0LjM3OTYxWk00LjM3OTIzIDkuMDA1MzNMMi44NTk5NCAxMi45NTIyTDEwLjc2MDIgOS4wMDUzM0g0LjM3OTIzWiIgZmlsbD0iIzA5NzJEMyIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iZXJyb3JfaW5saW5lIj4gPHBhdGggZD0iTTEyLDFDNS45MiwxLDEsNS45MiwxLDEyYzAsNi4wOCw0LjkyLDExLDExLDExczExLTQuOTIsMTEtMTFDMjMsNS45MiwxOC4wOCwxLDEyLDF6IE0xMiwxOGMtMC41NSwwLTEtMC40NS0xLTFzMC40NS0xLDEtMSBzMSwwLjQ1LDEsMVMxMi41NSwxOCwxMiwxOHogTTEzLDEzLjg3NkMxMywxNC40OTUsMTIuNTUsMTUsMTIsMTVzLTEtMC41MDUtMS0xLjEyNFY3LjEyNEMxMSw2LjUwNSwxMS40NSw2LDEyLDZzMSwwLjUwNSwxLDEuMTI0IFYxMy44NzZ6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYzKSI+IDxwYXRoIGQ9Ik03LjUgMS41SDEwLjVWNC41IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgLz4gPHBhdGggZD0iTTQuNSA3LjVMMTAuNSAxLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMTAuNSA2Ljc4NlYxMC41SDEuNVYxLjVINS4yNSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzYzIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icmVkZXllIj4gPHBhdGggc3R5bGU9Im9wYWNpdHk6MC41OyIgZD0iTTE1LDEyYy0xLjEwNSwwLTItMC44OTUtMi0yYzAtMC42NCwwLjMwNi0xLjIwMiwwLjc3My0xLjU2OUMxMy4yMzYsOC4xNjQsMTIuNjQsOCwxMiw4IGMtMi4yMDksMC00LDEuNzkxLTQsNGMwLDIuMjA5LDEuNzkxLDQsNCw0czQtMS43OTEsNC00YzAtMC4wOS0wLjAyMS0wLjE3NC0wLjAyNi0wLjI2M0MxNS42ODQsMTEuOSwxNS4zNTUsMTIsMTUsMTJ6Ii8+IDxwYXRoIGQ9Ik0yMi44NDIsMTEuNDZDMjIuNjUyLDExLjE2LDE4LjAwMSw0LDEyLDRTMS4zNDgsMTEuMTYsMS4xNTgsMTEuNDZjLTAuMjEsMC4zMy0wLjIxLDAuNzUsMCwxLjA4IEMxLjM0OCwxMi44NCw1Ljk5OSwyMCwxMiwyMHMxMC42NTItNy4xNiwxMC44NDItNy40NkMyMy4wNTMsMTIuMjEsMjMuMDUzLDExLjc5LDIyLjg0MiwxMS40NnogTTEyLDE3IGMtMi43NjIsMC01LjAwMS0yLjIzOS01LjAwMS01UzkuMjM4LDcsMTIsN3M1LjAwMSwyLjIzOSw1LjAwMSw1UzE0Ljc2MiwxNywxMiwxN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iaW5mb3JtYXRpb24iPiA8cGF0aCBkPSJNMTIsMUM1LjkyNSwxLDEsNS45MjUsMSwxMnM0LjkyNSwxMSwxMSwxMXMxMS00LjkyNSwxMS0xMVMxOC4wNzUsMSwxMiwxeiBNMTQsMTdjMCwxLjEwNS0wLjg5NSwyLTIsMnMtMi0wLjg5NS0yLTJ2LTUgYzAtMS4xMDUsMC44OTUtMiwyLTJzMiwwLjg5NSwyLDJWMTd6IE0xMiw4Yy0xLjEwNSwwLTItMC44OTUtMi0yYzAtMS4xMDUsMC44OTUtMiwyLTJzMiwwLjg5NSwyLDJDMTQsNy4xMDUsMTMuMTA1LDgsMTIsOHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FyZXRfbGVmdCI+IDxwYXRoIGQ9Ik0xNCwxOGMtMC4yNTYsMC0wLjUxMi0wLjA5OC0wLjcwNy0wLjI5M2wtNS01Yy0wLjM5MS0wLjM5MS0wLjM5MS0xLjAyMywwLTEuNDE0bDUtNWMwLjM5MS0wLjM5MSwxLjAyMy0wLjM5MSwxLjQxNCwwIHMwLjM5MSwxLjAyMywwLDEuNDE0TDEwLjQxNCwxMmw0LjI5Myw0LjI5M2MwLjM5MSwwLjM5MSwwLjM5MSwxLjAyMywwLDEuNDE0QzE0LjUxMiwxNy45MDIsMTQuMjU2LDE4LDE0LDE4eiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibGlnaHQiPiA8cGF0aCBkPSJNNy4xMDYsMTNoOS43ODlDMTguMTkyLDExLjcyOSwxOSw5Ljk2LDE5LDhjMC0zLjg2Ni0zLjEzNC03LTctN1M1LDQuMTM0LDUsOEM1LDkuOTYsNS44MDgsMTEuNzI5LDcuMTA2LDEzeiIvPiA8cGF0aCBzdHlsZT0ib3BhY2l0eTowLjU7IiBkPSJNMTQsMjFoMXYxYzAsMC41NTMtMC40NDcsMS0xLDFoLTRjLTAuNTUyLDAtMS0wLjQ0Ny0xLTF2LTFoMUgxNHogTTcsMTRjMCwwLDEsMS41LDEsM2MwLDEsMCwyLDEsM2g2IGMxLTEsMS0yLDEtM2MwLTEuNSwxLTMsMS0zSDd6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iaHlwZXJsaW5rIj4gPHBhdGggZD0iTTE2LjUsNWgtNGMtMi4xMywwLTMuOTgsMS4yMi00Ljg5LDNoMi40NWMwLjYzLTAuNjIsMS40OS0xLDIuNDQtMWg0YzEuOTMsMCwzLjUsMS41NywzLjUsMy41UzE4LjQzLDE0LDE2LjUsMTRoLTQgYy0xLjM5LDAtMi42LTAuODItMy4xNS0ySDcuMjFjMC42NSwyLjMsMi43OCw0LDUuMjksNGg0YzMuMDMsMCw1LjUtMi40Nyw1LjUtNS41QzIyLDcuNDcsMTkuNTMsNSwxNi41LDV6IE0xMS41LDE4aC00IEM1LjU3LDE4LDQsMTYuNDMsNCwxNC41UzUuNTcsMTEsNy41LDExaDRjMS4zOSwwLDIuNiwwLjgyLDMuMTUsMmgyLjE0Yy0wLjY1LTIuMy0yLjc4LTQtNS4yOS00aC00QzQuNDcsOSwyLDExLjQ3LDIsMTQuNSBDMiwxNy41Myw0LjQ3LDIwLDcuNSwyMGg0YzIuMTMsMCwzLjk4LTEuMjIsNC44OS0zaC0yLjQ1QzEzLjMxLDE3LjYyLDEyLjQ1LDE4LDExLjUsMTh6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iYW5ub3VuY2VyIj4gPHBhdGggZD0iTTIwLjg5OSwxOS4zOTRsLTYuNDktMTUuMDk1bC0xMS4xNCwxMS4xNGw4LjUzMSwzLjY1M2wtMS42NjksMS44MjFjLTAuMTA2LDAuMTE3LTAuMTUyLDAuMjc2LTAuMTIzLDAuNDMyIGMwLjAzLDAuMTU1LDAuMTMxLDAuMjg3LDAuMjcyLDAuMzU2bDIuNTcxLDEuMjVjMC4wNywwLjAzNCwwLjE0NSwwLjA1LDAuMjE5LDAuMDVjMC4xMzcsMCwwLjI3Mi0wLjA1NywwLjM2OS0wLjE2M2wyLTIuMTg3IGwyLjk0MiwxLjI2TDIwLjg5OSwxOS4zOTR6Ii8+IDxwYXRoIHN0eWxlPSJvcGFjaXR5OjAuNTsiIGQ9Ik05LjUsNkM5LjMzOSw2LDkuMTgsNS45MjIsOS4wODQsNS43NzdsLTItM2MtMC4xNTMtMC4yMy0wLjA5MS0wLjU0LDAuMTM5LTAuNjkzIHMwLjU0MS0wLjA5MiwwLjY5MywwLjEzOWwyLDNjMC4xNTMsMC4yMywwLjA5MSwwLjU0LTAuMTM5LDAuNjkzQzkuNjkyLDUuOTczLDkuNTk2LDYsOS41LDZ6IE00LjkxNiwxMC43NzcgYzAuMTUzLTAuMjMsMC4wOTEtMC41NC0wLjEzOS0wLjY5M2wtMy0yQzEuNTQ1LDcuOTMsMS4yMzYsNy45OTMsMS4wODQsOC4yMjNjLTAuMTUzLDAuMjMtMC4wOTEsMC41NCwwLjEzOSwwLjY5M2wzLDIgQzQuMzA4LDEwLjk3Myw0LjQwNCwxMSw0LjUsMTFDNC42NjEsMTEsNC44MiwxMC45MjIsNC45MTYsMTAuNzc3eiBNNi44NTQsNy44NTRjMC4xOTUtMC4xOTUsMC4xOTUtMC41MTIsMC0wLjcwN2wtNC00IGMtMC4xOTUtMC4xOTUtMC41MTItMC4xOTUtMC43MDcsMHMtMC4xOTUsMC41MTIsMCwwLjcwN2w0LDRDNi4yNDQsNy45NTEsNi4zNzIsOCw2LjUsOFM2Ljc1Niw3Ljk1MSw2Ljg1NCw3Ljg1NHogTTE4Ljg1NCwyMi44NTQgbDMtM2MwLjE5NS0wLjE5NSwwLjE5NS0wLjUxMiwwLTAuNzA3cy0wLjUxMi0wLjE5NS0wLjcwNywwbC0zLDNjLTAuMTk1LDAuMTk1LTAuMTk1LDAuNTEyLDAsMC43MDcgQzE4LjI0NCwyMi45NTEsMTguMzcyLDIzLDE4LjUsMjNTMTguNzU2LDIyLjk1MSwxOC44NTQsMjIuODU0eiBNMi44NTQsMTUuODU0bDEyLTEyYzAuMTk1LTAuMTk1LDAuMTk1LTAuNTEyLDAtMC43MDcgcy0wLjUxMi0wLjE5NS0wLjcwNywwbC0xMiwxMmMtMC4xOTUsMC4xOTUtMC4xOTUsMC41MTIsMCwwLjcwN0MyLjI0NCwxNS45NTEsMi4zNzIsMTYsMi41LDE2UzIuNzU2LDE1Ljk1MSwyLjg1NCwxNS44NTR6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibWVudSI+IDxwYXRoIGQ9Ik0yMSw4SDNDMi40NDgsOCwyLDcuNTUyLDIsN3MwLjQ0OC0xLDEtMWgxOGMwLjU1MywwLDEsMC40NDgsMSwxUzIxLjU1Myw4LDIxLDh6IE0yMiwxMmMwLTAuNTUyLTAuNDQ3LTEtMS0xSDMgYy0wLjU1MiwwLTEsMC40NDgtMSwxczAuNDQ4LDEsMSwxaDE4QzIxLjU1MywxMywyMiwxMi41NTIsMjIsMTJ6IE0yMiwxN2MwLTAuNTUzLTAuNDQ3LTEtMS0xSDNjLTAuNTUyLDAtMSwwLjQ0Ny0xLDFzMC40NDgsMSwxLDEgaDE4QzIxLjU1MywxOCwyMiwxNy41NTMsMjIsMTd6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icmVtb3ZlIj4gPHBhdGggZD0iTTIxLDEzSDNjLTAuNTUyLDAtMS0wLjQ0OC0xLTFzMC40NDgtMSwxLTFoMThjMC41NTIsMCwxLDAuNDQ4LDEsMVMyMS41NTIsMTMsMjEsMTN6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiBpZD0ic3ZnNDEiIHdpZHRoPSIyMi45NDU4MThtbSIgaGVpZ2h0PSIyNS45MjU4NDRtbSIgdmlld0JveD0iMCAwIDg2LjcyNDM1IDk3Ljk4NzQ0MyIgc29kaXBvZGk6ZG9jbmFtZT0iTXluYWhJY29uV2hpdGUuc3ZnIiBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEgKGM0ZThmOWUsIDIwMjEtMDUtMjQpIiB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPiA8c29kaXBvZGk6bmFtZWR2aWV3IGlkPSJuYW1lZHZpZXc2IiBwYWdlY29sb3I9IiNmZmZmZmYiIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiBib3JkZXJvcGFjaXR5PSIxLjAiIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiIHNob3dncmlkPSJmYWxzZSIgdW5pdHM9Im1tIiBmaXQtbWFyZ2luLXRvcD0iMCIgZml0LW1hcmdpbi1sZWZ0PSIwIiBmaXQtbWFyZ2luLXJpZ2h0PSIwIiBmaXQtbWFyZ2luLWJvdHRvbT0iMCIgaW5rc2NhcGU6em9vbT0iMi4yNTAwMDAxIiBpbmtzY2FwZTpjeD0iNTQuODg4ODg3IiBpbmtzY2FwZTpjeT0iODMuMzMzMzMxIiBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEyOTYiIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDMiIGlua3NjYXBlOndpbmRvdy14PSIwIiBpbmtzY2FwZTp3aW5kb3cteT0iMjMiIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9Imc0NyIgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIiAvPiA8ZGVmcyBpZD0iZGVmczQ1IiAvPiA8ZyBpZD0iZzQ3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEwLjU3MjU3LC04OS4zNDQxMzUpIj4gPHBhdGggaWQ9InBhdGgxMTkiIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuNjY2NjY3IiBkPSJtIDEzMi4zMDczLDE3NS42OTcyOCBjIC0xMC45OTE5LC02LjM5MTk2IC0yMC41NDgzLC0xMS43MTUyNiAtMjEuMDE0NzMsLTEyLjM1MzE0IC0xLC0xIC0wLjY2NjY2LC03LjEyMzE5IC0wLjY2NjY2LC0yNS4wOTAyNSAwLC0yMy40NDI5MiAwLjAwNCwtMjMuNTA2MTkgMS41LC0yNS4xMzk0NSAyLjI2NjQxLC0yLjQ3Mzk5IDM5LjY3MSwtMjMuNzcwMzA1IDQxLjc0OTg2LC0yMy43NzAzMDUgMi4wMDU4LDAgNDAuMzc5NDQsMjEuOTA4MTk1IDQyLjI2ODgxLDI0LjEzMjAwNSAxLjAyNzg2LDEuMjA5ODEgMS4xNTU3OCwyLjcxNDY4IDEuMTUyMjgsOS45NzEwOCBsIC0wLjAwNCw4Ljg5NjkyIGMgLTIuNDU5NDIsMS40Mzk5NCAtNS42MzMwNCwyLjY5MjU5IC03Ljk2NjE3LDQuMDM4NjQgLTAuMzcxOCwtMC4xNTMyNyAtMC4wNjg3LC0xLjAzODYzIC0wLjA1NDQsLTguODI2NTQgMC4wMjA2LC0xMS4yMTIxIDAuMDIwNiwtOS4yMTIxIC0xLjUxODY4LC0xMC4zMTg3NiAtMS41MjExNCwtMS4wOTM2NSAtMzIuNTE5MzMsLTE4LjU2MDAwOCAtMzMuODQ0MTYsLTE4LjU2MDAwOCAtMS4yNTIzNSwwIC0zMS4wNDUyOSwxNi45Njg1NjggLTMzLjExNjU5LDE4Ljg2MTU0OCAtMS40OTAxOCwxLjM2MTg5IC0xLjUsMS40OTg2NiAtMS41LDIwLjg4NzQgdiAxOS41MTY1MyBsIDIuMTY2NjcsMS42MDIyOSBjIDEuMTkxNjcsMC44ODEyNyA4LjQ4MzAzLDUuMjQ2NTQgMTYuMjAzMDMsOS43MDA2IDEwLjI1NTM0LDUuOTE2ODQgMTQuNjMzNjgsOC4wOTgzIDE2LjI1MzgxLDguMDk4MyAxLjYxNjk0LDAgNi4yMTA5MywtMi4yODA3NCAxNi45NjM2NCwtOC40MjE4IDguMTEwNCwtNC42MzE5OCAxNS4xODIwNCwtOS40ODY3MyAxNi4xNzAwNSwtMTAuMTg5NDUgMi4xNjY2NiwtMS41NDEwMyAyLjI0MjgsLTAuNzIyNDkgMi4yNDI4LC02LjIxODg5IHYgLTguMTY5ODYgYyAzLjM5NTIxLC0xLjg4NTk2IDYuMzcxNzgsLTMuMjg2OCA4LC00IDAsMiA3LjFlLTQsNS41ODU5OCAtMC4xMjA3OSwxMS43MDYxNSAtMC4yMDg5OCwxMC41MjY1NSAtMC4yNDA1LDEwLjcyNzI5IC0xLjg3OTIxLDExLjk2NjA3IC00LjAzMzQ2LDMuMDQ5MDggLTQwLjEwNzk0LDIzLjMyNjU0IC00MS40Nzg3NywyMy4zMTUyMSAtMC44MzY2NywtMC4wMDcgLTEwLjUxNDYsLTUuMjQyMzQgLTIxLjUwNjUsLTExLjYzNDI5IHogbSA2Ljk4NTI3LC0xMy4yNDU3NCAtMTMsLTcuNTI2NCAtMC4xODE3LC0xMi4xMjM4MyBjIC0wLjEyOTU3LC04LjY0NDk4IDAuMDMzNSwtMTIuMTIzODQgMC41Njg0MSwtMTIuMTIzODQgMC40MTI1NywwIDIuMjE5MDMsMC44MjUgNC4wMTQzNiwxLjgzMzMzIGwgMy4yNjQyNSwxLjgzMzM0IDYuNmUtNCw3LjM5NjY3IGMgMy40ZS00LDQuMzMwODQgMC4xMzU4NSw3LjQ3NDA5IDAuMzM0MDIsOC42MDMzMyA0LDIgNC4wMTIxMiwxLjk3OTEzIDkuMDUzODUsNC45MDE3MiAxMS4xODMwNiw2LjQ4MjYgOS42NTg0MSw2LjQ4MyAyMC45MjkyNCwtMC4wMDUgbCA5LjY2MzA1LC01LjU2MzA2IDAuMDEwMywtMTEuNTE3MTIgMC4wMTAzLC0xMS41MTcxMiAtMS44MzMzMywwLjk1NzQzIGMgLTEuMDA4MzQsMC41MjY1OSAtNS4yODMzNCwyLjkzMjY5IC05LjUsNS4zNDY4OSAtNC4yMTY2NywyLjQxNDIgLTguMTMyNDUsNC4zOTEwNiAtOC43MDE3NCw0LjM5MzAyIC0xLjEyNjk5LDAuMDA0IC0yMi44ODM1MiwtMTIuMTQ0MjIgLTI0LjgyMjk0LC0xMy44NjAyOCAtMC42NTUyNSwtMC41Nzk3OCAtMC44MDg3MywtMS4xMzY0OCAtMSwtMi4wMDI3NyAwLjI3ODA4LC0xLjM3ODY4IDIxLjE5MTI3LC0xMi4xMzM3MSAyNS43ODkyNSwtMTQuODAwMDUgMS40MDIwMiwwLjY2NjM0IDEyLjA2ODc2LDYuNTQyNDggMTIuMDY4NzYsNi41NDI0OCAtMi4zNzA1NywxLjcyOTcgLTQuNjY4MjcsMy4zNjg0MiAtNi42NjY3NCw1LjEyMzg2IC00LC0yIC0zLjQ4NzYzLC0xLjY5OTg0IC01LjQ2MTM1LC0yLjY0MTA0IC0zLjE3MjI4LDEuOTQzMTcgLTQuNTM4NjUsMi42NDEwNCAtOS44NzE5MSw2LjA0Nzg0IDIuMzMzMjYsMS41OTMyIDcuMzMzMjYsNC41OTMyIDkuOTUwNTcsNS41OTM1MyAyLjM4MjY5LC0xLjAwMDMzIDIuMzgyNjksLTEuMDAwMzMgMTAuNzgzNTYsLTUuMDg5OTYgOS45NzI5MiwtNC44NTQ5MiA4Ljg3NjYsLTUuNTIyNTcgMTQuNTc3MDYsLTEuOTI0MDIgbCAyLjcxMjA0LDEuNzEyMDMgLTAuMTc4MjgsMTYuMzg1NDEgLTAuNTExNjksMTUuOTE2MjEgLTEyLjY2NjU5LDguMDMxOTcgYyAtNi45ODU4LDQuNDI5NzUgLTEzLjMzMzQxLDYuOTY4MDMgLTE0LjY2NjY3LDcuNTgyNDYgLTEuNjY2NzQsLTAuNjE0NDMgLTcuMzQyMTEsLTMuMjY2MTIgLTE0LjY2NjY3LC03LjUwNjcgeiIgLz4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYwKSI+IDxwYXRoIGQ9Ik02IDEuNjI1QzMuMzc1IDEuNjI1IDMuMzc1IDUuMTI1IDMuMzc1IDUuMTI1TDAuNzUgOC4yNUgxMS4yNUw4LjYyNSA1LjEyNUM4LjYyNSA1LjEyNSA4LjYyNSAxLjYyNSA2IDEuNjI1WiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNNC4yNSA4LjYyNVY5LjVDNC4yNSA5Ljk2NDEzIDQuNDM0MzcgMTAuNDA5MiA0Ljc2MjU2IDEwLjczNzRDNS4wOTA3NSAxMS4wNjU2IDUuNTM1ODcgMTEuMjUgNiAxMS4yNUM2LjQ2NDEzIDExLjI1IDYuOTA5MjQgMTEuMDY1NiA3LjIzNzQzIDEwLjczNzRDNy41NjU2MiAxMC40MDkyIDcuNzUgOS45NjQxMyA3Ljc1IDkuNVY4LjYyNSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNNiAwLjc1VjEuNjI1IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPC9nPiA8ZGVmcz4gPGNsaXBQYXRoIGlkPSJjbGlwMF80MjZfMjM2MCI+IDxyZWN0IHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0id2hpdGUiIC8+IDwvY2xpcFBhdGg+IDwvZGVmcz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibGlzdF9jaGVjayI+IDxwYXRoIGQ9Ik0xMiwyM0M1LjkzNSwyMywxLDE4LjA2NSwxLDEyUzUuOTM1LDEsMTIsMWMxLjgzNywwLDMuNjU3LDAuNDYzLDUuMjYzLDEuMzM5YzAuNDg0LDAuMjY1LDAuNjYzLDAuODcyLDAuMzk4LDEuMzU3IHMtMC44NzIsMC42NjQtMS4zNTcsMC4zOTlDMTQuOTkyLDMuMzc4LDEzLjUwNCwzLDEyLDNjLTQuOTYyLDAtOSw0LjAzOC05LDljMCw0Ljk2Myw0LjAzOCw5LDksOWM0Ljk2MywwLDktNC4wMzcsOS05IGMwLTAuNTMzLTAuMDUyLTEuMDcxLTAuMTU3LTEuNjQ0Yy0wLjEwMS0wLjU0MywwLjI1OS0xLjA2NSwwLjgwMi0xLjE2NWMwLjU1Mi0wLjA5OSwxLjA2NCwwLjI2LDEuMTY1LDAuODAyIEMyMi45MzgsMTAuNjg4LDIzLDExLjM0NCwyMywxMkMyMywxOC4wNjUsMTguMDY1LDIzLDEyLDIzeiBNMTEuNzA3LDE1LjcwN2w5LTljMC4zOTEtMC4zOTEsMC4zOTEtMS4wMjMsMC0xLjQxNCBzLTEuMDIzLTAuMzkxLTEuNDE0LDBMMTEsMTMuNTg2bC0zLjI5My0zLjI5M2MtMC4zOTEtMC4zOTEtMS4wMjMtMC4zOTEtMS40MTQsMHMtMC4zOTEsMS4wMjMsMCwxLjQxNGw0LDQgQzEwLjQ4OCwxNS45MDIsMTAuNzQ0LDE2LDExLDE2UzExLjUxMiwxNS45MDIsMTEuNzA3LDE1LjcwN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjY1ODMgNS41NzAyTDAuNzUgNi40Nzg1TDQuMjI3MzUgOS45NTU4NUwxMS4yNSAyLjkzMzJMMTAuMzQxNyAyLjAyNDlMNC4yMjczNSA4LjEzOTI1TDEuNjU4MyA1LjU3MDJaIiBmaWxsPSJ3aGl0ZSIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icGF1c2UiPiA8cGF0aCBkPSJNOSwyMkg2Yy0wLjU1LDAtMS0wLjQ1LTEtMVYzYzAtMC41NSwwLjQ1LTEsMS0xaDNjMC41NSwwLDEsMC40NSwxLDF2MThDMTAsMjEuNTUsOS41NSwyMiw5LDIyeiBNMTksMjFWMyBjMC0wLjU1LTAuNDUtMS0xLTFoLTNjLTAuNTUsMC0xLDAuNDUtMSwxdjE4YzAsMC41NSwwLjQ1LDEsMSwxaDNDMTguNTUsMjIsMTksMjEuNTUsMTksMjF6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icGxheSI+IDxwYXRoIGQ9Ik0yMS41NDksMTEuMjA4TDcuMzI4LDIuMTNDNy4wNTIsMS45NTUsNi43MTUsMS45NTcsNi40NDEsMi4xMzZDNi4xNjgsMi4zMTUsNiwyLjY0NCw2LDN2MTggYzAsMC4zNTQsMC4xNjcsMC42ODMsMC40MzksMC44NjJDNi41NzgsMjEuOTU0LDYuNzMzLDIyLDYuODg5LDIyYzAuMTQ5LDAsMC4yOTgtMC4wNDIsMC40MzMtMC4xMjdsMTQuMjIzLTguOTIyIGMwLjI4LTAuMTc2LDAuNDU1LTAuNTA5LDAuNDU2LTAuODdDMjIuMDAxLDExLjcyLDIxLjgyOSwxMS4zODYsMjEuNTQ5LDExLjIwOHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iYWRkIj4gPHBhdGggZD0iTTIxLDExaC04VjNjMC0wLjU1Mi0wLjQ0OC0xLTEtMXMtMSwwLjQ0OC0xLDF2OEgzYy0wLjU1MiwwLTEsMC40NDgtMSwxczAuNDQ4LDEsMSwxaDh2OGMwLDAuNTUzLDAuNDQ4LDEsMSwxczEtMC40NDcsMS0xIHYtOGg4YzAuNTUyLDAsMS0wLjQ0OCwxLTFTMjEuNTUyLDExLDIxLDExeiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02IDEwLjUwMDJDOC40ODUyOCAxMC41MDAyIDEwLjUgOC40ODU0NyAxMC41IDYuMDAwMTlIMTJDMTIgOS4zMTM4OSA5LjMxMzcxIDEyLjAwMDIgNiAxMi4wMDAyQzIuNjg2MjkgMTIuMDAwMiAwIDkuMzEzODkgMCA2LjAwMDE5QzAgMi42ODY0OCAyLjY4NjI5IDAuMDAwMTg1NTIyIDUuOTkzNjYgMC4wMDAyMTIzMzZDNy43NDc3NCAtMC4wMTQ2MjA3IDkuMzg1MiAwLjc0ODUgMTAuNSAyLjAzMTc4VjAuMDAwMTg1NTIySDEyVjQuNTAwMTlINy41VjMuMDAwMTlIOS4zNTQwN0M4LjUyMjU5IDIuMDUyMjQgNy4zMDYxMiAxLjQ4OTE2IDYgMS41MDAxOUMzLjUxNDcyIDEuNTAwMTkgMS41IDMuNTE0OSAxLjUgNi4wMDAxOUMxLjUgOC40ODU0NyAzLjUxNDcyIDEwLjUwMDIgNiAxMC41MDAyWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYyKSI+IDxwYXRoIGQ9Ik02Ljc1IDEuNUgxMC41VjUuMjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNNS4yNSAxLjVIMS41VjUuMjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNNS4yNSAxMC41SDEuNVY2Ljc1IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgLz4gPHBhdGggZD0iTTYuNzUgMTAuNUgxMC41VjYuNzUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMS41IDEuNUwxMC41IDEwLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMTAuNSAxLjVMMS41IDEwLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzYyIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibWluaW1pemVfeDQwX21pcnJvcmVkIj4gPHBhdGggZD0iTTQuMDI0LDE0LjM0N2MtMC4wNTcsMC4xNzktMC4wMSwwLjM3NCwwLjEyMywwLjUwNmwxLjc5MywxLjc5M2wtMy42NDgsMy42NDhjLTAuMzg5LDAuMzg5LTAuMzg5LDEuMDI1LDAsMS40MTQgYzAuMzg5LDAuMzg5LDEuMDI1LDAuMzg5LDEuNDE0LDBsMy42NDgtMy42NDhsMS43OTMsMS43OTNjMC4xMzIsMC4xMzIsMC4zMjgsMC4xOCwwLjUwNiwwLjEyM2MwLjE3OC0wLjA1NywwLjMxLTAuMjA5LDAuMzQtMC4zOTQgbDEtNmMwLjAyNS0wLjE1OC0wLjAyNS0wLjMyMS0wLjE0LTAuNDM2Yy0wLjExNC0wLjExNC0wLjI3Ny0wLjE2NS0wLjQzNi0wLjE0bC02LDFDNC4yMzMsMTQuMDM3LDQuMDgxLDE0LjE2OSw0LjAyNCwxNC4zNDd6IE0xNC4zNDcsNC4wMjRjMC4xNzktMC4wNTcsMC4zNzQtMC4wMSwwLjUwNiwwLjEyM2wxLjc5MywxLjc5M2wzLjY0OC0zLjY0OGMwLjM4OS0wLjM4OSwxLjAyNS0wLjM4OSwxLjQxNCwwIGMwLjM4OSwwLjM4OSwwLjM4OSwxLjAyNSwwLDEuNDE0TDE4LjA2LDcuMzU0bDEuNzkzLDEuNzkzYzAuMTMyLDAuMTMyLDAuMTgsMC4zMjgsMC4xMjMsMC41MDZjLTAuMDU3LDAuMTc4LTAuMjA5LDAuMzEtMC4zOTQsMC4zNCBsLTYsMWMtMC4xNTgsMC4wMjUtMC4zMjEtMC4wMjUtMC40MzYtMC4xNGMtMC4xMTQtMC4xMTQtMC4xNjUtMC4yNzctMC4xNC0wLjQzNmwxLTZDMTQuMDM3LDQuMjMzLDE0LjE2OSw0LjA4MSwxNC4zNDcsNC4wMjR6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjk2OTk0IDcuMDYwNUw1LjAzMDQ0IDZMNC4wNjA2OSA1LjAzMDI1SDcuMjE4OTRDOC42MjUxOSA1LjAzMDI1IDkuMDAwMTkgNi40NDQ3NSA5LjAwMDE5IDcuMjgwMjVDOS4wMDAxOSA3Ljg5NiA4LjgyNDY5IDguNDgzMjUgOC41MTcxOSA4Ljg5Mjc1QzguMjAwNjkgOS4zMTU3NSA3Ljc2MzQ0IDkuNTMwMjUgNy4yMTg5NCA5LjUzMDI1SDMuMDAwMTlWMTEuMDMwMkg3LjIxODk0QzguMjMyMTkgMTEuMDMwMiA5LjExODY5IDEwLjU5MDcgOS43MTcxOSA5Ljc5Mjc1QzEwLjIyMTkgOS4xMiAxMC41MDAyIDguMjI3NSAxMC41MDAyIDcuMjgwMjVDMTAuNTAwMiA1LjQxNjUgOS4zNzI5NCAzLjUzMDI1IDcuMjE4OTQgMy41MzAyNUg0LjA2MDY5TDUuMDMwNDQgMi41NjA1TDMuOTY5OTQgMS41TDEuNzE5OTQgMy43NUMxLjQyNjY5IDQuMDQzMjUgMS40MjY2OSA0LjUxNzI1IDEuNzE5OTQgNC44MTA1TDMuOTY5OTQgNy4wNjA1WiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMDgwIiBoZWlnaHQ9IjEwODAiIHZpZXdCb3g9IjAgMCAxMDgwIDEwODAiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZGVzYz5DcmVhdGVkIHdpdGggRmFicmljLmpzIDUuMi40PC9kZXNjPiA8ZGVmcz4gPC9kZWZzPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDU0MCA1NDApIiBpZD0iZGJkNzU1MWEtNWNhNy00YzVmLWFlOTgtNzE4OGI0YjNlZGViIiA+IDxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiIHg9Ii01NDAiIHk9Ii01NDAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjEwODAiIGhlaWdodD0iMTA4MCIgLz4gPC9nPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDU0MCA1NDApIiBpZD0iM2ZlNzcxZGYtYjJiYy00NzRhLWE1NDAtYThlYWM4NTI1NzFlIiA+IDwvZz4gPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAtOTAgOTAgMCA1NDAgNTQwKSIgPiA8cGF0aCBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtZGFzaG9mZnNldDogMDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDQ7IGZpbGw6IHJnYigyMDksMjEzLDIxOSk7IGZpbGwtcnVsZTogZXZlbm9kZDsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIHRyYW5zbGF0ZSgtNiwgLTYpIiBkPSJNIDAuNzUgMy44NTY2NiBMIDEuNzEzMzUgMi44OTMzMSBMIDYgNy4xNzk0MyBMIDEwLjI4NjcgMi44OTMzMSBMIDExLjI1IDMuODU2NjYgTCA2IDkuMTA2NjYgTCAwLjc1IDMuODU2NjYgWiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPiA8L2c+IDwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic2VhcmNoIj4gPHBhdGggZD0iTTIyLjcwNywyMS4yOTNsLTUuNjgyLTUuNjgyQzE4LjI1OCwxNC4wNzEsMTksMTIuMTIyLDE5LDEwYzAtNC45NjItNC4wMzctOS05LTljLTQuOTYyLDAtOSw0LjAzOC05LDljMCw0Ljk2Myw0LjAzOCw5LDksOSBjMi4xMjIsMCw0LjA3MS0wLjc0Miw1LjYxMS0xLjk3NWw1LjY4Miw1LjY4MkMyMS40ODgsMjIuOTAyLDIxLjc0NCwyMywyMiwyM3MwLjUxMi0wLjA5OCwwLjcwNy0wLjI5MyBDMjMuMDk4LDIyLjMxNiwyMy4wOTgsMjEuNjg0LDIyLjcwNywyMS4yOTN6IE0xMCwxN2MtMy44NiwwLTctMy4xNDEtNy03YzAtMy44NiwzLjE0LTcsNy03YzMuODU5LDAsNywzLjE0LDcsNyBDMTcsMTMuODU5LDEzLjg1OSwxNywxMCwxN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic3Rhcl9vbiI+IDxwYXRoIGQ9Ik0yMi4xNDMsOC4yNjdsLTEuNTY5LTAuMjI4djBsLTQuODItMC43bC0yLjAxOC00LjA4NGMwLDAsMCwwLDAsMGwtMC44MzktMS42OTljLTAuMzY3LTAuNzQzLTEuNDI2LTAuNzQzLTEuNzkzLDAgbC0wLjgzOSwxLjY5OWMwLDAsMCwwLDAsMEw4LjI0Niw3LjM0TDIuNjc4LDguMTQ4YzAsMCwwLDAsMCwwTDEuODU3LDguMjY3Yy0wLjgyLDAuMTE5LTEuMTQ4LDEuMTI3LTAuNTU0LDEuNzA2bDAuNTk0LDAuNTc5bDAsMCBsNC4wMjgsMy45MjNsLTEuMDIyLDUuOTUyYzAsMCwwLDAsMCwwbC0wLjA2OSwwLjQwMmMtMC4xNCwwLjgxNywwLjcxNywxLjQ0LDEuNDUsMS4wNTRsMC42NDUtMC4zMzhsMCwwTDEyLDE4Ljg4Mmw0LjU5LDIuNDFsMCwwIGwxLjEyNSwwLjU5YzAuNzM0LDAuMzg1LDEuNTkxLTAuMjM4LDEuNDUtMS4wNTVsLTAuMjM0LTEuMzY0bDAsMGwtMC44NTctNC45OTFsMy44MjctMy43MjdsMCwwbDAuNzk2LTAuNzc1IEMyMy4yOTEsOS4zOTQsMjIuOTYzLDguMzg2LDIyLjE0Myw4LjI2N3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic2VsZWN0X3RleHQiPiA8cGF0aCBkPSJNMSw5aDJ2MkgxVjl6IE0xLDdoMlY1SDFWN3ogTTUsMjNoMnYtMkg1VjIzeiBNMSwzaDJWMUgxVjN6IE0xLDIzaDJ2LTJIMVYyM3ogTTExLDFIOXYyaDJWMXogTTE1LDFoLTJ2MmgyVjF6IE03LDFINXYyaDIgVjF6IE05LDIzaDJ2LTJIOVYyM3ogTTEsMTloMnYtMkgxVjE5eiBNMSwxNWgydi0ySDFWMTV6IE0yMSwxMWgyVjloLTJWMTF6IE0xMywyM2gydi0yaC0yVjIzeiBNMjEsMTVoMnYtMmgtMlYxNXogTTIxLDdoMlY1aC0yVjd6IE0yMSwxdjJoMlYxSDIxeiBNMjEsMTloMnYtMmgtMlYxOXogTTIxLDIzaDJ2LTJoLTJWMjN6IE0xNywyM2gydi0yaC0yVjIzeiBNMTcsM2gyVjFoLTJWM3ogTTE3Ljg5NSw3LjMwMyBDMTcuOTY1LDcuMjE5LDE4LDcuMDkzLDE4LDYuOTE4VjUuNTA0YzAtMC4xODktMC4wMzUtMC4zMjItMC4xMDUtMC4zOTJDMTcuODE4LDUuMDM1LDE3LjY4NSw1LDE3LjQ5Niw1SDE1LjVoLTAuNzc1aC01LjQ1SDguNSBINi41MDRDNi4zMjksNSw2LjE5Niw1LjAzNSw2LjExOSw1LjExMkM2LjAzNSw1LjE4Miw2LDUuMzE1LDYsNS41MDR2MS40MTRjMCwwLjE3NSwwLjAzNSwwLjMwMSwwLjExOSwwLjM4NSBjMC4wNzcsMC4wODQsMC4yMSwwLjExOSwwLjM4NSwwLjExOUg4LjVoMC43NzVoMS4yMTN2MTEuMDc0YzAsMC4xNzUsMC4wMzUsMC4zMDEsMC4xMTksMC4zODVDMTAuNjg0LDE4Ljk1OCwxMC44MTcsMTksMTAuOTkyLDE5IGgyLjAxNmMwLjE4OSwwLDAuMzIyLTAuMDQyLDAuMzk5LTAuMTE5YzAuMDctMC4wODQsMC4xMDUtMC4yMSwwLjEwNS0wLjM4NVY3LjQyMmgxLjIxM0gxNS41aDEuOTk2IEMxNy42ODUsNy40MjIsMTcuODE4LDcuMzg3LDE3Ljg5NSw3LjMwM3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjUgMC43NUMxLjA4NTc5IDAuNzUgMC43NSAxLjA4NTc5IDAuNzUgMS41VjYuNzVDMC43NSA3LjE2NDIxIDEuMDg1NzkgNy41IDEuNSA3LjVIMy4zMjU1Mkw1LjA3OTUxIDEwLjQyMTFMNS4wODA4NyAxMC40MjM0QzUuMzg4MjkgMTAuOTMxMyA1Ljk0NTcyIDExLjI1IDYuNTQ3NSAxMS4yNUM3LjQ5NDIxIDExLjI1IDguMjU3NSAxMC40ODY3IDguMjU3NSA5LjU0VjguMjg3NUg5LjMzNzVDMTAuODAyIDguMjg3NSAxMS44Njg5IDYuOTEzMzYgMTEuNTIwOCA1LjQ5ODMyTDExLjUyMDIgNS40OTYwM0wxMC43NjMxIDIuNDYwMDNMMTAuNzYyOCAyLjQ1ODk2QzEwLjUxNSAxLjQ1ODU2IDkuNjE1OTEgMC43NSA4LjU4IDAuNzVIMy43NUgxLjVaTTIuMjUgNlYyLjI1SDNWNkgyLjI1Wk00LjUgNi41NDIxM0w2LjM2NDEzIDkuNjQ2NjVMNi4zNjQ1NSA5LjY0NzM1QzYuNDAyMjUgOS43MDkwNiA2LjQ3NDU1IDkuNzUgNi41NDc1IDkuNzVDNi42NjU3OSA5Ljc1IDYuNzU3NSA5LjY1ODI5IDYuNzU3NSA5LjU0VjcuNTM3NUM2Ljc1NzUgNy4xMjMyOSA3LjA5MzI5IDYuNzg3NSA3LjUwNzUgNi43ODc1SDkuMzM3NUM5LjgyMjY4IDYuNzg3NSAxMC4xODA2IDYuMzMyMjcgMTAuMDY0NSA1Ljg1NzY1TDEwLjA2NDIgNS44NTY2OUw5LjMwNzI5IDIuODIxNDhMOS4zMDY5MiAyLjgxOTk4QzkuMjI0MzQgMi40ODU5NCA4LjkyMzcyIDIuMjUgOC41OCAyLjI1SDQuNVY2LjU0MjEzWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjM2NDU1IDIuMzUyNjRMNi4zNjQxMiAyLjM1MzM1TDQuNSA1LjQ1Nzg3VjkuNzVIOC41OEM4LjkyMzcyIDkuNzUgOS4yMjQzNCA5LjUxNDA2IDkuMzA2OTEgOS4xODAwMkwxMC4wNjQyIDYuMTQzMzJMMTAuMDY0NCA2LjE0MjQ4QzEwLjE4MDcgNS42Njc4MSA5LjgyMjcxIDUuMjEyNSA5LjMzNzUgNS4yMTI1SDcuNTA3NUM3LjA5MzI5IDUuMjEyNSA2Ljc1NzUgNC44NzY3MSA2Ljc1NzUgNC40NjI1VjIuNDZDNi43NTc1IDIuMzQxNzEgNi42NjU3OSAyLjI1IDYuNTQ3NSAyLjI1QzYuNDc0NTUgMi4yNSA2LjQwMjI2IDIuMjkwOTQgNi4zNjQ1NSAyLjM1MjY0Wk0zIDkuNzVWNkgyLjI1VjkuNzVIM1pNMy4zMjU1MiA0LjVMNS4wNzk1MSAxLjU3ODkxTDUuMDgwODcgMS41NzY2NEM1LjM4ODI5IDEuMDY4NzQgNS45NDU3MyAwLjc1IDYuNTQ3NSAwLjc1QzcuNDk0MjIgMC43NSA4LjI1NzUgMS41MTMyOSA4LjI1NzUgMi40NlYzLjcxMjVIOS4zMzc1QzEwLjgwMiAzLjcxMjUgMTEuODY4OSA1LjA4NjY2IDExLjUyMDggNi41MDE2OUwxMS41MjAyIDYuNTAzOTlMMTAuNzYzMSA5LjUzOTk3TDEwLjc2MjkgOS41NDA3NkMxMC41MTUyIDEwLjU0MTMgOS42MTYwMSAxMS4yNSA4LjU4IDExLjI1SDEuNUMxLjA4NTc5IDExLjI1IDAuNzUgMTAuOTE0MiAwLjc1IDEwLjVWNS4yNUMwLjc1IDQuODM1NzkgMS4wODU3OSA0LjUgMS41IDQuNUgzLjMyNTUyWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FyZXRfdXAiPiA8cGF0aCBkPSJNMTcsMTVjLTAuMjU2LDAtMC41MTItMC4wOTgtMC43MDctMC4yOTNMMTIsMTAuNDE0bC00LjI5Myw0LjI5M2MtMC4zOTEsMC4zOTEtMS4wMjMsMC4zOTEtMS40MTQsMHMtMC4zOTEtMS4wMjMsMC0xLjQxNCBsNS01YzAuMzkxLTAuMzkxLDEuMDIzLTAuMzkxLDEuNDE0LDBsNSw1YzAuMzkxLDAuMzkxLDAuMzkxLDEuMDIzLDAsMS40MTRDMTcuNTEyLDE0LjkwMiwxNy4yNTYsMTUsMTcsMTV6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icHJvZmlsZSI+IDxwYXRoIGQ9Ik03LDZjMC0yLjc2MSwyLjIzOS01LDUtNXM1LDIuMjM5LDUsNXMtMi4yMzksNS01LDVTNyw4Ljc2MSw3LDZ6IE0yMS45NDgsMTguNjg0QzIwLjg2OCwxNS40NDMsMTcuMDE1LDEyLDEyLDEyIHMtOC44NjksMy40NDMtOS45NDksNi42ODRjLTAuMTIsMC4zNTktMC4wMjYsMC43NTYsMC4yNDIsMS4wMjNDNC40MTcsMjEuODMsNy44NjQsMjMsMTIsMjNjNC4xMzcsMCw3LjU4NC0xLjE3LDkuNzA3LTMuMjkzIEMyMS45NzUsMTkuNDM5LDIyLjA2OCwxOS4wNDMsMjEuOTQ4LDE4LjY4NHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0id2FybmluZyI+IDxwYXRoIGQ9Ik0yMS44NTcsMTguNDgybC05LTE1LjAzYy0wLjM2MS0wLjYwNC0xLjM1NC0wLjYwNC0xLjcxNSwwbC05LDE1LjAzYy0wLjE4NiwwLjMwOS0wLjE5LDAuNjk1LTAuMDEzLDEuMDEgQzIuMzA3LDE5LjgwNiwyLjY0LDIwLDMsMjBoMThjMC4zNiwwLDAuNjkyLTAuMTk0LDAuODctMC41MDhDMjIuMDQ4LDE5LjE3NywyMi4wNDMsMTguNzkyLDIxLjg1NywxOC40ODJ6IE0xMiwxOCBjLTAuNTUyLDAtMS0wLjQ0OC0xLTFjMC0wLjU1MiwwLjQ0OC0xLDEtMXMxLDAuNDQ4LDEsMUMxMywxNy41NTIsMTIuNTUyLDE4LDEyLDE4eiBNMTMsMTRjMCwwLjU1My0wLjQ0OCwxLTEsMXMtMS0wLjQ0Ny0xLTFWOCBjMC0wLjU1MiwwLjQ0OC0xLDEtMXMxLDAuNDQ4LDEsMVYxNHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nexport interface ButtonProps {\n classNames?: string[];\n attributes?: Record<string, string>;\n icon?: HTMLElement | ExtendedHTMLElement | string;\n label?: HTMLElement | ExtendedHTMLElement | string;\n children?: Array<HTMLElement | ExtendedHTMLElement | string>;\n primary?: boolean;\n additionalEvents?: Record<string, (event?: any) => any>;\n onClick: (e: Event) => void;\n}\nexport class Button {\n render: ExtendedHTMLElement;\n constructor (props: ButtonProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'button',\n classNames: [\n 'mynah-button',\n ...(props.primary === false ? [ 'mynah-button-secondary' ] : []),\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n attributes: { ...props.attributes },\n events: {\n ...props.additionalEvents,\n click: props.onClick,\n },\n children: [\n ...(props.icon !== undefined ? [ props.icon ] : []),\n ...(props.label !== undefined ? [ { type: 'span', classNames: [ 'mynah-button-label' ], children: [ props.label ] } ] : []),\n ...(props.children ?? []),\n ],\n });\n }\n\n updateLabel = (label: HTMLElement | ExtendedHTMLElement | string): void => {\n (this.render.querySelector('.mynah-button-label') as ExtendedHTMLElement).replaceWith(\n DomBuilder.getInstance().build({ type: 'span', classNames: [ 'mynah-button-label' ], children: [ label ] })\n );\n };\n\n setEnabled = (enabled: boolean): void => {\n if (enabled) {\n this.render.removeAttribute('disabled');\n } else {\n this.render.setAttribute('disabled', 'disabled');\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n OnCopiedToClipboardFunction,\n OnInsertToCursorPositionFunction,\n ReferenceTrackerInformation,\n} from '../../static';\nimport { marked } from 'marked';\nimport unescapeHTML from 'unescape-html';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { SyntaxHighlighter } from '../syntax-highlighter';\nimport { generateUID } from '../../helper/guid';\n\nconst PREVIEW_DELAY = 500;\nexport const highlightersWithTooltip = {\n start: {\n markupStart: '<mark ',\n markupAttributes: (markerIndex: string) => `marker-index=${markerIndex}`,\n markupEnd: ' reference-tracker>'\n },\n end: {\n markup: '</mark>',\n },\n};\n\nexport const PARTS_CLASS_NAME = 'typewriter-part';\nexport const PARTS_CLASS_NAME_VISIBLE = 'typewriter';\n\nexport interface CardBodyProps {\n body: string;\n children?: Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject>;\n highlightRangeWithTooltip?: ReferenceTrackerInformation[];\n useParts?: boolean;\n onLinkClick?: (url: string, e: MouseEvent) => void;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n}\nexport class CardBody {\n render: ExtendedHTMLElement;\n props: CardBodyProps;\n private highlightRangeTooltip: Overlay | null;\n private highlightRangeTooltipTimeout: ReturnType<typeof setTimeout>;\n constructor (props: CardBodyProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-body' ],\n children: [\n ...this.getContentBodyChildren(this.props),\n ...(this.props.children ?? [])\n ],\n });\n\n Array.from(this.render.querySelectorAll('mark[reference-tracker]')).forEach((highlightRangeElement) => {\n highlightRangeElement.addEventListener('mouseenter', (e) => {\n const index = parseInt((e.target as HTMLElement).getAttribute('marker-index') ?? '0');\n if (props.highlightRangeWithTooltip?.[index] !== undefined) {\n this.showHighlightRangeTooltip(e as MouseEvent, props.highlightRangeWithTooltip[index].information);\n }\n });\n highlightRangeElement.addEventListener('mouseleave', this.hideHighlightRangeTooltip);\n });\n }\n\n private readonly processNode = (node: HTMLElement, contentString: string, matchingLanguage?: string): HTMLElement => {\n const elementFromNode: HTMLElement = node;\n if (elementFromNode.tagName?.toLowerCase() === 'a') {\n const url = elementFromNode.getAttribute('href') ?? '';\n return DomBuilder.getInstance().build(\n {\n type: 'a',\n events: {\n click: (e: MouseEvent) => {\n if (this.props.onLinkClick !== undefined) {\n this.props.onLinkClick(url, e);\n }\n },\n },\n attributes: { href: elementFromNode.getAttribute('href') ?? '', target: '_blank' },\n innerHTML: elementFromNode.innerHTML,\n });\n }\n if ((elementFromNode.tagName?.toLowerCase() === 'pre' && elementFromNode.querySelector('code') !== null) ||\n elementFromNode.tagName?.toLowerCase() === 'code'\n ) {\n const isBlockCode = elementFromNode.tagName?.toLowerCase() === 'pre' || elementFromNode.innerHTML.match(/\\r|\\n/) !== null;\n const codeElement = (elementFromNode.tagName?.toLowerCase() === 'pre' ? elementFromNode.querySelector('code') : elementFromNode);\n const snippetLanguage = Array.from(codeElement?.classList ?? []).find(className => className.match('language-'))?.replace('language-', '');\n const codeString = codeElement?.innerHTML ?? '';\n\n const highlighter = new SyntaxHighlighter({\n codeStringWithMarkup: unescapeHTML(codeString),\n language: snippetLanguage?.trim() !== '' ? snippetLanguage : matchingLanguage,\n keepHighlights: true,\n showCopyOptions: isBlockCode,\n block: isBlockCode,\n onCopiedToClipboard: (type, text) => {\n if (this.props.onCopiedToClipboard != null) {\n this.props.onCopiedToClipboard(type, text, this.getReferenceTrackerInformationFromElement(highlighter));\n }\n },\n onInsertToCursorPosition: (type, text) => {\n if (this.props.onInsertToCursorPosition != null) {\n this.props.onInsertToCursorPosition(type, text, this.getReferenceTrackerInformationFromElement(highlighter));\n }\n }\n }).render;\n if (this.props.useParts === true) {\n highlighter.classList.add(PARTS_CLASS_NAME);\n }\n return highlighter;\n }\n\n elementFromNode.childNodes.forEach((child) => {\n elementFromNode.replaceChild(this.processNode(child as HTMLElement, contentString), child);\n });\n return elementFromNode;\n };\n\n private readonly getReferenceTrackerInformationFromElement = (element: ExtendedHTMLElement | HTMLElement): ReferenceTrackerInformation[] => {\n // cloning the element\n // since we're gonna inject some unique items\n // to get the start indexes\n const codeElement = element.querySelector('code')?.cloneNode(true) as HTMLElement;\n\n if (codeElement !== undefined) {\n const markerElements = codeElement.querySelectorAll('mark[reference-tracker]');\n if (markerElements.length > 0) {\n return (Array.from(markerElements) as HTMLElement[]).map((mark: HTMLElement, index: number) => {\n // Generating a unique identifier element\n // to get the start index of it inside the code block\n const startIndexText = `__MARK${index}_${generateUID()}_START__`;\n const startIndexTextElement = DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: startIndexText\n });\n // Injecting that unique identifier for the start index inside the current mark element\n mark.insertAdjacentElement('afterbegin', startIndexTextElement);\n // finding that text inside the code element's inner text\n // to get the startIndex\n const startIndex = codeElement.innerText.indexOf(startIndexText);\n\n // when we get the start index, we need to remove the element\n // to get the next one's start index properly\n // we don't need to calculate the end index because it will be available\n startIndexTextElement.remove();\n\n // find the original reference tracker information\n const originalRefTrackerInfo = this.props.highlightRangeWithTooltip?.[parseInt(mark.getAttribute('marker-index') ?? '0')];\n return {\n ...originalRefTrackerInfo,\n recommendationContentSpan: {\n start: startIndex,\n end: startIndex + (\n (originalRefTrackerInfo?.recommendationContentSpan.end ?? 0) -\n (originalRefTrackerInfo?.recommendationContentSpan.start ?? 0))\n }\n };\n }) as ReferenceTrackerInformation[];\n }\n }\n\n return [];\n };\n\n private readonly showHighlightRangeTooltip = (e: MouseEvent, tooltipText: string): void => {\n clearTimeout(this.highlightRangeTooltipTimeout);\n this.highlightRangeTooltipTimeout = setTimeout(() => {\n this.highlightRangeTooltip = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: (e.currentTarget ?? e.target) as HTMLElement,\n removeOtherOverlays: true,\n dimOutside: false,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-ui-syntax-highlighter-highlight-tooltip' ],\n children: [\n new CardBody({\n body: tooltipText,\n }).render\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n };\n\n private readonly hideHighlightRangeTooltip = (): void => {\n clearTimeout(this.highlightRangeTooltipTimeout);\n if (this.highlightRangeTooltip !== null) {\n this.highlightRangeTooltip?.close();\n this.highlightRangeTooltip = null;\n }\n };\n\n private readonly getContentBodyChildren = (props: CardBodyProps): Array<HTMLElement | ExtendedHTMLElement | DomBuilderObject> => {\n let incomingBody = props.body;\n if (props.body !== undefined && props.highlightRangeWithTooltip !== undefined && props.highlightRangeWithTooltip.length > 0) {\n props.highlightRangeWithTooltip.forEach((highlightRangeWithTooltip, index) => {\n if (incomingBody !== undefined) {\n const generatedStartMarkup = `${highlightersWithTooltip.start.markupStart}${highlightersWithTooltip.start.markupAttributes(index.toString())}${highlightersWithTooltip.start.markupEnd}`;\n let calculatedStartIndex = (highlightRangeWithTooltip.recommendationContentSpan.start + (index * (generatedStartMarkup.length + highlightersWithTooltip.end.markup.length)));\n let calculatedEndIndex = (calculatedStartIndex + generatedStartMarkup.length - highlightRangeWithTooltip.recommendationContentSpan.start) + highlightRangeWithTooltip.recommendationContentSpan.end;\n if (calculatedEndIndex > incomingBody.length) {\n calculatedStartIndex = incomingBody.length - 1;\n }\n if (calculatedEndIndex > incomingBody.length) {\n calculatedEndIndex = incomingBody.length - 1;\n }\n incomingBody = incomingBody.slice(0, calculatedStartIndex) + generatedStartMarkup + incomingBody.slice(calculatedStartIndex);\n incomingBody = incomingBody.slice(0, calculatedEndIndex) + highlightersWithTooltip.end.markup + incomingBody.slice(calculatedEndIndex);\n }\n });\n }\n\n // Define marked extension (and revert it back since it is global)\n if (this.props.useParts === true) {\n marked.use({\n extensions: [ {\n name: 'text',\n renderer: (token) => {\n if (this.props.useParts !== true) {\n return false;\n }\n return token.text.split(' ').map((textPart: string) => `<span class=\"${PARTS_CLASS_NAME}\">${textPart}</span>`).join(' ');\n }\n } ]\n });\n } else {\n marked.use({\n extensions: [ {\n name: 'text',\n renderer: (token) => {\n return token.text;\n }\n } ]\n });\n }\n return [\n ...(Array.from(\n DomBuilder.getInstance().build({\n type: 'div',\n innerHTML: `${marked.parse(incomingBody, { breaks: true })}`,\n }).childNodes\n ).map(node => {\n const processedNode = this.processNode(node as HTMLElement, props.body);\n if (processedNode.querySelectorAll !== undefined) {\n Array.from(processedNode.querySelectorAll('*:empty')).forEach(emptyElement => { emptyElement.remove(); });\n }\n return processedNode;\n }))\n ];\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { EngagementType } from '../../static';\n\n/**\n * We'll not consider it as an engagement if the total spend time is lower than below constant and won't trigger the event\n */\nconst ENGAGEMENT_DURATION_LIMIT = 3000;\n\n/**\n * This 6(px) and 300(ms) are coming from a behavioral research and browser reaction to input devices to count the action as a mouse movement or a click event\n */\nconst ENGAGEMENT_MIN_SELECTION_DISTANCE = 6;\nconst ENGAGEMENT_MIN_CLICK_DURATION = 300;\nexport interface CardProps extends Partial<DomBuilderObject> {\n border?: boolean;\n background?: boolean;\n padding?: 'small' | 'medium' | 'large' | 'none';\n children?: Array<HTMLElement | ExtendedHTMLElement | string>;\n onCardEngaged?: (engagement: {\n engagementDurationTillTrigger: number;\n engagementType: EngagementType;\n totalMouseDistanceTraveled: {\n x: number;\n y: number;\n };\n selectionDistanceTraveled?: { x: number; y: number; selectedText?: string | undefined };\n }) => void;\n}\nexport class Card {\n private readonly props: CardProps;\n private engagementStartTime: number = -1;\n private totalMouseDistanceTraveled: { x: number; y: number } = { x: 0, y: 0 };\n private previousMousePosition!: { x: number; y: number };\n private mouseDownInfo!: { x: number; y: number; time: number };\n render: ExtendedHTMLElement;\n constructor (props: CardProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [\n 'mynah-card',\n `padding-${props.padding ?? 'large'}`,\n props.border !== false ? 'border' : '',\n props.background !== false ? 'background' : '',\n ...(props.classNames ?? [])\n ],\n persistent: props.persistent,\n innerHTML: props.innerHTML,\n children: [\n ...(props.children ?? []),\n ],\n events: {\n ...props.events,\n ...(props.onCardEngaged !== undefined\n ? {\n mouseenter: e => {\n if (this.engagementStartTime === -1) {\n this.engagementStartTime = new Date().getTime();\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n }\n },\n mousemove: e => {\n if (this.engagementStartTime === -1) {\n this.engagementStartTime = new Date().getTime();\n }\n this.totalMouseDistanceTraveled = {\n x:\n this.totalMouseDistanceTraveled.x +\n Math.abs(e.clientX - this.previousMousePosition.x),\n y:\n this.totalMouseDistanceTraveled.y +\n Math.abs(e.clientY - this.previousMousePosition.y),\n };\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n },\n mousedown: e => {\n this.mouseDownInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n },\n mouseup: e => {\n const mouseUpInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n if (\n this.mouseDownInfo !== undefined && // in case of down is prevented by default by some listener\n (Math.abs(this.mouseDownInfo.x - mouseUpInfo.x) > ENGAGEMENT_MIN_SELECTION_DISTANCE ||\n Math.abs(this.mouseDownInfo.y - mouseUpInfo.y) >\n ENGAGEMENT_MIN_SELECTION_DISTANCE) &&\n mouseUpInfo.time - this.mouseDownInfo.time > ENGAGEMENT_MIN_CLICK_DURATION\n ) {\n this.handleEngagement({\n x: Math.abs(this.mouseDownInfo.x - mouseUpInfo.x),\n y: Math.abs(this.mouseDownInfo.y - mouseUpInfo.y),\n selectedText: window?.getSelection()?.toString(),\n });\n }\n },\n mouseleave: () => {\n const engagementEndTime = new Date().getTime();\n if (this.engagementStartTime !== -1 && engagementEndTime - this.engagementStartTime > ENGAGEMENT_DURATION_LIMIT) {\n this.handleEngagement();\n } else {\n this.resetEngagement();\n }\n },\n }\n : {})\n },\n attributes: props.attributes\n });\n }\n\n private readonly resetEngagement = (): void => {\n this.engagementStartTime = -1;\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n this.previousMousePosition = { x: 0, y: 0 };\n this.mouseDownInfo = { x: 0, y: 0, time: -1 };\n };\n\n private readonly handleEngagement = (interactionDistanceTraveled?: {\n x: number;\n y: number;\n selectedText?: string;\n }): void => {\n if (this.props.onCardEngaged !== undefined) {\n this.props.onCardEngaged({\n engagementDurationTillTrigger: new Date().getTime() - this.engagementStartTime,\n engagementType:\n interactionDistanceTraveled !== undefined ? EngagementType.INTERACTION : EngagementType.TIME,\n totalMouseDistanceTraveled: this.totalMouseDistanceTraveled,\n selectionDistanceTraveled:\n Boolean(interactionDistanceTraveled?.x ?? 0) && Boolean(interactionDistanceTraveled?.y)\n ? interactionDistanceTraveled\n : undefined,\n });\n }\n this.resetEngagement();\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { ChatItem, ChatItemType, MynahEventNames } from '../../static';\nimport { Card } from '../card/card';\nimport { CardBody } from '../card/card-body';\nimport { Icon, MynahIcons } from '../icon';\nimport { ChatItemFollowUpContainer } from './chat-item-followup';\nimport { ChatItemSourceLinksContainer } from './chat-item-source-links';\nimport { ChatItemRelevanceVote } from './chat-item-relevance-vote';\nimport { ChatItemTreeViewWrapper } from './chat-item-tree-view-wrapper';\nimport { Config } from '../../helper/config';\nimport { generateUID } from '../../helper/guid';\n\nconst TYPEWRITER_STACK_TIME = 500;\nexport interface ChatItemCardProps {\n tabId: string;\n chatItem: ChatItem;\n}\nexport class ChatItemCard {\n readonly props: ChatItemCardProps;\n render: ExtendedHTMLElement;\n contentBody: CardBody;\n chatAvatar: ExtendedHTMLElement;\n updateStack: Array<Partial<ChatItem>> = [];\n typewriterItemIndex: number = 0;\n previousTypewriterItemIndex: number = 0;\n typewriterId: string;\n private updateTimer: ReturnType<typeof setTimeout> | undefined;\n constructor (props: ChatItemCardProps) {\n this.props = props;\n this.chatAvatar = this.getChatAvatar();\n MynahUITabsStore.getInstance()\n .getTabDataStore(this.props.tabId)\n .subscribe('showChatAvatars', (value: boolean) => {\n if (value) {\n this.chatAvatar = this.getChatAvatar();\n this.render.insertChild('afterbegin', this.chatAvatar);\n } else {\n this.chatAvatar.remove();\n }\n });\n this.render = this.generateCard();\n }\n\n private readonly generateCard = (): ExtendedHTMLElement => {\n const generatedCard = DomBuilder.getInstance().build({\n type: 'div',\n classNames: this.getCardClasses(),\n attributes: {\n messageId: this.props.chatItem.messageId ?? 'unknown',\n },\n children: [\n ...(this.props.chatItem.type === ChatItemType.ANSWER_STREAM\n ? [\n // Create an empty card with its child set to the loading spinner\n new Card({\n children: [\n DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-chat-items-spinner' ],\n children: [ { type: 'span' }, { type: 'div', children: [ Config.getInstance().config.texts.spinnerText ] } ],\n }),\n ]\n }).render,\n ]\n : [ ...this.getCardContent() ]),\n ],\n });\n\n setTimeout(() => {\n generatedCard.addClass('reveal');\n }, this.props.chatItem.type === ChatItemType.PROMPT ? 10 : 200);\n\n return generatedCard;\n };\n\n private readonly getCardClasses = (): string[] => {\n const emptyCheckDom = DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: typeof this.props.chatItem.body === 'string' ? this.props.chatItem.body : '',\n });\n const isChatItemEmpty = emptyCheckDom.innerText.trim() === '';\n const isNoContent =\n isChatItemEmpty &&\n this.props.chatItem.followUp === undefined &&\n this.props.chatItem.relatedContent === undefined &&\n this.props.chatItem.type === ChatItemType.ANSWER;\n return [\n 'mynah-chat-item-card',\n `mynah-chat-item-${this.props.chatItem.type ?? ChatItemType.ANSWER}`,\n ...(isChatItemEmpty ? [ 'mynah-chat-item-empty' ] : []),\n ...(isNoContent ? [ 'mynah-chat-item-no-content' ] : []),\n ];\n };\n\n private readonly getCardContent = (): Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject> => {\n if (MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId) === undefined) {\n return [];\n }\n return [\n ...(MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('showChatAvatars') === true ? [ this.chatAvatar ] : []),\n ...(this.props.chatItem.body !== undefined || this.props.chatItem.fileList !== undefined\n ? [\n new Card({\n onCardEngaged: engagement => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_ITEM_ENGAGEMENT, {\n engagement,\n messageId: this.props.chatItem.messageId,\n });\n },\n children: [\n ((): ExtendedHTMLElement => {\n const commonBodyProps = {\n body: this.props.chatItem.body ?? '',\n onLinkClick: (url: string, e: MouseEvent) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.LINK_CLICK, {\n messageId: this.props.chatItem.messageId,\n link: url,\n event: e,\n });\n }\n };\n if (this.props.chatItem.type === ChatItemType.CODE_RESULT && this.props.chatItem.fileList !== undefined) {\n const { filePaths = [], deletedFiles = [] } = this.props.chatItem.fileList;\n const referenceSuggestionLabel = this.props.chatItem.body ?? '';\n this.contentBody = new CardBody({\n ...commonBodyProps,\n ...{\n body: '' // Reset the body, since the tree view has the fully rendered element\n },\n children: [\n new ChatItemTreeViewWrapper({\n tabId: this.props.tabId,\n messageId: this.props.chatItem.messageId ?? '',\n files: filePaths,\n deletedFiles,\n references: this.props.chatItem.codeReference ?? [],\n referenceSuggestionLabel\n }).render\n ],\n });\n } else {\n this.contentBody = new CardBody({\n ...commonBodyProps,\n useParts: this.props.chatItem.type === ChatItemType.ANSWER_STREAM,\n highlightRangeWithTooltip: this.props.chatItem.codeReference,\n children: this.props.chatItem.relatedContent !== undefined\n ? [\n new ChatItemSourceLinksContainer({\n messageId: this.props.chatItem.messageId ?? 'unknown',\n tabId: this.props.tabId,\n relatedContent: this.props.chatItem.relatedContent?.content,\n title: this.props.chatItem.relatedContent?.title,\n }).render,\n ]\n : [],\n onCopiedToClipboard: (type, text, referenceTrackerInformation) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.COPY_CODE_TO_CLIPBOARD, {\n messageId: this.props.chatItem.messageId,\n type,\n text,\n referenceTrackerInformation,\n });\n },\n onInsertToCursorPosition: (type, text, referenceTrackerInformation) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.INSERT_CODE_TO_CURSOR_POSITION, {\n messageId: this.props.chatItem.messageId,\n type,\n text,\n referenceTrackerInformation,\n });\n },\n });\n }\n return this.contentBody.render;\n })(),\n ...(this.props.chatItem.canBeVoted === true && this.props.chatItem.messageId !== undefined\n ? [ new ChatItemRelevanceVote({ tabId: this.props.tabId, messageId: this.props.chatItem.messageId }).render ]\n : []),\n ],\n }).render,\n ]\n : ''),\n this.props.chatItem.followUp?.text !== undefined ? new ChatItemFollowUpContainer({ tabId: this.props.tabId, chatItem: this.props.chatItem }).render : '',\n ];\n };\n\n private readonly getChatAvatar = (): ExtendedHTMLElement =>\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-icon-wrapper' ],\n children: [ new Icon({ icon: this.props.chatItem.type === ChatItemType.PROMPT ? MynahIcons.USER : MynahIcons.MYNAH }).render ],\n });\n\n private readonly getInsertedTypewriterPartsCss = (): ExtendedHTMLElement => DomBuilder.getInstance().build({\n type: 'style',\n attributes: {\n type: 'text/css'\n },\n persistent: true,\n innerHTML: `\n ${\n (new Array(Math.max(0, (this.typewriterItemIndex ?? 0) - (this.previousTypewriterItemIndex ?? 0))).fill(null)).map((n, i) => {\n return `\n .${this.typewriterId} .typewriter-part[index=\"${i + this.previousTypewriterItemIndex}\"] {\n animation: none !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n `;\n }).join('')\n }\n `\n });\n\n private readonly getInsertingTypewriterPartsCss = (\n newWordsCount: number,\n timeForEach: number): ExtendedHTMLElement => (DomBuilder.getInstance().build({\n type: 'style',\n attributes: {\n type: 'text/css'\n },\n innerHTML: `\n ${\n (new Array(Math.max(0, newWordsCount ?? 0)).fill(null)).map((n, i) => {\n return `\n .${this.typewriterId} .typewriter-part[index=\"${i + this.typewriterItemIndex}\"] {\n animation: typewriter 100ms ease-out forwards;\n animation-delay: ${i * timeForEach}ms !important;\n }\n `;\n }).join('')\n }\n `\n }));\n\n public readonly updateCard = (): void => {\n if (this.updateTimer === undefined && this.updateCardStack.length > 0) {\n const updateWith: Partial<ChatItem> | undefined = this.updateStack.shift();\n if (updateWith !== undefined) {\n this.props.chatItem = {\n ...this.props.chatItem,\n ...updateWith,\n };\n\n const newCardContent = this.getCardContent();\n const upcomingWords = Array.from(this.contentBody.render.querySelectorAll('.typewriter-part'));\n for (let i = 0; i < upcomingWords.length; i++) {\n upcomingWords[i].setAttribute('index', i.toString());\n }\n if (this.typewriterId === undefined) {\n this.typewriterId = `typewriter-card-${generateUID()}`;\n }\n this.render.update({\n classNames: [ ...this.getCardClasses(), 'reveal', this.typewriterId, 'typewriter-animating' ],\n children: [\n ...newCardContent,\n this.getInsertedTypewriterPartsCss(),\n ],\n });\n\n // How many new words will be added\n const newWordsCount = upcomingWords.length - this.typewriterItemIndex;\n\n // For each stack, without exceeding 500ms in total\n // we're setting each words delay time according to the count of them.\n // Word appearence time cannot exceed 50ms\n // Stack's total appearence time cannot exceed 500ms\n const timeForEach = Math.min(50, Math.floor(TYPEWRITER_STACK_TIME / newWordsCount));\n\n // Generate animator style and inject into render\n // CSS animations ~100 times faster then js timeouts/intervals\n this.render.insertChild('beforeend', this.getInsertingTypewriterPartsCss(newWordsCount, timeForEach));\n\n // All the animator selectors injected\n // update the words count for a potential upcoming set\n this.previousTypewriterItemIndex = this.typewriterItemIndex;\n this.typewriterItemIndex = upcomingWords.length;\n\n // If there is another set\n // call the same function to check after current stack totally shown\n this.updateTimer = setTimeout(() => {\n this.render.removeClass('typewriter-animating');\n this.render.insertChild('beforeend', this.getInsertedTypewriterPartsCss());\n this.updateTimer = undefined;\n this.updateCard();\n }, timeForEach * newWordsCount);\n }\n }\n };\n\n public readonly updateCardStack = (updateWith: Partial<ChatItem>): void => {\n this.updateStack.push(updateWith);\n this.updateCard();\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { marked } from 'marked';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { ChatItem, MynahEventNames } from '../../static';\nimport { Icon } from '../icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\n\nconst PREVIEW_DELAY = 250;\nconst MAX_LENGTH = 40;\nexport interface ChatItemFollowUpProps {tabId: string; chatItem: ChatItem}\nexport class ChatItemFollowUpContainer {\n private readonly props: ChatItemFollowUpProps;\n render: ExtendedHTMLElement;\n private readonly itemAddListenerId: string;\n private followupTooltip: Overlay | null;\n private followupTooltipTimeout: ReturnType<typeof setTimeout>;\n constructor (props: ChatItemFollowUpProps) {\n this.props = props;\n this.props.chatItem = props.chatItem;\n this.itemAddListenerId = MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_ITEM_ADD, (data) => {\n if (data.tabId === this.props.tabId) {\n this.render.remove();\n this.hideCroppedFollowupText();\n MynahUIGlobalEvents.getInstance().removeListener(MynahEventNames.CHAT_ITEM_ADD, this.itemAddListenerId);\n }\n });\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-text' ],\n children: [ this.props.chatItem.followUp?.text ?? '' ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-options-wrapper' ],\n children: this.props.chatItem.followUp?.options?.map(followUpOption => (\n {\n type: 'div',\n classNames: [\n 'mynah-chat-item-followup-question-option',\n `mynah-chat-item-followup-question-option-status-${followUpOption.status ?? 'default'}`,\n followUpOption.disabled === true ? 'mynah-chat-item-followup-question-option-disabled' : ''\n ],\n children: [\n ...(followUpOption.icon !== undefined\n ? [\n new Icon({ icon: followUpOption.icon }).render\n ]\n : []),\n followUpOption.pillText.length > MAX_LENGTH ? `${followUpOption.pillText.substring(0, MAX_LENGTH - 3)}...` : followUpOption.pillText\n ],\n events: {\n ...(followUpOption.disabled !== true\n ? {\n click: (e) => {\n this.hideCroppedFollowupText();\n MynahUIGlobalEvents.getInstance().removeListener(MynahEventNames.CHAT_ITEM_ADD, this.itemAddListenerId);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.FOLLOW_UP_CLICKED, { tabId: this.props.tabId, messageId: this.props.chatItem.messageId, followUpOption });\n if ((this.render.parentElement as ExtendedHTMLElement)?.hasClass('mynah-chat-item-empty')) {\n this.render.parentElement?.remove();\n } else {\n this.render.remove();\n };\n }\n }\n : {}),\n ...(followUpOption.pillText.length > MAX_LENGTH || followUpOption.description !== undefined\n ? {\n mouseover: (e) => {\n let tooltipText = followUpOption.pillText.length > MAX_LENGTH ? followUpOption.pillText : '';\n if (followUpOption.description !== undefined) {\n if (tooltipText !== '') {\n tooltipText += '\\n\\n';\n }\n tooltipText += followUpOption.description;\n }\n this.showCroppedFollowupText(e, tooltipText);\n },\n mouseleave: this.hideCroppedFollowupText\n }\n : {})\n }\n }\n )) as DomBuilderObject[]\n },\n ]\n });\n\n // revert back if the extension is set before (because it only works globally)\n marked.use({\n extensions: [ {\n name: 'text',\n renderer: (token) => {\n return token.text;\n }\n } ]\n });\n\n Array.from(this.render.getElementsByClassName('mynah-chat-item-followup-question-option')).forEach(option => {\n option.innerHTML = marked(option.innerHTML, { breaks: true }).replace('<p>', '').replace('</p>', '');\n });\n Array.from(this.render.getElementsByTagName('a')).forEach(a => {\n const url = a.href;\n\n a.onclick = (event?: MouseEvent) => {\n MynahUIGlobalEvents\n .getInstance()\n .dispatch(MynahEventNames.LINK_CLICK, {\n tabId: this.props.tabId,\n messageId: this.props.chatItem.messageId,\n link: url,\n event,\n });\n };\n });\n }\n\n private readonly showCroppedFollowupText = (e: MouseEvent, content: string): void => {\n if (content.trim() !== undefined) {\n clearTimeout(this.followupTooltipTimeout);\n this.followupTooltipTimeout = setTimeout(() => {\n const elm: HTMLElement = e.target as HTMLElement;\n this.followupTooltip = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-content' ],\n innerHTML: marked(content, { breaks: true }).replace('<p>', '').replace('</p>', '')\n }\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n }\n };\n\n private readonly hideCroppedFollowupText = (): void => {\n clearTimeout(this.followupTooltipTimeout);\n if (this.followupTooltip !== null) {\n this.followupTooltip?.close();\n this.followupTooltip = null;\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload, MynahEventNames, RelevancyVoteType } from '../../static';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Icon, MynahIcons } from '../icon';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { Button } from '../button';\nimport { Config } from '../../helper/config';\n\nconst THANKS_REMOVAL_DURATION = 3500;\nexport interface ChatItemRelevanceVoteProps {\n tabId: string;\n messageId: string;\n}\nexport class ChatItemRelevanceVote {\n private readonly votingId: string;\n private sendFeedbackListenerId: string | undefined;\n render: ExtendedHTMLElement;\n props: ChatItemRelevanceVoteProps;\n constructor (props: ChatItemRelevanceVoteProps) {\n this.props = props;\n this.votingId = `${this.props.tabId}-${this.props.messageId}`;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-votes-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-card-vote' ],\n children: [\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.UP);\n },\n },\n attributes: {\n type: 'radio',\n id: `${this.votingId}-vote-up`,\n name: `${this.votingId}-vote`,\n value: 'up',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-up-radio' ],\n },\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.DOWN);\n },\n },\n attributes: {\n type: 'radio',\n id: `${this.votingId}-vote-down`,\n name: `${this.votingId}-vote`,\n value: 'down',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-down-radio' ],\n },\n {\n type: 'label',\n attributes: { for: `${this.votingId}-vote-up` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-up' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_UP }).render ],\n },\n {\n type: 'label',\n attributes: { for: `${this.votingId}-vote-down` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-down' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_DOWN }).render ],\n },\n ],\n },\n ],\n });\n }\n\n private readonly handleVoteChange = (vote: RelevancyVoteType): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CARD_VOTE, { messageId: this.props.messageId, tabId: this.props.tabId, vote });\n const newChildren = [\n Config.getInstance().config.texts.feedbackThanks,\n ...(vote === RelevancyVoteType.DOWN\n ? [\n new Button({\n label: Config.getInstance().config.texts.feedbackReportButtonLabel,\n onClick: () => {\n if (this.sendFeedbackListenerId === undefined) {\n this.sendFeedbackListenerId = MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FEEDBACK_SET, (data: FeedbackPayload) => {\n if (data.messageId === this.props.messageId && data.tabId === this.props.tabId) {\n MynahUIGlobalEvents.getInstance().removeListener(MynahEventNames.FEEDBACK_SET, this.sendFeedbackListenerId as string);\n this.render.remove();\n }\n });\n }\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SHOW_FEEDBACK_FORM, { tabId: this.props.tabId, messageId: this.props.messageId });\n },\n primary: false\n }).render\n ]\n : [])\n ];\n this.render.replaceChildren(...newChildren);\n\n if (vote === RelevancyVoteType.UP) {\n setTimeout(() => {\n this.render.remove();\n }, THANKS_REMOVAL_DURATION);\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahEventNames, SourceLink } from '../../static';\nimport { Button } from '../button';\nimport { Card } from '../card/card';\nimport { Icon, MynahIcons } from '../icon';\nimport { SourceLinkHeader } from '../source-link/source-link-header';\n\nconst MAX_ITEMS = 1;\nexport interface ChatItemSourceLinksContainerProps {\n tabId: string;\n messageId: string;\n title?: string;\n relatedContent?: SourceLink[];\n}\nexport class ChatItemSourceLinksContainer {\n private readonly props: ChatItemSourceLinksContainerProps;\n private readonly showMoreButtonBlock: Button;\n render: ExtendedHTMLElement;\n chatAvatar: ExtendedHTMLElement;\n constructor (props: ChatItemSourceLinksContainerProps) {\n this.props = props;\n this.showMoreButtonBlock = new Button({\n classNames: [ 'mynah-chat-item-card-related-content-show-more' ],\n primary: false,\n icon: new Icon({ icon: MynahIcons.DOWN_OPEN }).render,\n onClick: () => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SHOW_MORE_WEB_RESULTS_CLICK, { messageId: this.props.messageId });\n this.showMoreButtonBlock.render.remove();\n (this.render).addClass('expanded');\n },\n label: 'Show more',\n });\n\n if (this.props.relatedContent !== undefined) {\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-related-content',\n this.props.relatedContent !== undefined && this.props.relatedContent.length <= MAX_ITEMS ? 'expanded' : '' ],\n children: [\n ...(this.props.title !== undefined\n ? [ {\n type: 'span',\n classNames: [ 'mynah-chat-item-card-related-content-title' ],\n children: [ this.props.title ],\n } ]\n : []),\n ...this.props.relatedContent.map(sourceLink => DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-related-content-item' ],\n children: [\n new Card({\n background: false,\n border: false,\n padding: 'none',\n children: [\n new SourceLinkHeader({\n sourceLink,\n showCardOnHover: true,\n onClick: (e) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SOURCE_LINK_CLICK, {\n messageId: this.props.messageId,\n link: sourceLink.url,\n event: e\n });\n }\n }).render\n ]\n }).render\n ]\n })),\n this.showMoreButtonBlock.render\n ]\n });\n }\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { ReferenceTrackerInformation } from '../../static';\nimport { CardBody } from '../card/card-body';\nimport { CollapsibleContent } from '../collapsible-content';\n\nexport interface ChatItemTreeViewLicenseProps {\n referenceSuggestionLabel: string;\n references: ReferenceTrackerInformation[];\n}\n\nexport class ChatItemTreeViewLicense {\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewLicenseProps) {\n // If no references are found then just return an empty div\n if (props.references.length === 0) {\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'empty' ]\n });\n return;\n }\n\n this.render = new CollapsibleContent({\n title: Config.getInstance().config.texts.codeSuggestionWithReferenceTitle,\n classNames: [ 'mynah-chat-item-tree-view-license' ],\n children: [ this.buildDropdownChildren(props.references) ]\n }).render;\n }\n\n private readonly buildDropdownChildren = (references: ReferenceTrackerInformation[]): ExtendedHTMLElement => DomBuilder.getInstance().build({\n type: 'ul',\n classNames: [ 'mynah-chat-item-tree-view-license-container' ],\n children: references.map(ref => ({\n type: 'li',\n children: [\n new CardBody({\n body: ref.information\n }).render\n ]\n })),\n });\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { fileListToTree } from '../../helper/file-tree';\nimport { ReferenceTrackerInformation } from '../../static';\nimport { ChatItemTreeView } from './chat-item-tree-view';\nimport { ChatItemTreeViewLicense } from './chat-item-tree-view-license';\n\nexport interface ChatItemTreeViewWrapperProps {\n tabId: string;\n messageId: string;\n files: string[];\n deletedFiles: string[];\n referenceSuggestionLabel: string;\n references: ReferenceTrackerInformation[];\n}\n\nexport class ChatItemTreeViewWrapper {\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewWrapperProps) {\n const license = new ChatItemTreeViewLicense({\n referenceSuggestionLabel: props.referenceSuggestionLabel,\n references: props.references\n }).render;\n\n const tree = new ChatItemTreeView({\n messageId: props.messageId,\n tabId: props.tabId,\n node: fileListToTree(props.files, props.deletedFiles),\n }).render;\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper-container' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper-title' ],\n children: [\n {\n type: 'h4',\n children: [ `${Config.getInstance().config.texts.codeSuggestions}` ]\n },\n {\n type: 'span',\n children: [ `${props.files.length} ${Config.getInstance().config.texts.files}` ]\n },\n ]\n },\n license,\n tree,\n ]\n },\n {\n type: 'p',\n children: [ Config.getInstance().config.texts.clickFileToViewDiff ]\n }\n ]\n });\n }\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { cancelEvent, MynahUIGlobalEvents } from '../../helper/events';\nimport { FileNode, TreeNode } from '../../helper/file-tree';\nimport { MynahEventNames } from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\n\nexport interface ChatItemTreeViewProps {\n node: TreeNode;\n depth?: number;\n tabId: string;\n messageId: string;\n}\n\nexport class ChatItemTreeView {\n private readonly node: TreeNode;\n private isOpen: boolean;\n private readonly depth: number;\n private readonly tabId: string;\n private readonly messageId: string;\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewProps) {\n this.node = props.node;\n this.tabId = props.tabId;\n this.messageId = props.messageId;\n this.isOpen = true;\n this.depth = props.depth ?? 0;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: this.getClassNames(),\n children: [ ...(this.node.type === 'folder' ? this.buildFolderNode() : this.buildFileNode()) ],\n });\n }\n\n getClassNames (): string[] {\n return [\n 'mynah-chat-item-tree-view',\n this.node.type === 'file' ? 'mynah-chat-tree-view-file' : `mynah-chat-tree-view-folder-${this.isOpen ? 'open' : 'closed'}`,\n ];\n }\n\n updateTree (): void {\n this.render.update({\n classNames: this.getClassNames(),\n children: [ ...(this.node.type === 'folder' ? this.buildFolderNode() : this.buildFileNode()) ],\n });\n }\n\n buildFolderChildren (): ExtendedHTMLElement[] {\n if (this.node.type !== 'folder') return [];\n\n const folderChildren = this.isOpen\n ? this.node.children.map(childNode =>\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-pull-request-item' ],\n children: [ new ChatItemTreeView({ node: childNode, depth: this.depth + 1, tabId: this.tabId, messageId: this.messageId }).render ],\n })\n )\n : [];\n return folderChildren;\n }\n\n buildFolderNode (): ExtendedHTMLElement[] {\n if (this.node.type !== 'folder') return [];\n\n const folderItem = new Button({\n icon: new Icon({ icon: this.isOpen ? MynahIcons.DOWN_OPEN : MynahIcons.RIGHT_OPEN }).render,\n label: `${this.node.name} ${this.node.children.length} files`,\n primary: false,\n onClick: e => {\n cancelEvent(e);\n this.isOpen = !this.isOpen;\n this.updateTree();\n },\n }).render;\n folderItem.style.paddingLeft = `${15 * this.depth}px`;\n const childrenItems = this.buildFolderChildren();\n return [ folderItem, ...childrenItems ];\n }\n\n buildFileNode (): ExtendedHTMLElement[] {\n if (this.node.type !== 'file') return [];\n\n const fileItem = new Button({\n // Eye is temporary until file addition/file removal is finished\n icon: new Icon({ icon: MynahIcons.DOC }).render,\n label: this.node.name,\n primary: false,\n onClick: () => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.OPEN_DIFF, {\n tabId: this.tabId,\n messageId: this.messageId,\n filePath: (this.node as FileNode).filePath,\n deleted: (this.node as FileNode).deleted,\n });\n },\n }).render;\n fileItem.style.paddingLeft = `${15 * this.depth}px`;\n if (this.node.deleted) {\n fileItem.style.textDecoration = 'line-through';\n }\n return [ fileItem ];\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\n\nexport interface ChatPromptInputCommandProps {\n command: string;\n onRemoveClick: () => void;\n}\nexport class ChatPromptInputCommand {\n render: ExtendedHTMLElement;\n private readonly props: ChatPromptInputCommandProps;\n private readonly promptTextInputCommand: ExtendedHTMLElement;\n constructor (props: ChatPromptInputCommandProps) {\n this.props = props;\n this.promptTextInputCommand = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input-command-text' ],\n events: {\n click: this.props.onRemoveClick\n }\n });\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input-command-wrapper', this.props.command === '' ? 'hidden' : '' ],\n children: [\n this.promptTextInputCommand,\n ]\n });\n }\n\n setCommand = (command: string): void => {\n if (command.trim() === '') {\n this.render.addClass('hidden');\n } else {\n this.render.removeClass('hidden');\n }\n this.promptTextInputCommand.innerText = command;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { marked } from 'marked';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { CardBody } from '../card/card-body';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahEventNames } from '../../static';\n\nexport interface ChatPromptInputInfoProps{\n tabId: string;\n}\nexport class ChatPromptInputInfo {\n render: ExtendedHTMLElement;\n constructor (props: ChatPromptInputInfoProps) {\n // revert back if the extension is set before (because it only works globally)\n marked.use({\n extensions: [ {\n name: 'text',\n renderer: (token) => {\n return token.text;\n }\n } ]\n });\n MynahUITabsStore.getInstance().addListenerToDataStore(props.tabId, 'promptInputInfo', (newInfo) => {\n this.render.update({\n children: [\n new CardBody({\n onLinkClick: this.linkClick,\n body: MynahUITabsStore.getInstance().getTabDataStore(props.tabId)?.getValue('promptInputInfo') ?? ''\n }).render\n ]\n });\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-info' ],\n children: [\n new CardBody({\n onLinkClick: this.linkClick,\n body: MynahUITabsStore.getInstance().getTabDataStore(props.tabId)?.getValue('promptInputInfo') ?? ''\n }).render\n ]\n });\n }\n\n private readonly linkClick = (url: string, e: MouseEvent): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.INFO_LINK_CLICK, {\n link: url,\n event: e,\n });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { KeyMap, MynahEventNames, QuickActionCommand, QuickActionCommandGroup, SourceLink } from '../../static';\nimport { MynahUIGlobalEvents, cancelEvent } from '../../helper/events';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport escapeHTML from 'escape-html';\nimport { ChatPromptInputCommand } from './chat-prompt-input-command';\nimport { CodeSnippet } from './prompt-input/code-snippet';\nimport { SendButton } from './prompt-input/send-button';\nimport { PromptTextInput } from './prompt-input/prompt-text-input';\n\nexport const MAX_USER_INPUT = 4000;\nexport const MAX_USER_INPUT_THRESHOLD = 96;\nexport interface ChatPromptInputProps {\n tabId: string;\n}\nexport class ChatPromptInput {\n render: ExtendedHTMLElement;\n private readonly props: ChatPromptInputProps;\n private readonly attachmentWrapper: ExtendedHTMLElement;\n private readonly promptTextInput: PromptTextInput;\n private readonly promptTextInputCommand: ChatPromptInputCommand;\n private readonly remainingCharsIndicator: ExtendedHTMLElement;\n private readonly sendButton: SendButton;\n private readonly codeSnippet: CodeSnippet;\n private quickActionCommands: QuickActionCommandGroup[];\n private commandSelector: Overlay;\n private commandSelectorOpen: boolean = false;\n private selectedCommand: string = '';\n private attachment?: SourceLink;\n private filteredCommandsList: QuickActionCommandGroup[];\n constructor (props: ChatPromptInputProps) {\n this.props = props;\n this.quickActionCommands = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('quickActionCommands') as QuickActionCommandGroup[];\n this.promptTextInputCommand = new ChatPromptInputCommand({\n command: '',\n onRemoveClick: () => {\n this.selectedCommand = '';\n this.promptTextInputCommand.setCommand('');\n }\n });\n this.promptTextInput = new PromptTextInput({\n initMaxLength: MAX_USER_INPUT,\n tabId: this.props.tabId,\n onKeydown: this.handleInputKeydown,\n onInput: () => this.updateAvailableCharactersIndicator(),\n });\n this.remainingCharsIndicator = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-chars-indicator' ],\n innerHTML: `${MAX_USER_INPUT - this.promptTextInput.getTextInputValue().length}/${MAX_USER_INPUT}`\n });\n this.sendButton = new SendButton({\n tabId: this.props.tabId,\n onClick: () => {\n this.sendPrompt();\n },\n });\n\n this.codeSnippet = new CodeSnippet({\n tabId: this.props.tabId,\n });\n\n this.attachmentWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-attachment-wrapper' ],\n children: [\n this.codeSnippet.render\n ]\n });\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-prompt' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-wrapper' ],\n children: [\n this.promptTextInputCommand.render,\n this.promptTextInput.render,\n this.sendButton.render,\n ]\n },\n this.attachmentWrapper\n ]\n },\n this.remainingCharsIndicator,\n ],\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.ADD_CODE_SNIPPET, (data: {\n textToAdd?: string;\n tabId?: string;\n }) => {\n if (this.props.tabId === data.tabId) {\n // Code snippet will have a limit of MAX_USER_INPUT - MAX_USER_INPUT_THRESHOLD - current prompt text length\n // If exceeding that, we will crop it\n const textInputLength = this.promptTextInput.getTextInputValue().trim().length;\n const currentSelectedCodeMaxLength = (MAX_USER_INPUT + MAX_USER_INPUT_THRESHOLD) - textInputLength;\n const croppedSelectedCodeSnippet = (data.textToAdd ?? '')?.slice(0, currentSelectedCodeMaxLength);\n this.codeSnippet.updateSelectedCodeSnippet(croppedSelectedCodeSnippet);\n // Also update the limit on prompt text given the selected code\n this.promptTextInput.updateTextInputMaxLength(Math.min(MAX_USER_INPUT, Math.max(MAX_USER_INPUT_THRESHOLD, (MAX_USER_INPUT + MAX_USER_INPUT_THRESHOLD) - croppedSelectedCodeSnippet.length)));\n this.updateAvailableCharactersIndicator();\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.REMOVE_CODE_SNIPPET, () => {\n this.promptTextInput.updateTextInputMaxLength(MAX_USER_INPUT);\n this.codeSnippet.clear();\n // Update the limit on prompt text given the selected code\n this.updateAvailableCharactersIndicator();\n });\n\n setTimeout(() => {\n this.promptTextInput.focus();\n }, 500);\n }\n\n private readonly updateAvailableCharactersIndicator = (): void => {\n const remainingChars =\n this.promptTextInput.promptTextInputMaxLength - this.promptTextInput.getTextInputValue().trim().length;\n this.remainingCharsIndicator.update({\n innerHTML: `${Math.max(0, remainingChars)}/${MAX_USER_INPUT}`\n });\n };\n\n private readonly handleInputKeydown = (e: KeyboardEvent): void => {\n if (!this.commandSelectorOpen) {\n this.quickActionCommands = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('quickActionCommands') as QuickActionCommandGroup[];\n if (e.key === KeyMap.BACKSPACE && this.selectedCommand !== '' && this.promptTextInput.getTextInputValue() === '') {\n cancelEvent(e);\n this.clearTextArea(true);\n } else if (e.key === KeyMap.ENTER && !e.shiftKey && !e.ctrlKey) {\n cancelEvent(e);\n this.sendPrompt();\n } else if (this.selectedCommand === '' && this.quickActionCommands.length > 0 && e.key === KeyMap.SLASH && this.promptTextInput.getTextInputValue() === '') {\n // Show available quick actions\n if (this.commandSelector !== undefined) {\n this.commandSelector.close();\n }\n this.filteredCommandsList = [ ...this.quickActionCommands ];\n this.commandSelector = new Overlay({\n closeOnOutsideClick: true,\n referenceElement: this.render.querySelector('.mynah-chat-prompt') as ExtendedHTMLElement,\n dimOutside: false,\n stretchWidth: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n onClose: () => {\n this.commandSelectorOpen = false;\n },\n children: [\n this.getQuickCommandActions(this.quickActionCommands)\n ],\n });\n\n this.commandSelectorOpen = true;\n }\n } else {\n const blockedKeys = [ KeyMap.ENTER, KeyMap.ESCAPE, KeyMap.SPACE, KeyMap.TAB, KeyMap.BACK_SLASH, KeyMap.SLASH ] as string[];\n const navigationalKeys = [ KeyMap.ARROW_UP, KeyMap.ARROW_DOWN ] as string[];\n if (blockedKeys.includes(e.key)) {\n e.preventDefault();\n if (e.key === KeyMap.ENTER || e.key === KeyMap.TAB || e.key === KeyMap.SPACE) {\n let targetElement;\n if (this.filteredCommandsList.length > 0) {\n // If list is empty, it means there's no match, so we need to clear the selection\n targetElement = this.commandSelector.render.querySelector('.target-command') ?? this.commandSelector.render.querySelector('.mynah-chat-command-selector-command');\n }\n this.handleCommandSelection({\n command: targetElement?.getAttribute('command') ?? '',\n placeholder: targetElement?.getAttribute('placeholder') ?? undefined,\n });\n }\n if (this.commandSelector !== undefined) {\n if (e.key === KeyMap.ESCAPE) {\n this.clearTextArea(true);\n }\n this.commandSelector.close();\n }\n } else if (navigationalKeys.includes(e.key)) {\n e.preventDefault();\n const commandElements = Array.from(this.commandSelector.render.querySelectorAll('.mynah-chat-command-selector-command'));\n let lastActiveElement = commandElements.findIndex(commandElement => commandElement.classList.contains('target-command'));\n lastActiveElement = lastActiveElement === -1 ? commandElements.length : lastActiveElement;\n let nextElement: number;\n if (e.key === KeyMap.ARROW_UP) {\n if (lastActiveElement > 0) {\n nextElement = lastActiveElement - 1;\n } else {\n nextElement = commandElements.length - 1;\n }\n } else {\n if (lastActiveElement < commandElements.length - 1) {\n nextElement = lastActiveElement + 1;\n } else {\n nextElement = 0;\n }\n }\n\n commandElements[lastActiveElement]?.classList.remove('target-command');\n commandElements[nextElement].classList.add('target-command');\n if (commandElements[nextElement].getAttribute('prompt') !== null) {\n this.promptTextInput.updateTextInputValue(commandElements[nextElement].getAttribute('prompt') as string);\n }\n } else {\n if (this.commandSelector !== undefined) {\n setTimeout(() => {\n if (this.promptTextInput.getTextInputValue() === '') {\n this.commandSelector.close();\n } else {\n this.filteredCommandsList = [];\n [ ...this.quickActionCommands ].forEach((quickActionGroup: QuickActionCommandGroup) => {\n const newQuickActionCommandGroup = { ...quickActionGroup };\n try {\n const promptRegex = new RegExp(`${this.promptTextInput.getTextInputValue().substring(1)}` ?? '', 'gi');\n newQuickActionCommandGroup.commands = newQuickActionCommandGroup.commands.filter(command =>\n command.command.match(promptRegex)\n );\n if (newQuickActionCommandGroup.commands.length > 0) {\n this.filteredCommandsList.push(newQuickActionCommandGroup);\n }\n } catch (e) {\n // In case the prompt is an incomplete regex\n }\n });\n if (this.filteredCommandsList.length > 0) {\n this.commandSelector.toggleHidden(false);\n this.commandSelector.updateContent([ this.getQuickCommandActions(this.filteredCommandsList) ]);\n } else {\n // If there's no matching action, hide the command selector overlay\n this.commandSelector.toggleHidden(true);\n }\n }\n }, 1);\n }\n }\n }\n };\n\n private readonly getQuickCommandActions = (quickCommandList: QuickActionCommandGroup[]): ExtendedHTMLElement => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector' ],\n children: quickCommandList.map((quickActionCommandGroup) => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-group' ],\n children: [\n ...(quickActionCommandGroup.groupName !== undefined\n ? [ DomBuilder.getInstance().build({\n type: 'h4',\n classNames: [ 'mynah-chat-command-selector-group-title' ],\n children: [ quickActionCommandGroup.groupName ]\n }) ]\n : []),\n ...(quickActionCommandGroup.commands.map(quickActionCommand => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command' ],\n attributes: {\n ...quickActionCommand\n },\n events: {\n click: () => {\n this.handleCommandSelection(quickActionCommand);\n }\n },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command-name' ],\n children: [ quickActionCommand.command ]\n },\n ...(quickActionCommand.description !== undefined\n ? [ {\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command-description' ],\n children: [ quickActionCommand.description ]\n } ]\n : [])\n ]\n });\n }))\n ]\n });\n })\n });\n };\n\n private readonly handleCommandSelection = (quickActionCommand: QuickActionCommand): void => {\n this.selectedCommand = quickActionCommand.command;\n this.promptTextInput.updateTextInputValue('');\n if (quickActionCommand.placeholder !== undefined) {\n this.promptTextInputCommand.setCommand(this.selectedCommand);\n this.promptTextInput.updateTextInputPlaceholder(quickActionCommand.placeholder);\n } else {\n this.sendPrompt();\n }\n this.commandSelector.close();\n this.promptTextInput.focus();\n };\n\n public readonly clearTextArea = (keepAttachment?: boolean): void => {\n this.selectedCommand = '';\n this.promptTextInput.clear();\n this.promptTextInput.updateTextInputMaxLength(MAX_USER_INPUT);\n this.promptTextInputCommand.setCommand('');\n if (keepAttachment !== true) {\n this.attachmentWrapper.clear();\n this.codeSnippet.clear();\n this.attachment = undefined;\n }\n this.updateAvailableCharactersIndicator();\n };\n\n public readonly addText = (textToAdd: string): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.ADD_CODE_SNIPPET, {\n textToAdd,\n tabId: this.props.tabId\n });\n };\n\n private readonly sendPrompt = (): void => {\n const currentInputValue = this.promptTextInput.getTextInputValue();\n if (currentInputValue.trim() !== '' || this.selectedCommand.trim() !== '') {\n const selectedCodeSnippet: string | undefined = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('selectedCodeSnippet');\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_PROMPT, {\n tabId: this.props.tabId,\n prompt: {\n prompt: currentInputValue + (selectedCodeSnippet ?? ''),\n escapedPrompt: escapeHTML(currentInputValue + (selectedCodeSnippet ?? '')),\n ...(this.selectedCommand !== '' ? { command: this.selectedCommand } : {}),\n attachment: this.attachment\n }\n });\n this.clearTextArea();\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { ChatItem, ChatItemType } from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\nimport { ChatItemCard } from './chat-item-card';\nimport { ChatPromptInput } from './chat-prompt-input';\nimport { ChatPromptInputInfo } from './chat-prompt-input-info';\n\nexport interface ChatWrapperProps {\n onStopChatResponse?: (tabId: string) => void;\n tabId: string;\n}\nexport class ChatWrapper {\n private readonly props: ChatWrapperProps;\n private readonly chatItemsContainer: ExtendedHTMLElement;\n private readonly intermediateBlockContainer: ExtendedHTMLElement;\n private readonly promptInputElement: ExtendedHTMLElement;\n private readonly promptInput: ChatPromptInput;\n private readonly promptInfo: ExtendedHTMLElement;\n private lastChatItemCard: ChatItemCard | null;\n render: ExtendedHTMLElement;\n constructor (props: ChatWrapperProps) {\n this.props = props;\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('chatItems', (chatItems: ChatItem[]) => {\n const chatItemToInsert: ChatItem = chatItems[chatItems.length - 1];\n if (this.chatItemsContainer.children.length === chatItems.length) {\n const lastItem = this.chatItemsContainer.children.item(0);\n if (lastItem !== null) {\n lastItem.innerHTML = new ChatItemCard({ tabId: this.props.tabId, chatItem: chatItemToInsert }).render.innerHTML;\n }\n } else if (chatItems.length > 0) {\n if (this.chatItemsContainer.children.length === 0) {\n chatItems.forEach(chatItem => {\n this.insertChatItem(chatItem);\n });\n } else {\n this.insertChatItem(chatItemToInsert);\n }\n } else {\n this.chatItemsContainer.clear(true);\n }\n });\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('loadingChat', (loadingChat: boolean) => {\n if (loadingChat) {\n this.render.addClass('loading');\n } else {\n this.render.removeClass('loading');\n }\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('cancelButtonWhenLoading', (showCancelButton: boolean) => {\n if (showCancelButton) {\n this.intermediateBlockContainer.removeClass('hidden');\n } else {\n this.intermediateBlockContainer.addClass('hidden');\n }\n });\n\n this.promptInput = new ChatPromptInput({ tabId: this.props.tabId });\n this.promptInputElement = this.promptInput.render;\n this.promptInfo = new ChatPromptInputInfo({ tabId: this.props.tabId }).render;\n this.chatItemsContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-items-container' ],\n persistent: true,\n children: [],\n });\n\n this.intermediateBlockContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-overflowing-intermediate-block',\n ...(MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('cancelButtonWhenLoading') === false ? [ 'hidden' ] : []) ],\n children: [\n ...(this.props?.onStopChatResponse !== undefined\n ? [ new Button({\n classNames: [ 'mynah-chat-stop-chat-response-button' ],\n label: Config.getInstance().config.texts.stopGenerating,\n icon: new Icon({ icon: MynahIcons.BLOCK }).render,\n onClick: () => {\n if ((this.props?.onStopChatResponse) !== undefined) {\n this.props?.onStopChatResponse(this.props.tabId);\n }\n },\n }).render ]\n : [])\n ]\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-wrapper' ],\n attributes: {\n 'mynah-tab-id': this.props.tabId,\n },\n persistent: true,\n children: [\n {\n type: 'style',\n children: [ `\n .mynah-nav-tabs-wrapper[selected-tab=\"${this.props.tabId}\"] + .mynah-ui-tab-contents-wrapper > .mynah-chat-wrapper[mynah-tab-id=\"${this.props.tabId}\"]{\n display: flex;\n }\n .mynah-nav-tabs-wrapper[selected-tab=\"${this.props.tabId}\"] + .mynah-ui-tab-contents-wrapper > .mynah-chat-wrapper:not([mynah-tab-id=\"${this.props.tabId}\"]) * {\n pointer-events: none !important;\n }` ],\n },\n this.chatItemsContainer,\n this.intermediateBlockContainer,\n this.promptInputElement,\n this.promptInfo\n ]\n });\n\n const initChatItems = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('chatItems');\n if (initChatItems.length > 0) {\n initChatItems.forEach((chatItem: ChatItem) => this.insertChatItem(chatItem));\n }\n }\n\n private readonly insertChatItem = (chatItem: ChatItem): void => {\n const chatItemCard = new ChatItemCard({\n tabId: this.props.tabId,\n chatItem\n });\n if (chatItem.type === ChatItemType.ANSWER_STREAM) {\n this.lastChatItemCard?.render.addClass('stream-ended');\n this.lastChatItemCard = chatItemCard;\n } else if (\n (chatItem.type === ChatItemType.ANSWER ||\n chatItem.type === ChatItemType.PROMPT ||\n chatItem.type === ChatItemType.AI_PROMPT ||\n chatItem.type === ChatItemType.SYSTEM_PROMPT) && chatItem.body !== undefined) {\n this.lastChatItemCard?.render.addClass('stream-ended');\n this.lastChatItemCard = null;\n }\n this.chatItemsContainer.insertChild('afterbegin', chatItemCard.render);\n if (chatItem.type === ChatItemType.PROMPT || chatItem.type === ChatItemType.SYSTEM_PROMPT) {\n // Make sure we scroll the chat window to the bottom\n // Only if it is a PROMPT\n this.chatItemsContainer.scrollTop = this.chatItemsContainer.scrollHeight + 500;\n }\n };\n\n public updateLastChatAnswer = (updateWith: Partial<ChatItem>): void => {\n if (this.lastChatItemCard !== null) {\n this.lastChatItemCard.updateCardStack(updateWith);\n }\n };\n\n public addToPrompt = (textToAdd: string): void => {\n this.promptInput.addText(textToAdd);\n };\n}\n","import { ExtendedHTMLElement } from '../../../helper/dom';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../../overlay';\nimport { Icon, MynahIcons } from '../../icon';\nimport { Button } from '../../button';\nimport { MynahUIGlobalEvents, cancelEvent } from '../../../helper/events';\nimport { MynahEventNames } from '../../../static';\nimport { Card } from '../../card/card';\nimport { CardBody } from '../../card/card-body';\n\nexport interface ICodeSnippetWidgetProps {\n tabId: string;\n markdownText: string;\n}\n\nexport class CodeSnippetWidget {\n private readonly props: ICodeSnippetWidgetProps;\n private previewOverlay: Overlay | undefined;\n render: ExtendedHTMLElement;\n constructor (props: ICodeSnippetWidgetProps) {\n this.props = props;\n this.render = this.renderCodeSnippetWidget(this.props.markdownText);\n }\n\n private readonly showPreviewOverLay = (markdownText: string): void => {\n this.previewOverlay = new Overlay({\n background: true,\n closeOnOutsideClick: false,\n referenceElement: this.render,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n new Card({\n border: false,\n classNames: [ 'mynah-prompt-input-snippet-attachment-overlay' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n ]\n }).render\n ],\n });\n };\n\n private readonly closePreviewOverLay = (): void => {\n if (this.previewOverlay !== undefined) {\n this.previewOverlay.close();\n this.previewOverlay = undefined;\n }\n };\n\n private readonly renderCodeSnippetWidget = (markdownText: string): ExtendedHTMLElement => {\n return new Card({\n padding: 'none',\n events: {\n mouseenter: () => {\n this.showPreviewOverLay(markdownText);\n },\n mouseleave: () => {\n this.closePreviewOverLay();\n },\n },\n classNames: [ 'snippet-card-container' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n new Button({\n classNames: [ 'code-snippet-close-button' ],\n onClick: e => {\n cancelEvent(e);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.REMOVE_CODE_SNIPPET, this.props.tabId);\n this.closePreviewOverLay();\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render,\n primary: false,\n }).render,\n ],\n }).render;\n };\n\n public readonly clear = (): void => {\n this.closePreviewOverLay();\n };\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { CodeSnippetWidget } from './code-snippet-widget';\n\nexport interface ICodeSnippetProps {\n tabId: string;\n}\n\nexport interface ISelectCodeSnippetEvent {\n tabId: string;\n selectedCodeSnippet?: string;\n}\n\nexport class CodeSnippet {\n private readonly _props: ICodeSnippetProps;\n private readonly _render: ExtendedHTMLElement;\n private snippetWidget: CodeSnippetWidget | undefined;\n public lastCodeSnippet: string = '';\n constructor (props: ICodeSnippetProps) {\n this._props = props;\n\n this._render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'outer-container' ],\n persistent: true,\n });\n }\n\n public get render (): ExtendedHTMLElement {\n return this._render;\n }\n\n public readonly updateSelectedCodeSnippet = (selectedCodeSnippet: string | undefined): void => {\n if (this.snippetWidget !== undefined) {\n this.snippetWidget.clear();\n }\n this._render.clear();\n this.lastCodeSnippet = selectedCodeSnippet ?? '';\n if (selectedCodeSnippet !== undefined && selectedCodeSnippet !== '') {\n this.snippetWidget = new CodeSnippetWidget({\n tabId: this._props.tabId,\n markdownText: selectedCodeSnippet,\n });\n this._render.insertChild('afterbegin', this.snippetWidget.render);\n const isCodeOverflowVertically =\n (this._render.getBoundingClientRect()?.height ?? 0) < (this._render.getElementsByTagName('code')?.[0]?.getBoundingClientRect()?.height ?? 0);\n if (isCodeOverflowVertically) {\n this._render.children[0].classList.add('vertical-overflow');\n }\n }\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId)?.updateStore({\n selectedCodeSnippet,\n });\n };\n\n public readonly clear = (): void => {\n this.lastCodeSnippet = '';\n if (this.snippetWidget !== undefined) {\n this.snippetWidget.clear();\n }\n this.snippetWidget = undefined;\n this._render.clear();\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId)?.updateStore({\n selectedCodeSnippet: undefined,\n });\n };\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { MAX_USER_INPUT } from '../chat-prompt-input';\n\nexport interface PromptTextInputProps {\n tabId: string;\n initMaxLength: number;\n onKeydown: (e: KeyboardEvent) => void;\n onInput?: (e: KeyboardEvent) => void;\n}\n\nexport class PromptTextInput {\n render: ExtendedHTMLElement;\n promptTextInputMaxLength: number;\n private readonly props: PromptTextInputProps;\n private readonly promptTextInputSizer: ExtendedHTMLElement;\n private readonly promptTextInput: ExtendedHTMLElement;\n constructor (props: PromptTextInputProps) {\n this.props = props;\n this.promptTextInputMaxLength = props.initMaxLength;\n\n const initialDisabledState = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('promptInputDisabledState') as boolean;\n\n this.promptTextInputSizer = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input', 'mynah-chat-prompt-input-sizer' ],\n });\n\n this.promptTextInput = DomBuilder.getInstance().build({\n type: 'textarea',\n classNames: [ 'mynah-chat-prompt-input' ],\n attributes: {\n ...(initialDisabledState ? { disabled: 'disabled' } : {}),\n tabindex: '1',\n rows: '1',\n maxlength: MAX_USER_INPUT.toString(),\n type: 'text',\n placeholder: MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('promptInputPlaceholder'),\n value: '',\n },\n events: {\n keydown: this.props.onKeydown,\n input: (e: KeyboardEvent) => {\n // Set the appropriate prompt input height\n this.updatePromptTextInputSizer();\n // Additional handler\n if (this.props.onInput !== undefined) {\n this.props.onInput(e);\n }\n },\n focus: () => {\n this.render.addClass('input-has-focus');\n },\n blur: () => {\n this.render.removeClass('input-has-focus');\n }\n },\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-inner-wrapper', 'no-text' ],\n children: [\n this.promptTextInputSizer,\n this.promptTextInput,\n ]\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('promptInputDisabledState', (isDisabled: boolean) => {\n if (isDisabled) {\n this.promptTextInput.setAttribute('disabled', 'disabled');\n } else {\n // Enable the input field and focus on it\n this.promptTextInput.removeAttribute('disabled');\n this.promptTextInput.focus();\n }\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('promptInputPlaceholder', (placeholderText: string) => {\n if (placeholderText !== undefined) {\n this.promptTextInput.update({\n attributes: {\n placeholder: placeholderText\n }\n });\n }\n });\n }\n\n private readonly updatePromptTextInputSizer = (): void => {\n if (this.promptTextInput.value.trim() !== '') {\n this.render.removeClass('no-text');\n } else {\n this.render.addClass('no-text');\n }\n this.promptTextInputSizer.innerHTML = this.promptTextInput.value.replace(/\\n/g, '</br> ');\n };\n\n public readonly clear = (): void => {\n this.promptTextInputSizer.innerHTML = '';\n this.updateTextInputValue('');\n const defaultPlaceholder = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('promptInputPlaceholder');\n this.updateTextInputPlaceholder(defaultPlaceholder);\n this.render.addClass('no-text');\n };\n\n public readonly focus = (): void => {\n this.promptTextInput.focus();\n this.updateTextInputValue('');\n };\n\n public readonly getTextInputValue = (): string => {\n return this.promptTextInput.value;\n };\n\n public readonly updateTextInputValue = (value: string): void => {\n this.promptTextInput.value = value;\n };\n\n public readonly updateTextInputMaxLength = (maxLength: number): void => {\n this.promptTextInputMaxLength = maxLength;\n this.promptTextInput.update({\n attributes: {\n maxlength: maxLength.toString(),\n }\n });\n };\n\n public readonly updateTextInputPlaceholder = (text: string): void => {\n this.promptTextInput.update({\n attributes: {\n placeholder: text,\n }\n });\n };\n}\n","import { ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { Button } from '../../button';\nimport { Icon, MynahIcons } from '../../icon';\n\nexport interface ISendButtonProps {\n tabId: string;\n onClick: () => void;\n}\n\nexport class SendButton {\n private readonly _props: ISendButtonProps;\n private readonly _render: ExtendedHTMLElement;\n constructor (props: ISendButtonProps) {\n this._props = props;\n\n const initialDisabledState = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputDisabledState') as boolean;\n\n this._render = new Button({\n classNames: [ 'mynah-icon-button', 'mynah-chat-prompt-button' ],\n attributes: {\n ...(initialDisabledState ? { disabled: 'disabled' } : {}),\n tabindex: '5'\n },\n icon: new Icon({ icon: MynahIcons.ENVELOPE_SEND }).render,\n onClick: () => {\n this._props.onClick();\n },\n }).render;\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputDisabledState', (isDisabled: boolean) => {\n if (isDisabled) {\n this.render.setAttribute('disabled', 'disabled');\n } else {\n this.render.removeAttribute('disabled');\n }\n });\n }\n\n get render (): ExtendedHTMLElement {\n return this._render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// eslint-disable @typescript-eslint/restrict-template-expressions\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../helper/dom';\nimport { generateUID } from '../helper/guid';\nimport { Icon, MynahIcons } from './icon';\n\ninterface CollapsibleContentProps {\n title: string | ExtendedHTMLElement | HTMLElement | DomBuilderObject;\n children: Array<string | ExtendedHTMLElement | HTMLElement | DomBuilderObject>;\n classNames?: string[];\n initialCollapsedState?: boolean;\n onCollapseStateChange?: (collapsed: boolean) => void;\n}\nexport class CollapsibleContent {\n render: ExtendedHTMLElement;\n private readonly props: Required<CollapsibleContentProps>;\n private readonly uid: string;\n private icon: ExtendedHTMLElement;\n constructor (props: CollapsibleContentProps) {\n this.uid = generateUID();\n this.props = {\n initialCollapsedState: true,\n onCollapseStateChange: () => {},\n classNames: [],\n ...props\n };\n this.icon = new Icon({ icon: this.props.initialCollapsedState ? MynahIcons.RIGHT_OPEN : MynahIcons.DOWN_OPEN }).render;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-collapsible-content-wrapper', ...this.props.classNames ],\n children: [\n {\n type: 'input',\n classNames: [ 'mynah-collapsible-content-checkbox' ],\n attributes: {\n type: 'checkbox',\n name: this.uid,\n id: this.uid,\n ...(this.props.initialCollapsedState ? { checked: 'checked' } : {})\n },\n events: {\n change: (e) => {\n const val = e.currentTarget.checked;\n const newIcon = new Icon({\n icon: val === true ? MynahIcons.RIGHT_OPEN : MynahIcons.DOWN_OPEN\n }).render;\n this.icon.replaceWith(newIcon);\n this.icon = newIcon;\n this.props.onCollapseStateChange(val);\n }\n },\n },\n {\n type: 'label',\n classNames: [ 'mynah-collapsible-content-label' ],\n attributes: {\n for: this.uid,\n },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-collapsible-content-label-title-wrapper' ],\n children: [\n this.icon,\n {\n type: 'span',\n classNames: [ 'mynah-collapsible-content-label-title-text' ],\n children: [ this.props.title ]\n }\n ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-collapsible-content-label-content-wrapper' ],\n children: this.props.children\n },\n ],\n },\n ],\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\n\nexport interface FeedbackFormCommentProps {\n onChange?: (comment: string) => void;\n initComment?: string;\n}\nexport class FeedbackFormComment {\n render: ExtendedHTMLElement;\n\n constructor (props: FeedbackFormCommentProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'textarea',\n events: {\n keyup: (e: InputEvent) => {\n if (props.onChange !== undefined) {\n props.onChange(this.render.value);\n }\n },\n },\n classNames: [ 'mynah-feedback-form-comment' ],\n attributes: {\n value: props.initComment ?? '',\n },\n });\n }\n\n getComment = (): string => this.render.value;\n clear = (): void => { this.render.value = ''; };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload, MynahEventNames, MynahPortalNames } from '../../static';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { Button } from '../button';\nimport { FeedbackFormComment } from './feedback-form-comment';\nimport { cancelEvent, MynahUIGlobalEvents } from '../../helper/events';\nimport { Icon, MynahIcons } from '../icon';\nimport { Config } from '../../helper/config';\n\nexport interface FeedbackFormProps {\n initPayload?: FeedbackPayload;\n}\nexport class FeedbackForm {\n private feedbackFormWrapper: ExtendedHTMLElement;\n private readonly feedbackSelect: ExtendedHTMLElement;\n private readonly feedbackOptionsWrapper: ExtendedHTMLElement;\n private readonly feedbackComment: FeedbackFormComment;\n private readonly feedbackSubmitButton: Button;\n private feedbackPayload: FeedbackPayload = { messageId: '', selectedOption: '', tabId: '', comment: '' };\n public readonly feedbackFormContainer: ExtendedHTMLElement;\n\n constructor (props?: FeedbackFormProps) {\n this.feedbackPayload = {\n selectedOption: Config.getInstance().config.feedbackOptions[0].value,\n messageId: '',\n tabId: '',\n comment: '',\n ...props?.initPayload\n };\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SHOW_FEEDBACK_FORM, (data: {messageId: string; tabId: string}) => {\n if (this.feedbackFormWrapper === undefined) {\n this.feedbackFormWrapper = DomBuilder.getInstance().createPortal(\n MynahPortalNames.FEEDBACK_FORM,\n {\n type: 'div',\n attributes: {\n id: 'mynah-feedback-form-wrapper'\n },\n children: [\n this.feedbackFormContainer\n ]\n },\n 'afterbegin'\n );\n }\n this.feedbackPayload.messageId = data.messageId;\n this.feedbackPayload.tabId = data.tabId;\n setTimeout(() => {\n this.show();\n }, 5);\n });\n\n this.feedbackSelect = DomBuilder.getInstance().build({\n type: 'select',\n attributes: { value: Config.getInstance().config.feedbackOptions[0].value },\n classNames: [ 'mynah-feedback-form-select' ],\n events: {\n change: () => {\n this.feedbackPayload.selectedOption = this.feedbackSelect.value;\n }\n },\n children:\n Config.getInstance().config.feedbackOptions.map(option => ({\n type: 'option',\n attributes: { value: option.value },\n children: [ option.label ]\n })) as DomBuilderObject[]\n });\n this.feedbackOptionsWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form-select-wrapper' ],\n children: [\n this.feedbackSelect,\n new Icon({ icon: MynahIcons.DOWN_OPEN, classNames: [ 'mynah-feedback-form-select-handle' ] }).render ]\n });\n\n this.feedbackComment = new FeedbackFormComment({\n onChange: (comment: string) => {\n this.feedbackPayload.comment = comment;\n },\n initComment: this.feedbackPayload?.comment,\n });\n\n this.feedbackSubmitButton = new Button({\n label: Config.getInstance().config.texts.submit,\n onClick: () => {\n this.onFeedbackSet(this.feedbackPayload);\n this.close();\n },\n });\n\n this.feedbackFormContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form' ],\n events: { click: cancelEvent },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-feedback-form-header' ],\n children: [\n {\n type: 'h4',\n children: [ Config.getInstance().config.texts.feedbackFormTitle ]\n },\n new Button({\n primary: false,\n onClick: () => {\n this.close();\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render\n }).render\n ]\n },\n {\n type: 'span',\n children: [ Config.getInstance().config.texts.feedbackFormOptionsLabel ],\n },\n this.feedbackOptionsWrapper,\n {\n type: 'span',\n children: [ Config.getInstance().config.texts.feedbackFormCommentLabel ],\n },\n this.feedbackComment.render,\n {\n type: 'div',\n classNames: [ 'mynah-feedback-form-buttons-container' ],\n children: [\n new Button({\n primary: false,\n label: Config.getInstance().config.texts.cancel,\n onClick: () => {\n this.close();\n }\n }).render,\n this.feedbackSubmitButton.render\n ]\n }\n ],\n });\n }\n\n private readonly onFeedbackSet = (feedbackData: FeedbackPayload): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.FEEDBACK_SET, feedbackData);\n };\n\n close = (): void => {\n this.feedbackComment.clear();\n this.feedbackSelect.value = Config.getInstance().config.feedbackOptions[0].value;\n this.feedbackPayload = {\n messageId: '',\n selectedOption: Config.getInstance().config.feedbackOptions[0].value,\n tabId: '',\n comment: ''\n };\n this.feedbackFormWrapper.removeClass('mynah-feedback-form-show');\n };\n\n show = (): void => {\n this.feedbackFormWrapper.addClass('mynah-feedback-form-show');\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { MynahUIIconImporter } from './icon/icon-importer';\n\nexport enum MynahIcons {\n MYNAH = 'mynah',\n MENU = 'menu',\n MINUS = 'minus',\n SEARCH = 'search',\n PLUS = 'plus',\n CHAT = 'chat',\n LINK = 'link',\n DOC = 'doc',\n EXTERNAL = 'external',\n CANCEL = 'cancel',\n CALENDAR = 'calendar',\n MEGAPHONE = 'megaphone',\n NOTIFICATION = 'notification',\n EYE = 'eye',\n ELLIPSIS = 'ellipsis',\n OK = 'ok',\n UP_OPEN = 'up-open',\n DOWN_OPEN = 'down-open',\n RIGHT_OPEN = 'right-open',\n LEFT_OPEN = 'left-open',\n RESIZE_FULL = 'resize-full',\n RESIZE_SMALL = 'resize-small',\n BLOCK = 'block',\n OK_CIRCLED = 'ok-circled',\n INFO = 'info',\n WARNING = 'warning',\n ERROR = 'error',\n THUMBS_UP = 'thumbs-up',\n THUMBS_DOWN = 'thumbs-down',\n STAR = 'star',\n LIGHT_BULB = 'light-bulb',\n ENVELOPE_SEND = 'envelope-send',\n REFRESH = 'refresh',\n USER = 'user',\n PLAY = 'play',\n PAUSE = 'pause',\n CODE_BLOCK = 'code-block',\n COPY = 'copy',\n CURSOR_INSERT = 'cursor-insert',\n TEXT_SELECT = 'text-select',\n REVERT = 'revert',\n}\n\nexport interface IconProps {\n icon: MynahIcons;\n classNames?: string[];\n}\nexport class Icon {\n render: ExtendedHTMLElement;\n constructor (props: IconProps) {\n MynahUIIconImporter.getInstance();\n this.render = DomBuilder.getInstance().build({\n type: 'i',\n classNames: [\n 'mynah-ui-icon',\n `mynah-ui-icon-${props.icon}`,\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n children: [ {\n type: 'span',\n attributes: {\n 'aria-hidden': 'true'\n },\n children: [ props.icon ]\n } ]\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-extraneous-class */\n/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder } from '../../helper/dom';\nimport { MynahIcons } from '../icon';\n// ICONS\nimport MYNAH from './icons/mynah.svg';\nimport MENU from './icons/menu.svg';\nimport MINUS from './icons/minus.svg';\nimport SEARCH from './icons/search.svg';\nimport PLUS from './icons/plus.svg';\nimport CHAT from './icons/chat.svg';\nimport LINK from './icons/link.svg';\nimport DOC from './icons/doc.svg';\nimport EXTERNAL from './icons/external.svg';\nimport CANCEL from './icons/cancel.svg';\nimport CALENDAR from './icons/calendar.svg';\nimport MEGAPHONE from './icons/megaphone.svg';\nimport NOTIFICATION from './icons/notification.svg';\nimport EYE from './icons/eye.svg';\nimport ELLIPSIS from './icons/ellipsis.svg';\nimport OK from './icons/ok.svg';\nimport UP_OPEN from './icons/up-open.svg';\nimport DOWN_OPEN from './icons/down-open.svg';\nimport RIGHT_OPEN from './icons/right-open.svg';\nimport LEFT_OPEN from './icons/left-open.svg';\nimport RESIZE_FULL from './icons/resize-full.svg';\nimport RESIZE_SMALL from './icons/resize-small.svg';\nimport BLOCK from './icons/block.svg';\nimport OK_CIRCLED from './icons/ok-circled.svg';\nimport INFO from './icons/info.svg';\nimport WARNING from './icons/warning.svg';\nimport ERROR from './icons/error.svg';\nimport THUMBS_UP from './icons/thumbs-up.svg';\nimport THUMBS_DOWN from './icons/thumbs-down.svg';\nimport STAR from './icons/star.svg';\nimport LIGHT_BULB from './icons/light-bulb.svg';\nimport ENVELOPE_SEND from './icons/envelope-send.svg';\nimport REFRESH from './icons/refresh.svg';\nimport USER from './icons/user.svg';\nimport PLAY from './icons/play.svg';\nimport PAUSE from './icons/pause.svg';\nimport CODE_BLOCK from './icons/code-block.svg';\nimport COPY from './icons/copy.svg';\nimport CURSOR_INSERT from './icons/cursor-insert.svg';\nimport TEXT_SELECT from './icons/text-select.svg';\nimport REVERT from './icons/revert.svg';\n\nexport class MynahUIIconImporter {\n private static instance: MynahUIIconImporter;\n private constructor () {\n const mynahIconMappings = {\n MYNAH,\n MENU,\n MINUS,\n SEARCH,\n PLUS,\n CHAT,\n LINK,\n DOC,\n EXTERNAL,\n CANCEL,\n CALENDAR,\n MEGAPHONE,\n NOTIFICATION,\n EYE,\n ELLIPSIS,\n OK,\n UP_OPEN,\n DOWN_OPEN,\n RIGHT_OPEN,\n LEFT_OPEN,\n RESIZE_FULL,\n RESIZE_SMALL,\n BLOCK,\n OK_CIRCLED,\n INFO,\n WARNING,\n ERROR,\n THUMBS_UP,\n THUMBS_DOWN,\n STAR,\n LIGHT_BULB,\n ENVELOPE_SEND,\n REFRESH,\n USER,\n PLAY,\n PAUSE,\n CODE_BLOCK,\n COPY,\n CURSOR_INSERT,\n TEXT_SELECT,\n REVERT\n };\n DomBuilder.getInstance().createPortal('mynah-ui-icons', {\n type: 'style',\n attributes: {\n type: 'text/css'\n },\n children: [ `\n ${Object.keys(MynahIcons).map(iconKey => {\n const iconName = MynahIcons[iconKey as keyof typeof MynahIcons];\n return `\n .mynah-ui-icon-${iconName} {\n --mynah-ui-icon-${iconName}: url(${mynahIconMappings[iconKey as keyof typeof mynahIconMappings]});\n -webkit-mask-image: var(--mynah-ui-icon-${iconName});\n mask-image: var(--mynah-ui-icon-${iconName});\n }`;\n }).join('')}\n ` ]\n }, 'beforebegin');\n }\n\n public static getInstance = (): MynahUIIconImporter => {\n if (MynahUIIconImporter.instance === undefined) {\n MynahUIIconImporter.instance = new MynahUIIconImporter();\n }\n\n return MynahUIIconImporter.instance;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { MynahUITabsStore } from '../helper/tabs-store';\nimport { MynahUITabStoreTab } from '../static';\nimport { Button } from './button';\nimport { Card } from './card/card';\nimport { CardBody } from './card/card-body';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from './overlay';\nimport { Toggle, ToggleOption } from './toggle';\n\nexport interface TabsProps {\n onChange?: (selectedTabId: string) => void;\n}\nexport class Tabs {\n render: ExtendedHTMLElement;\n private tabIdTitleSubscriptions: Record<string, string> = {};\n private tabIdChatItemsSubscriptions: Record<string, string> = {};\n private toggleGroup: Toggle;\n private maxReachedOverlay: Overlay | undefined;\n private readonly props: TabsProps;\n\n constructor (props: TabsProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-nav-tabs-wrapper' ],\n events: {\n dblclick: (e) => {\n cancelEvent(e);\n if (MynahUITabsStore.getInstance().tabsLength() < Config.getInstance().config.maxTabs) {\n MynahUITabsStore.getInstance().addTab();\n }\n }\n },\n children: this.getTabsRender(MynahUITabsStore.getInstance().getSelectedTabId()),\n });\n\n MynahUITabsStore.getInstance().addListener('add', (tabId, tabData) => {\n this.assignListener(tabId);\n this.toggleGroup.addOption({\n value: tabId,\n label: tabData?.store?.tabTitle,\n selected: tabData?.isSelected\n });\n this.render.setAttribute('selected-tab', tabId);\n });\n MynahUITabsStore.getInstance().addListener('remove', (tabId, newSelectedTab?: MynahUITabStoreTab) => {\n this.removeListenerAssignments(tabId);\n this.toggleGroup.removeOption(tabId);\n if (newSelectedTab !== undefined) {\n this.toggleGroup.snapToOption(MynahUITabsStore.getInstance().getSelectedTabId());\n }\n this.render.setAttribute('selected-tab', MynahUITabsStore.getInstance().getSelectedTabId());\n });\n MynahUITabsStore.getInstance().addListener('selectedTabChange', (selectedTabId) => {\n this.render.setAttribute('selected-tab', selectedTabId);\n this.toggleGroup.setValue(selectedTabId);\n });\n }\n\n private readonly getTabOptionsFromTabStoreData = (): ToggleOption[] => {\n const tabs = MynahUITabsStore.getInstance().getAllTabs();\n return Object.keys(tabs).map((tabId: string) => {\n const tabOption = {\n value: tabId,\n label: tabs[tabId].store?.tabTitle,\n selected: tabs[tabId].isSelected\n };\n return tabOption;\n });\n };\n\n private readonly getTabsRender = (selectedTabId?: string): ExtendedHTMLElement[] => {\n const tabs = this.getTabOptionsFromTabStoreData();\n tabs.forEach(tab => {\n this.assignListener(tab.value);\n });\n this.toggleGroup = new Toggle({\n onChange: (selectedTabId: string) => {\n MynahUITabsStore.getInstance().selectTab(selectedTabId);\n if (this.props.onChange !== undefined) {\n this.props.onChange(selectedTabId);\n }\n },\n onRemove: (selectedTabId) => {\n MynahUITabsStore.getInstance().removeTab(selectedTabId);\n },\n name: 'mynah-main-tabs',\n options: tabs,\n value: selectedTabId\n });\n return [\n this.toggleGroup.render,\n new Button({\n classNames: [ 'mynah-toggle-close-button' ],\n additionalEvents: {\n mouseenter: (e) => {\n if (MynahUITabsStore.getInstance().tabsLength() === Config.getInstance().config.maxTabs) {\n this.showMaxReachedOverLay(e.currentTarget, Config.getInstance().config.texts.noMoreTabsTooltip);\n }\n },\n mouseleave: () => {\n this.hideMaxReachedOverLay();\n },\n },\n onClick: (e) => {\n cancelEvent(e);\n if (MynahUITabsStore.getInstance().tabsLength() < Config.getInstance().config.maxTabs) {\n MynahUITabsStore.getInstance().addTab();\n }\n },\n icon: new Icon({ icon: MynahIcons.PLUS }).render,\n primary: false\n }).render\n ];\n };\n\n private readonly showMaxReachedOverLay = (elm: HTMLElement, markdownText: string): void => {\n this.maxReachedOverlay = new Overlay({\n background: true,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n horizontalDirection: OverlayHorizontalDirection.CENTER,\n children: [\n new Card({\n border: false,\n classNames: [ 'mynah-nav-tabs-max-reached-overlay' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n ]\n }).render\n ],\n });\n };\n\n private readonly hideMaxReachedOverLay = (): void => {\n if (this.maxReachedOverlay !== undefined) {\n this.maxReachedOverlay.close();\n this.maxReachedOverlay = undefined;\n }\n };\n\n private readonly assignListener = (tabId: string): void => {\n this.tabIdTitleSubscriptions[tabId] = MynahUITabsStore.getInstance().addListenerToDataStore(tabId, 'tabTitle', (title) => {\n this.toggleGroup.updateOptionTitle(tabId, title);\n }) ?? '';\n this.tabIdChatItemsSubscriptions[tabId] = MynahUITabsStore.getInstance().addListenerToDataStore(tabId, 'chatItems', () => {\n this.toggleGroup.updateOptionIndicator(tabId, true);\n }) ?? '';\n };\n\n private readonly removeListenerAssignments = (tabId: string): void => {\n MynahUITabsStore.getInstance().removeListenerFromDataStore(tabId, this.tabIdTitleSubscriptions[tabId], 'tabTitle');\n MynahUITabsStore.getInstance().removeListenerFromDataStore(tabId, this.tabIdChatItemsSubscriptions[tabId], 'chatItems');\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilderObject, DS, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { NotificationType } from '../static';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection, OVERLAY_MARGIN } from './overlay';\n\ntype NotificationContentType = string | ExtendedHTMLElement | HTMLElement | DomBuilderObject;\n\nexport interface NotificationProps {\n duration?: number;\n type?: NotificationType;\n title?: string;\n content: NotificationContentType | NotificationContentType[];\n onNotificationClick?: () => void;\n onNotificationHide?: () => void;\n}\n\nexport class Notification {\n private notificationOverlay!: Overlay;\n private readonly duration;\n private readonly type;\n private readonly props;\n\n constructor (props: NotificationProps) {\n this.duration = props.duration !== undefined ? props.duration : 5000;\n this.type = props.type ?? NotificationType.INFO;\n this.props = props;\n }\n\n public notify (): void {\n this.notificationOverlay = new Overlay({\n referencePoint: {\n left: Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0),\n top: this.getNextCalculatedTop(),\n },\n dimOutside: false,\n closeOnOutsideClick: false,\n horizontalDirection: OverlayHorizontalDirection.TO_LEFT,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n onClose: this.props.onNotificationHide,\n children: [\n {\n type: 'div',\n classNames: [\n 'mynah-notification',\n this.props.onNotificationClick !== undefined ? 'mynah-notification-clickable' : '',\n ],\n events: {\n click: e => {\n cancelEvent(e);\n if (this.props.onNotificationClick !== undefined) {\n this.props.onNotificationClick();\n this.notificationOverlay?.close();\n }\n },\n },\n children: [\n new Icon({ icon: this.type.toString() as MynahIcons }).render,\n {\n type: 'div',\n classNames: [ 'mynah-notification-container' ],\n children: [\n {\n type: 'h3',\n classNames: [ 'mynah-notification-title' ],\n children: [ this.props.title ?? '' ],\n },\n {\n type: 'div',\n classNames: [ 'mynah-notification-content' ],\n children: this.getChildren(this.props.content),\n },\n ],\n },\n ],\n },\n ],\n });\n\n if (this.duration !== -1) {\n setTimeout(() => {\n this.notificationOverlay?.close();\n }, this.duration);\n }\n }\n\n /**\n * Calculates the top according to the previously shown and still visible notifications\n * @returns number\n */\n private readonly getNextCalculatedTop = (): number => {\n const prevNotifications = DS('.mynah-notification');\n if (prevNotifications.length > 0) {\n const prevNotificationRectangle = prevNotifications[prevNotifications.length - 1].getBoundingClientRect();\n return prevNotificationRectangle.top + prevNotificationRectangle.height + OVERLAY_MARGIN;\n }\n return 0;\n };\n\n private readonly getChildren = (content: NotificationContentType | NotificationContentType[]): NotificationContentType[] => {\n if (content instanceof Array) {\n return content;\n }\n return [ content ];\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/brace-style */\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../helper/dom';\nimport { generateUID } from '../helper/guid';\nimport { MynahPortalNames } from '../static';\n\nexport const OVERLAY_MARGIN = 8;\n/**\n * The horizontal creation direction of the overlay\n */\nexport enum OverlayHorizontalDirection {\n /**\n * starts from the left edge of the reference element and opens to left\n */\n TO_LEFT = 'horizontal-direction-to-left',\n /**\n * starts from the right edge of the reference element and opens to left\n */\n END_TO_LEFT = 'horizontal-direction-from-end-to-left',\n /**\n * starts from the right edge of the reference element and opens to right\n */\n TO_RIGHT = 'horizontal-direction-to-right',\n /**\n * starts from the left edge of the reference element and opens to right\n */\n START_TO_RIGHT = 'horizontal-direction-from-start-to-right',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'horizontal-direction-at-center',\n}\n\n/**\n * The vertical creation direction of the overlay\n */\nexport enum OverlayVerticalDirection {\n /**\n * starts from the bottom edge of the reference element and opens to bottom\n */\n TO_BOTTOM = 'vertical-direction-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to bottom\n */\n START_TO_BOTTOM = 'vertical-direction-from-start-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to top\n */\n TO_TOP = 'vertical-direction-to-top',\n /**\n * starts from the bottom edge of the reference element and opens to top\n */\n END_TO_TOP = 'vertical-direction-from-end-to-top',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'vertical-direction-at-center',\n}\n\nexport interface OverlayProps {\n referenceElement?: HTMLElement | ExtendedHTMLElement;\n referencePoint?: { top: number; left: number };\n children: Array<HTMLElement | ExtendedHTMLElement | DomBuilderObject>;\n horizontalDirection?: OverlayHorizontalDirection;\n verticalDirection?: OverlayVerticalDirection;\n stretchWidth?: boolean;\n dimOutside?: boolean;\n closeOnOutsideClick?: boolean;\n background?: boolean;\n onClose?: () => void;\n removeOtherOverlays?: boolean;\n}\nexport class Overlay {\n render: ExtendedHTMLElement;\n private readonly container: ExtendedHTMLElement;\n private readonly innerContainer: ExtendedHTMLElement;\n private readonly guid = generateUID();\n private readonly onClose;\n\n constructor (props: OverlayProps) {\n const horizontalDirection = props.horizontalDirection ?? OverlayHorizontalDirection.TO_RIGHT;\n const verticalDirection = props.verticalDirection ?? OverlayVerticalDirection.START_TO_BOTTOM;\n this.onClose = props.onClose;\n const dimOutside = props.dimOutside !== false;\n const closeOnOutsideClick = props.closeOnOutsideClick !== false;\n\n const calculatedTop = this.getCalculatedTop(verticalDirection, props.referenceElement, props.referencePoint);\n const calculatedLeft = this.getCalculatedLeft(horizontalDirection, props.referenceElement, props.referencePoint);\n const calculatedWidth = props.stretchWidth === true ? this.getCalculatedWidth(props.referenceElement) : 0;\n\n this.innerContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-inner-container' ],\n children: props.children,\n });\n\n this.container = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-container', horizontalDirection, verticalDirection, props.background !== false ? 'background' : '' ],\n attributes: {\n style: `top: ${calculatedTop}px; left: ${calculatedLeft}px; ${calculatedWidth !== 0 ? `width: ${calculatedWidth}px;` : ''}`,\n },\n children: [ this.innerContainer ],\n });\n\n if (props.removeOtherOverlays === true) {\n DomBuilder.getInstance().removeAllPortals(MynahPortalNames.OVERLAY);\n }\n\n // this is a portal that goes over all the other items\n // to make it as an overlay item\n this.render = DomBuilder.getInstance().createPortal(\n `${MynahPortalNames.OVERLAY}-${this.guid}`,\n {\n type: 'div',\n attributes: { id: `mynah-overlay-${this.guid}` },\n classNames: [\n 'mynah-overlay',\n ...(dimOutside ? [ 'mynah-overlay-dim-outside' ] : []),\n ...(closeOnOutsideClick ? [ 'mynah-overlay-close-on-outside-click' ] : []),\n ],\n events: {\n click: closeOnOutsideClick ? this.close : () => {},\n },\n children: [ this.container ],\n },\n 'beforeend'\n );\n\n const containerRectangle = this.container.getBoundingClientRect();\n const winHeight = Math.max(document.documentElement.clientHeight ?? 0, window.innerHeight ?? 0);\n const winWidth = Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0);\n\n // if it will open at the center of the reference element or point\n // we only need the half of both measurements\n const comparingWidth =\n horizontalDirection === OverlayHorizontalDirection.CENTER\n ? containerRectangle.width / 2\n : containerRectangle.width;\n const comparingHeight =\n verticalDirection === OverlayVerticalDirection.CENTER\n ? containerRectangle.height / 2\n : containerRectangle.height;\n\n // if overlay will open to right or at center\n // we're checking if it exceeds from the right edge of the window\n if (\n horizontalDirection !== OverlayHorizontalDirection.TO_LEFT &&\n horizontalDirection !== OverlayHorizontalDirection.END_TO_LEFT &&\n comparingWidth + OVERLAY_MARGIN + calculatedLeft > winWidth\n ) {\n if (horizontalDirection === OverlayHorizontalDirection.CENTER) {\n // Exceed right edge of the window, shift left by the width of exceeding part * 0.5\n // to correctly handle the 50% horizontal transform\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n (calculatedLeft - (containerRectangle.width + (OVERLAY_MARGIN * 2) + calculatedLeft - winWidth) * 0.5) + 'px';\n } else {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft - (containerRectangle.width + OVERLAY_MARGIN + calculatedLeft - winWidth) + 'px';\n }\n }\n // else if the direction is selected as a one that goes to the left,\n // we need to check if it is exceeding from the left edge of the window\n else if (calculatedLeft + comparingWidth - containerRectangle.width < OVERLAY_MARGIN) {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft + (OVERLAY_MARGIN - calculatedLeft + (comparingWidth - containerRectangle.width)) + 'px';\n }\n\n // if overlay will open to bottom or at center\n // we're checking if it exceeds from the bottom edge of the window\n if (\n verticalDirection !== OverlayVerticalDirection.TO_TOP &&\n verticalDirection !== OverlayVerticalDirection.END_TO_TOP &&\n comparingHeight + OVERLAY_MARGIN + calculatedTop > winHeight\n ) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop - (comparingHeight + OVERLAY_MARGIN + calculatedTop - winHeight) + 'px';\n }\n // else if the direction is selected as a one that goes to the top,\n // we need to check if it is exceeding from the top edge of the window\n else if (calculatedTop + comparingHeight - containerRectangle.height < OVERLAY_MARGIN) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop + (OVERLAY_MARGIN - calculatedTop + (comparingHeight - containerRectangle.height)) + 'px';\n }\n\n // we need to delay the class toggle\n // to avoid the skipping of the transition comes from css\n // for a known js-css relation problem\n setTimeout(() => {\n this.render.addClass('mynah-overlay-open');\n\n if (closeOnOutsideClick) {\n window.addEventListener('blur', this.windowBlurHandler.bind(this));\n window.addEventListener('resize', this.windowBlurHandler.bind(this));\n }\n }, 10);\n }\n\n close = (): void => {\n this.render.removeClass('mynah-overlay-open');\n // In this timeout, we're waiting the close animation to be ended\n setTimeout(() => {\n this.render.remove();\n }, 250);\n if (this.onClose !== undefined) {\n this.onClose();\n }\n };\n\n private readonly windowBlurHandler = (): void => {\n this.close();\n window.removeEventListener('blur', this.windowBlurHandler.bind(this));\n window.removeEventListener('resize', this.windowBlurHandler.bind(this));\n };\n\n private readonly getCalculatedLeft = (\n horizontalDirection: OverlayHorizontalDirection,\n referenceElement?: HTMLElement | ExtendedHTMLElement,\n referencePoint?: { top?: number; left: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { left: referencePoint.left, width: 0 }\n : { left: 0, width: 0 };\n\n switch (horizontalDirection.toString()) {\n case OverlayHorizontalDirection.TO_RIGHT:\n return referenceRectangle.left + referenceRectangle.width + OVERLAY_MARGIN;\n case OverlayHorizontalDirection.START_TO_RIGHT:\n return referenceRectangle.left;\n case OverlayHorizontalDirection.TO_LEFT:\n return referenceRectangle.left - OVERLAY_MARGIN;\n case OverlayHorizontalDirection.END_TO_LEFT:\n return referenceRectangle.left + referenceRectangle.width;\n case OverlayHorizontalDirection.CENTER:\n return referenceRectangle.left + referenceRectangle.width / 2;\n default:\n return 0;\n }\n };\n\n private readonly getCalculatedWidth = (\n referenceElement?: HTMLElement | ExtendedHTMLElement\n ): number => {\n return referenceElement !== undefined\n ? referenceElement.getBoundingClientRect().width\n : 0;\n };\n\n private readonly getCalculatedTop = (\n verticalDirection: OverlayVerticalDirection,\n referenceElement?: HTMLElement | ExtendedHTMLElement,\n referencePoint?: { top: number; left?: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { top: referencePoint.top, height: 0 }\n : { top: 0, height: 0 };\n\n switch (verticalDirection.toString()) {\n case OverlayVerticalDirection.TO_BOTTOM:\n return referenceRectangle.top + referenceRectangle.height + OVERLAY_MARGIN;\n case OverlayVerticalDirection.START_TO_BOTTOM:\n return referenceRectangle.top;\n case OverlayVerticalDirection.TO_TOP:\n return referenceRectangle.top - OVERLAY_MARGIN;\n case OverlayVerticalDirection.END_TO_TOP:\n return referenceRectangle.top + referenceRectangle.height;\n case OverlayVerticalDirection.CENTER:\n return referenceRectangle.top + referenceRectangle.height / 2;\n default:\n return referenceRectangle.top;\n }\n };\n\n public updateContent = (children: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>): void => {\n this.innerContainer.update({ children });\n };\n\n public toggleHidden = (hidden: boolean): void => {\n this.render.hidden = hidden;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n ReferenceTrackerInformation,\n SourceLink,\n} from '../../static';\nimport { CardBody } from '../card/card-body';\n\nexport interface SourceLinkBodyProps {\n suggestion: Partial<SourceLink>;\n children?: Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject>;\n highlightRangeWithTooltip?: ReferenceTrackerInformation[];\n}\nexport class SourceLinkBody {\n render: ExtendedHTMLElement;\n props: SourceLinkBodyProps;\n constructor (props: SourceLinkBodyProps) {\n this.props = props;\n this.render = new CardBody({\n highlightRangeWithTooltip: props.highlightRangeWithTooltip,\n body: this.props.suggestion.body ?? '',\n children: this.props.children,\n }).render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getTimeDiff } from '../../helper/date-time';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { getOrigin } from '../../helper/url';\nimport { SourceLink, SourceLinkMetaData } from '../../static';\nimport { Icon, MynahIcons } from '../icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { SourceLinkCard } from './source-link';\n\nconst PREVIEW_DELAY = 500;\nexport interface SourceLinkHeaderProps {\n sourceLink: SourceLink;\n showCardOnHover?: boolean;\n onClick?: (e?: MouseEvent) => void;\n}\nexport class SourceLinkHeader {\n private sourceLinkPreview: Overlay | null;\n private sourceLinkPreviewTimeout: ReturnType<typeof setTimeout>;\n render: ExtendedHTMLElement;\n constructor (props: SourceLinkHeaderProps) {\n const splitUrl = props.sourceLink.url\n .replace(/^(http|https):\\/\\//, '')\n .split('/');\n if (splitUrl[splitUrl.length - 1].trim() === '') {\n splitUrl.pop();\n }\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-source-link-header' ],\n ...(props.showCardOnHover === true\n ? {\n events: {\n mouseenter: (e) => {\n this.showLinkPreview(e, props.sourceLink);\n },\n mouseleave: this.hideLinkPreview,\n }\n }\n : {}),\n attributes: {\n origin: getOrigin(props.sourceLink.url)\n },\n children: [\n {\n type: 'span',\n classNames: [ 'mynah-source-thumbnail' ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-source-link-title-wrapper' ],\n children: [\n {\n type: 'a',\n classNames: [ 'mynah-source-link-title' ],\n events: {\n ...(props.onClick !== undefined && {\n click: props.onClick,\n }),\n },\n attributes: { href: props.sourceLink.url, target: '_blank' },\n children: [ props.sourceLink.title, {\n type: 'div',\n classNames: [ 'mynah-source-link-expand-icon' ],\n children: [ new Icon({ icon: MynahIcons.EXTERNAL }).render ],\n } ],\n },\n {\n type: 'a',\n classNames: [ 'mynah-source-link-url' ],\n events: {\n ...(props.onClick !== undefined && {\n click: props.onClick,\n }),\n },\n attributes: { href: props.sourceLink.url, target: '_blank' },\n innerHTML: splitUrl.map(urlPart => `<span>${urlPart}</span>`).join(''),\n },\n ...((props.sourceLink.metadata != null) ? [ this.getSourceMetaBlock(props.sourceLink.metadata) ] : []),\n ],\n },\n ],\n });\n }\n\n private readonly getSourceMetaBlock = (metadataUnion?: Record<string, SourceLinkMetaData>): DomBuilderObject => {\n const metaItems: any[] = [];\n if (metadataUnion !== null && metadataUnion !== undefined) {\n Object.keys(metadataUnion).forEach(metadataKey => {\n const metadata = metadataUnion[metadataKey];\n if (metadata.isAccepted === true) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item', 'approved-answer' ],\n children: [\n new Icon({ icon: MynahIcons.OK }).render,\n ]\n });\n }\n\n if (metadata.lastActivityDate !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CALENDAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ getTimeDiff((new Date()).getTime() - metadata.lastActivityDate, 2) ]\n }\n ]\n });\n }\n\n if (metadata.answerCount !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CHAT }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ metadata.answerCount.toString() ]\n }\n ]\n });\n }\n\n if (metadata.stars !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.STAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.stars.toString()} contributors` ]\n }\n ]\n });\n }\n\n if (metadata.forks !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.DOWN_OPEN }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.forks.toString()} forks` ]\n }\n ]\n });\n }\n\n if (metadata.score !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.THUMBS_UP }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.score.toString()}` ]\n }\n ]\n });\n }\n });\n }\n\n return {\n type: 'span',\n classNames: [ 'mynah-title-meta-block' ],\n children: metaItems\n };\n };\n\n private readonly showLinkPreview = (e: MouseEvent, sourceLink: SourceLink): void => {\n if (sourceLink.body !== undefined) {\n clearTimeout(this.sourceLinkPreviewTimeout);\n this.sourceLinkPreviewTimeout = setTimeout(() => {\n const elm: HTMLElement = e.target as HTMLElement;\n this.sourceLinkPreview = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-wrapper' ],\n children: [\n new SourceLinkCard({ sourceLink }).render\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n }\n };\n\n private readonly hideLinkPreview = (): void => {\n clearTimeout(this.sourceLinkPreviewTimeout);\n if (this.sourceLinkPreview !== null) {\n this.sourceLinkPreview?.close();\n this.sourceLinkPreview = null;\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ExtendedHTMLElement } from '../../helper/dom';\nimport { SourceLink } from '../../static';\nimport { Card } from '../card/card';\nimport { SourceLinkBody } from './source-link-body';\nimport { SourceLinkHeader } from './source-link-header';\n\nexport interface SourceLinkCardProps {sourceLink: SourceLink; compact?: 'flat' | true}\nexport class SourceLinkCard {\n private readonly sourceLink: SourceLink;\n render: ExtendedHTMLElement;\n constructor (props: SourceLinkCardProps) {\n this.sourceLink = props.sourceLink;\n this.render = new Card({\n children: [\n new SourceLinkHeader({\n sourceLink: this.sourceLink\n }).render,\n ...(this.sourceLink.body !== undefined ? [ new SourceLinkBody({ suggestion: this.sourceLink }).render ] : []),\n ],\n }).render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { highlightElement } from 'prismjs';\n\nimport 'prismjs/components/prism-markup.min';\nimport 'prismjs/components/prism-xml-doc.min';\nimport 'prismjs/components/prism-css.min';\nimport 'prismjs/components/prism-clike.min'; // default\nimport 'prismjs/components/prism-javascript.min';\nimport 'prismjs/components/prism-typescript.min';\nimport 'prismjs/components/prism-jsx.min';\nimport 'prismjs/components/prism-tsx.min';\nimport 'prismjs/components/prism-lua.min';\nimport 'prismjs/components/prism-java.min';\nimport 'prismjs/components/prism-json.min';\nimport 'prismjs/components/prism-markdown.min';\nimport 'prismjs/components/prism-mongodb.min';\nimport 'prismjs/components/prism-c.min';\nimport 'prismjs/components/prism-bash.min';\nimport 'prismjs/components/prism-csharp.min';\nimport 'prismjs/components/prism-objectivec.min';\nimport 'prismjs/components/prism-python.min';\nimport 'prismjs/components/prism-regex.min';\nimport 'prismjs/components/prism-scala.min';\nimport 'prismjs/components/prism-scss.min';\nimport 'prismjs/components/prism-less.min';\n\nimport 'prismjs/plugins/line-numbers/prism-line-numbers.js';\nimport 'prismjs/plugins/keep-markup/prism-keep-markup.js';\nimport {\n CodeSelectionType,\n OnCopiedToClipboardFunction,\n OnInsertToCursorPositionFunction,\n} from '../static';\nimport { Button } from './button';\nimport { Notification } from './notification';\nimport { Icon, MynahIcons } from './icon';\nimport { cancelEvent } from '../helper/events';\nimport { Config } from '../helper/config';\nimport { highlightersWithTooltip } from './card/card-body';\nimport escapeHTML from 'escape-html';\nimport unescapeHTML from 'unescape-html';\n\nconst IMPORTED_LANGS = [\n 'markup',\n 'xml',\n 'css',\n 'clike',\n 'javascript',\n 'typescript',\n 'jsx',\n 'tsx',\n 'lua',\n 'java',\n 'json',\n 'markdown',\n 'mongodb',\n 'c',\n 'bash',\n 'csharp',\n 'objectivec',\n 'python',\n 'regex',\n 'scala',\n 'scss',\n 'less',\n];\nconst DEFAULT_LANG = 'clike';\n\n// they'll be used to replaced within the code, so making them unique is a must\nexport const highlighters = {\n start: {\n markup: '<span class=\"amzn-mynah-search-result-highlight\">',\n textReplacement: '__mynahhighlighterstart__',\n },\n end: {\n markup: '</span>',\n textReplacement: '__mynahhighlighterend__',\n },\n};\nexport const ellipsis = {\n start: {\n markup: '<span class=\"amzn-mynah-search-result-ellipsis\">',\n textReplacement: '__mynahcodeellipsisstart__',\n },\n end: {\n markup: '</span>',\n textReplacement: '__mynahcodeellipsisend__',\n },\n};\n\nexport interface SyntaxHighlighterProps {\n codeStringWithMarkup: string;\n language?: string;\n keepHighlights?: boolean;\n showLineNumbers?: boolean;\n block?: boolean;\n startingLineNumber?: number;\n showCopyOptions?: boolean;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n}\n\nexport class SyntaxHighlighter {\n private readonly onCopiedToClipboard?: OnCopiedToClipboardFunction;\n private readonly onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n render: ExtendedHTMLElement;\n\n constructor (props: SyntaxHighlighterProps) {\n this.onCopiedToClipboard = props.onCopiedToClipboard;\n this.onInsertToCursorPosition = props.onInsertToCursorPosition;\n\n let codeMarkup = unescapeHTML(props.codeStringWithMarkup);\n // Replacing the incoming markups with keyword matching static texts\n if (props.keepHighlights === true) {\n codeMarkup = codeMarkup\n .replace(new RegExp(highlighters.start.markup, 'g'), highlighters.start.textReplacement)\n .replace(new RegExp(highlighters.end.markup, 'g'), highlighters.end.textReplacement)\n .replace(new RegExp(ellipsis.start.markup, 'g'), ellipsis.start.textReplacement)\n .replace(new RegExp(ellipsis.end.markup, 'g'), ellipsis.end.textReplacement);\n }\n\n let escapedCodeBlock = escapeHTML(codeMarkup);\n\n // Convert reference tracker escaped markups back to original incoming from the parent\n escapedCodeBlock = escapedCodeBlock\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.start.markupStart), 'g'), highlightersWithTooltip.start.markupStart)\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.start.markupEnd), 'g'), highlightersWithTooltip.start.markupEnd)\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.end.markup), 'g'), highlightersWithTooltip.end.markup);\n\n const preElement = DomBuilder.getInstance().build({\n type: 'pre',\n classNames: [ 'keep-markup',\n `language-${props.language !== undefined && IMPORTED_LANGS.includes(props.language) ? props.language : DEFAULT_LANG}`,\n ...(props.showLineNumbers === true ? [ 'line-numbers' ] : []),\n ],\n children: [\n {\n type: 'code',\n innerHTML: escapedCodeBlock,\n }\n ],\n events: {\n copy: (e) => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCodeContextMenu();\n if (selectedCode.code.length > 0) { this.copyToClipboard(selectedCode.code, selectedCode.type); }\n }\n }\n });\n highlightElement(preElement);\n\n // replacing back the keyword matchings for incoming highlights to markup for highlighting code\n if (props.keepHighlights === true) {\n preElement.innerHTML = preElement.innerHTML\n .replace(new RegExp(highlighters.start.textReplacement, 'g'), highlighters.start.markup)\n .replace(new RegExp(highlighters.end.textReplacement, 'g'), highlighters.end.markup)\n .replace(new RegExp(ellipsis.start.textReplacement, 'g'), ellipsis.start.markup)\n .replace(new RegExp(ellipsis.end.textReplacement, 'g'), ellipsis.end.markup);\n }\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter',\n ...(props.block !== true ? [ 'mynah-inline-code' ] : []),\n ],\n children: [\n ...(props.showCopyOptions === true\n ? [\n {\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter-copy-buttons' ],\n children: [\n ...(props.language !== undefined\n ? [ {\n type: 'span',\n classNames: [ 'mynah-syntax-highlighter-language' ],\n children: [ props.language ]\n } ]\n : []),\n new Button({\n icon: new Icon({ icon: MynahIcons.CURSOR_INSERT }).render,\n label: Config.getInstance().config.texts.insertAtCursorLabel,\n attributes: { title: Config.getInstance().config.texts.insertAtCursorLabel },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCode();\n if (this.onInsertToCursorPosition !== undefined) {\n this.onInsertToCursorPosition(\n selectedCode.type,\n selectedCode.code,\n );\n }\n },\n additionalEvents: { mousedown: cancelEvent },\n }).render,\n new Button({\n icon: new Icon({ icon: MynahIcons.COPY }).render,\n label: Config.getInstance().config.texts.copy,\n attributes: { title: Config.getInstance().config.texts.copy },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCode();\n this.copyToClipboard(selectedCode.code, selectedCode.type);\n },\n additionalEvents: { mousedown: cancelEvent },\n }).render,\n ],\n },\n ]\n : []),\n preElement,\n ...(props.showLineNumbers === true\n ? [\n {\n type: 'span',\n classNames: [ 'line-numbers-rows' ],\n children: (preElement.innerHTML).split(/\\n/).slice(0, -1).map((n: string, i: number) => ({\n type: 'span',\n innerHTML: String(i + (props.startingLineNumber ?? 1)),\n })),\n }\n ]\n : [])\n ],\n });\n }\n\n private readonly getSelectedCodeContextMenu = (): {\n code: string;\n type: CodeSelectionType;\n } => ({\n code: document.getSelection()?.toString() ?? '',\n type: 'selection'\n });\n\n private readonly getSelectedCode = (): {\n code: string;\n type: CodeSelectionType;\n } => ({\n code: this.render.querySelector('pre')?.innerText ?? '',\n type: 'block'\n });\n\n private readonly copyToClipboard = (\n textToSendClipboard: string,\n type?: CodeSelectionType,\n notificationText?: string,\n ): void => {\n if (!document.hasFocus()) {\n window.focus();\n }\n navigator.clipboard\n .writeText(textToSendClipboard)\n .then(() => {\n if (this.onCopiedToClipboard !== undefined) {\n this.onCopiedToClipboard(\n type,\n textToSendClipboard,\n // this.highlightRangeWithTooltip\n );\n }\n if (notificationText !== undefined) {\n // eslint-disable no-new\n new Notification({\n content: notificationText,\n title: Config.getInstance().config.texts.copyToClipboard,\n duration: 2000,\n }).notify();\n }\n })\n .catch(e => {\n //\n });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// eslint-disable @typescript-eslint/restrict-template-expressions\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { Button } from './button';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from './overlay';\n\nexport interface ToggleOption {\n label?: ExtendedHTMLElement | string | HTMLElement;\n icon?: MynahIcons;\n disabled?: boolean;\n selected?: boolean;\n value: string;\n disabledTooltip?: string | ExtendedHTMLElement;\n}\ninterface ToggleOptionRenderProps extends ToggleOption {\n name: string;\n onChange?: (selectedValue: string) => void;\n onRemove?: (selectedValue: string) => void;\n}\nclass ToggleOptionItem {\n render: ExtendedHTMLElement;\n private readonly props: ToggleOptionRenderProps;\n private disabledTooltip?: Overlay;\n private disabledTooltipTimer: ReturnType<typeof setTimeout>;\n constructor (props: ToggleOptionRenderProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n attributes: {\n key: `${this.props.name}-${this.props.value}`,\n title: this.props.label as string ?? '',\n },\n events: {\n ...(this.props.disabled === true && this.props.disabledTooltip !== undefined\n ? {\n mouseenter: () => {\n this.disabledTooltipTimer = setTimeout(() => {\n this.disabledTooltip = new Overlay({\n children: [ {\n type: 'span',\n classNames: [ 'mynah-toggle-disabled-tooltip-container' ],\n children: [ this.props.disabledTooltip ?? '' ]\n } ],\n closeOnOutsideClick: false,\n dimOutside: false,\n referenceElement: this.render,\n horizontalDirection: OverlayHorizontalDirection.CENTER,\n verticalDirection: OverlayVerticalDirection.TO_TOP\n });\n }, 500);\n },\n mouseleave: () => {\n clearTimeout(this.disabledTooltipTimer);\n if (this.disabledTooltip !== undefined) {\n this.disabledTooltip.close();\n setTimeout(() => {\n this.disabledTooltip = undefined;\n }, 50);\n }\n }\n }\n : {})\n },\n children: [\n {\n type: 'input',\n classNames: [ 'mynah-toggle-option' ],\n attributes: {\n type: 'radio',\n id: `${this.props.name}-${this.props.value}`,\n value: this.props.value,\n name: this.props.name,\n ...(this.props.selected === true ? { checked: 'checked' } : {}),\n ...(this.props.disabled === true ? { disabled: 'disabled' } : {}),\n },\n events: {\n change: () => {\n if (this.props.onChange != null) {\n this.props.onChange(this.props.value);\n }\n }\n },\n },\n {\n type: 'label',\n classNames: [ 'mynah-toggle-option-label' ],\n attributes: {\n for: `${this.props.name}-${this.props.value}`,\n },\n events: {\n dblclick: (e) => {\n cancelEvent(e);\n },\n auxclick: () => {\n if (this.props.onRemove !== undefined) {\n this.props.onRemove(this.props.value);\n }\n }\n },\n children: [\n this.props.icon !== undefined ? new Icon({ icon: props.icon as MynahIcons }).render : '',\n {\n type: 'span',\n classNames: [ 'mynah-toggle-option-label-text' ],\n children: [ this.props.label ?? '' ]\n },\n this.props.onRemove !== undefined\n ? new Button({\n classNames: [ 'mynah-toggle-close-button' ],\n onClick: () => {\n if (this.props.onRemove !== undefined) {\n this.props.onRemove(this.props.value);\n }\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render,\n primary: false\n }).render\n : ''\n ],\n },\n ],\n });\n }\n}\nexport interface ToggleProps {\n options: ToggleOption[];\n direction?: 'horizontal' | 'vertical';\n value?: string | null;\n name: string;\n disabled?: boolean;\n onChange?: (selectedValue: string) => void;\n onRemove?: (selectedValue: string) => void;\n}\nexport class Toggle {\n render: ExtendedHTMLElement;\n private readonly props: ToggleProps;\n private currentValue?: string | null;\n\n constructor (props: ToggleProps) {\n this.props = { direction: 'horizontal', ...props };\n this.currentValue = this.props.value;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-toggle-container', 'mynah-toggle-type-tabs', `mynah-toggle-direction-${this.props.direction as string}` ],\n attributes: { disabled: props.disabled === true ? 'disabled' : '' },\n children: this.getChildren(props.value),\n events: {\n wheel: this.transformScroll\n }\n });\n }\n\n private readonly transformScroll = (e: WheelEvent): void => {\n if (e.deltaY === 0) {\n return;\n }\n this.render.scrollLeft += e.deltaY;\n cancelEvent(e);\n };\n\n private readonly getChildren = (value?: string | null): any[] => [\n ...this.props.options.map(option => {\n return new ToggleOptionItem({\n ...option,\n selected: value === option.value,\n name: this.props.name,\n onChange: this.updateSelectionRender,\n onRemove: this.props.onRemove\n }).render;\n })\n ];\n\n private readonly updateSelectionRender = (value: string): void => {\n if (this.props.onChange !== undefined) {\n this.props.onChange(value);\n }\n };\n\n setValue = (value: string): void => {\n if (value !== this.getValue()) {\n this.currentValue = value;\n const elmToCheck = this.render.querySelector(`#${this.props.name}-${value}`);\n if (elmToCheck !== undefined) {\n (elmToCheck as HTMLInputElement).click();\n (elmToCheck as HTMLInputElement).checked = true;\n ((elmToCheck as HTMLInputElement).nextSibling as HTMLLabelElement).classList.remove('indication');\n }\n }\n };\n\n addOption = (option: ToggleOption): void => {\n this.props.options.push(option);\n this.render.appendChild(new ToggleOptionItem({\n ...option,\n name: this.props.name,\n onChange: this.updateSelectionRender,\n onRemove: this.props.onRemove\n }).render);\n if (option.selected === true) {\n this.setValue(option.value);\n this.snapToOption(option.value);\n }\n };\n\n removeOption = (value: string): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck = this.render.querySelector(`span[key=\"${this.props.name}-${value}\"]`);\n if (elmToCheck !== undefined) {\n elmToCheck?.remove();\n }\n };\n\n updateOptionTitle = (value: string, title: string): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck = this.render.querySelector(`span[key=\"${this.props.name}-${value}\"] .mynah-toggle-option-label-text`);\n if (elmToCheck !== undefined) {\n (elmToCheck as HTMLSpanElement).innerHTML = title;\n }\n };\n\n updateOptionIndicator = (value: string, indication: boolean): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck: HTMLLabelElement | null = this.render.querySelector(`label[for=\"${this.props.name}-${value}\"]`);\n if (elmToCheck !== null) {\n if (indication && value !== this.getValue()) {\n elmToCheck.classList.add('indication');\n } else {\n elmToCheck.classList.remove('indication');\n }\n }\n };\n\n snapToOption = (value: string): void => {\n const elmToCheck = this.render.querySelector(`#${this.props.name}-${value}`);\n if (elmToCheck !== undefined) {\n this.render.scrollLeft = (elmToCheck?.parentNode as HTMLElement).offsetLeft;\n }\n };\n\n getValue = (): string | undefined | null => this.currentValue;\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ConfigModel } from '../static';\n\nconst configDefaults: ConfigModel = {\n maxTabs: 1000,\n feedbackOptions: [\n {\n value: 'inaccurate-response',\n label: 'Inaccurate response',\n },\n {\n value: 'harmful-content',\n label: 'Harmful content'\n },\n {\n value: 'overlap',\n label: 'Overlaps with existing content'\n },\n {\n value: 'incorrect-syntax',\n label: 'Incorrect syntax'\n },\n {\n value: 'buggy-code',\n label: 'Buggy code'\n },\n {\n value: 'low-quality',\n label: 'Low quality'\n },\n {\n value: 'other',\n label: 'Other'\n }\n ],\n texts: {\n mainTitle: 'AWS Q',\n copy: 'Copy',\n insertAtCursorLabel: 'Insert at cursor',\n feedbackFormTitle: 'Report an issue',\n feedbackFormOptionsLabel: 'What type of issue would you like to report?',\n feedbackFormCommentLabel: 'Description of issue (optional):',\n feedbackThanks: 'Thanks!',\n feedbackReportButtonLabel: 'Report an issue',\n codeSuggestions: 'Code Suggestions',\n files: 'file(s)',\n clickFileToViewDiff: 'Click on a file to view diff.',\n showMore: 'Show more',\n save: 'Save',\n cancel: 'Cancel',\n submit: 'Submit',\n stopGenerating: 'Stop generating',\n copyToClipboard: 'Copied to clipboard',\n noMoreTabsTooltip: 'You\\'ve reached maximum number of tabs you can simultaneously use.',\n codeSuggestionWithReferenceTitle: 'Some suggestions contain code with references.',\n spinnerText: 'Amazon Q is generating your answer...'\n }\n};\nexport class Config {\n private static instance: Config;\n public config: ConfigModel;\n private constructor (config?: Partial<ConfigModel>) {\n this.config = { ...configDefaults, ...config };\n }\n\n public static getInstance (config?: Partial<ConfigModel>): Config {\n if (Config.instance === undefined) {\n Config.instance = new Config(config);\n }\n\n return Config.instance;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const getTimeDiff = (differenceInMs: number, show?: {\n years?: boolean;\n months?: boolean;\n weeks?: boolean;\n days?: boolean;\n hours?: boolean;\n minutes?: boolean;\n} | 1 | 2 | 3 | 4 | 5 | 6, separator?: string): string => {\n // get total seconds for the difference\n let delta = Math.abs(differenceInMs) / 1000;\n\n // calculate (and subtract) whole years\n const years = Math.floor(delta / (86_400 * 30 * 12));\n delta -= years * (86_400 * 30 * 12);\n\n // calculate (and subtract) whole months\n const months = Math.floor(delta / (86_400 * 30));\n delta -= months * (86_400 * 30);\n\n // calculate (and subtract) whole weeks\n const weeks = Math.floor(delta / (86_400 * 7));\n delta -= weeks * (86_400 * 7);\n\n // calculate (and subtract) whole days\n const days = Math.floor(delta / 86_400);\n delta -= days * 86_400;\n\n // calculate (and subtract) whole hours\n const hours = Math.floor(delta / 3_600) % 24;\n delta -= hours * 3_600;\n\n // calculate (and subtract) whole minutes\n const minutes = Math.floor(delta / 60) % 60;\n delta -= minutes * 60;\n\n const combined = [];\n if (years !== 0 && (show === undefined || typeof show !== 'object' || show.years !== false)) {\n combined.push(`${years}yr`);\n }\n if (months !== 0 && (show === undefined || typeof show !== 'object' || show.months !== false)) {\n combined.push(`${months}mo`);\n }\n if (weeks !== 0 && (show === undefined || typeof show !== 'object' || show.weeks !== false)) {\n combined.push(`${weeks}we`);\n }\n if (days !== 0 && (show === undefined || typeof show !== 'object' || show.days !== false)) {\n combined.push(`${days}da`);\n }\n if (hours !== 0 && (show === undefined || typeof show !== 'object' || show.hours !== false)) {\n combined.push(`${hours}hr`);\n }\n if (minutes !== 0 && (show === undefined || typeof show !== 'object' || show.minutes !== false)) {\n combined.push(`${minutes}min`);\n }\n\n if (years + months + weeks + days + hours + minutes === 0) {\n return '1min';\n }\n\n if (show !== undefined && typeof show === 'number') {\n combined.splice(show, combined.length);\n }\n return combined.join(separator ?? ' ');\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MynahPortalNames } from '../static';\nimport { cancelEvent } from './events';\n\n/* eslint-disable @typescript-eslint/method-signature-style */\n/* eslint-disable @typescript-eslint/consistent-type-assertions */\n/* eslint-disable @typescript-eslint/prefer-optional-chain */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\nexport const DS: typeof document.querySelectorAll = document.querySelectorAll.bind(document);\n\nexport interface DomBuilderObject {\n type: string;\n attributes?: Record<string, string> | undefined;\n classNames?: string[] | undefined;\n events?: Record<string, (event?: any) => any> | undefined;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement> | undefined;\n innerHTML?: string | undefined;\n persistent?: boolean | undefined;\n}\n\nexport interface DomBuilderObjectFilled {\n attributes?: Record<string, string | undefined>;\n classNames?: string[];\n events?: Record<string, (event?: any) => any>;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>;\n innerHTML?: string | undefined;\n persistent?: boolean;\n}\n\nconst EmptyDomBuilderObject: DomBuilderObject = {\n type: 'div',\n attributes: {},\n classNames: [],\n events: {},\n children: [],\n innerHTML: undefined,\n persistent: false,\n};\n\nexport interface ExtendedHTMLElement extends HTMLInputElement {\n addClass(className: string): ExtendedHTMLElement;\n removeClass(className: string): ExtendedHTMLElement;\n toggleClass(className: string): ExtendedHTMLElement;\n hasClass(className: string): boolean;\n insertChild(\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child:\n | string\n | DomBuilderObject\n | HTMLElement\n | ExtendedHTMLElement\n | Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement;\n clear(removePersistent?: boolean): ExtendedHTMLElement;\n builderObject: DomBuilderObject;\n update(builderObject: DomBuilderObjectFilled): ExtendedHTMLElement;\n}\n\nexport class DomBuilder {\n private static instance: DomBuilder;\n root: ExtendedHTMLElement;\n private portals: Record<string, ExtendedHTMLElement> = {};\n\n private constructor (rootSelector: string) {\n this.root = DS(rootSelector)[0] as ExtendedHTMLElement;\n this.extendDomFunctionality(this.root);\n }\n\n public static getInstance (rootSelector?: string): DomBuilder {\n if (!DomBuilder.instance) {\n DomBuilder.instance = new DomBuilder(rootSelector !== undefined ? rootSelector : 'body');\n }\n\n return DomBuilder.instance;\n }\n\n addClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (className !== '') {\n this.classList.add(className);\n // eslint-disable-next-line @typescript-eslint/prefer-includes\n if (this.builderObject.classNames?.indexOf(className) === -1) {\n this.builderObject.classNames = [ ...this.builderObject.classNames, className ];\n }\n }\n return this;\n };\n\n removeClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n this.classList.remove(className);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (this.builderObject.classNames !== undefined && this.builderObject.classNames.includes(className)) {\n this.builderObject.classNames.splice(this.builderObject.classNames.indexOf(className), 1);\n }\n return this;\n };\n\n toggleClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (this.classList.contains(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n return this;\n };\n\n hasClass = function (this: ExtendedHTMLElement, className: string): boolean {\n return this.classList.contains(className);\n };\n\n insertChild = function (\n this: ExtendedHTMLElement,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child: string | HTMLElement | ExtendedHTMLElement | Array<string | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (child) {\n if (child instanceof Array) {\n child.forEach(childItem => {\n if (childItem instanceof Element) {\n this.insertAdjacentElement(position, childItem);\n } else if (typeof childItem === 'string') {\n this.insertAdjacentText(position, childItem);\n }\n });\n } else {\n if (child instanceof Element) {\n this.insertAdjacentElement(position, child);\n } else if (typeof child === 'string') {\n this.insertAdjacentText(position, child);\n }\n }\n }\n return this;\n };\n\n clearChildren = function (this: ExtendedHTMLElement, removePersistent: boolean): ExtendedHTMLElement {\n Array.from(this.childNodes).forEach((child: ExtendedHTMLElement | ChildNode) => {\n if (\n removePersistent ||\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n !(child as ExtendedHTMLElement).builderObject ||\n (child as ExtendedHTMLElement).builderObject.persistent !== true\n ) {\n child.remove();\n }\n });\n return this;\n };\n\n extendDomFunctionality = function (this: DomBuilder, domElement: HTMLElement): ExtendedHTMLElement {\n const extendedElement: ExtendedHTMLElement = domElement as ExtendedHTMLElement;\n extendedElement.addClass = this.addClass.bind(extendedElement);\n extendedElement.removeClass = this.removeClass.bind(extendedElement);\n extendedElement.toggleClass = this.toggleClass.bind(extendedElement);\n extendedElement.hasClass = this.hasClass.bind(extendedElement);\n extendedElement.insertChild = this.insertChild.bind(extendedElement);\n extendedElement.clear = this.clearChildren.bind(extendedElement);\n return extendedElement;\n };\n\n build = (domBuilderObject: DomBuilderObject): ExtendedHTMLElement => {\n const readyToBuildObject: DomBuilderObject = { ...EmptyDomBuilderObject, ...domBuilderObject };\n const buildedDom = document.createElement(readyToBuildObject.type);\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n buildedDom.classList.add(...(readyToBuildObject.classNames?.filter(className => className !== '') || []));\n\n Object.keys(readyToBuildObject.events ?? {}).forEach((eventName: string) =>\n buildedDom.addEventListener(\n eventName,\n readyToBuildObject.events ? readyToBuildObject.events[eventName] : cancelEvent\n )\n );\n\n Object.keys(readyToBuildObject.attributes ?? {}).forEach(attributeName =>\n buildedDom.setAttribute(\n attributeName,\n readyToBuildObject.attributes !== undefined ? readyToBuildObject.attributes[attributeName] : ''\n )\n );\n\n if (typeof readyToBuildObject.innerHTML === 'string') {\n buildedDom.innerHTML = readyToBuildObject.innerHTML;\n } else if (readyToBuildObject.children !== undefined && readyToBuildObject.children?.length > 0) {\n this.insertChild.apply(buildedDom as ExtendedHTMLElement, [\n 'beforeend',\n [\n ...(readyToBuildObject.children).map(\n (child: string | ExtendedHTMLElement | HTMLElement | DomBuilderObject) => {\n if (typeof child === 'string' || child instanceof HTMLElement) {\n return child;\n }\n return this.build(child);\n }\n ),\n ],\n ]);\n };\n\n (buildedDom as ExtendedHTMLElement).builderObject = readyToBuildObject;\n (buildedDom as ExtendedHTMLElement).update = (builderObject: DomBuilderObjectFilled): ExtendedHTMLElement => {\n return this.update(buildedDom as ExtendedHTMLElement, builderObject);\n };\n this.extendDomFunctionality(buildedDom);\n return buildedDom as ExtendedHTMLElement;\n };\n\n update = function (\n domToUpdate: ExtendedHTMLElement,\n domBuilderObject: DomBuilderObjectFilled\n ): ExtendedHTMLElement {\n if (domToUpdate.builderObject) {\n if (domBuilderObject.classNames !== undefined) {\n domToUpdate.classList.remove(...(domToUpdate.builderObject.classNames as string[]));\n domToUpdate.classList.add(...domBuilderObject.classNames.filter(className => className !== ''));\n }\n\n Object.keys(domBuilderObject.events ?? {}).forEach(eventName => {\n if (domToUpdate.builderObject.events !== undefined && domToUpdate.builderObject.events[eventName]) {\n domToUpdate.removeEventListener(eventName, domToUpdate.builderObject.events[eventName]);\n }\n if (domBuilderObject.events !== undefined && domBuilderObject.events[eventName] !== undefined) {\n domToUpdate.addEventListener(eventName, domBuilderObject.events[eventName]);\n }\n });\n\n Object.keys(domBuilderObject.attributes ?? {}).forEach(attributeName => {\n if (\n domBuilderObject.attributes !== undefined &&\n domBuilderObject.attributes[attributeName] === undefined\n ) {\n domToUpdate.removeAttribute(attributeName);\n } else if (domBuilderObject.attributes !== undefined) {\n domToUpdate.setAttribute(attributeName, domBuilderObject.attributes[attributeName] as string);\n }\n });\n\n if (typeof domBuilderObject.innerHTML === 'string') {\n domToUpdate.innerHTML = domBuilderObject.innerHTML;\n } else if (domBuilderObject.children !== undefined && domBuilderObject.children.length > 0) {\n domToUpdate.clear();\n domToUpdate.insertChild('beforeend', domBuilderObject.children);\n }\n\n domToUpdate.builderObject = { ...EmptyDomBuilderObject, ...domBuilderObject } as DomBuilderObject;\n } else {\n console.warn('element was not created with dom builder');\n }\n return domToUpdate;\n };\n\n createPortal = (\n portalName: string,\n builderObject: DomBuilderObject,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend'\n ): ExtendedHTMLElement => {\n const portalDom = this.build(builderObject);\n this.root.insertChild(position || 'beforeend', portalDom);\n this.portals[portalName] = portalDom;\n return portalDom;\n };\n\n getPortal = (portalName: string): ExtendedHTMLElement => this.portals[portalName];\n removePortal = (portalName: string): void => this.portals[portalName]?.remove();\n removeAllPortals = (portalsWithName: MynahPortalNames): void => {\n Object.keys(this.portals).forEach(portalName => {\n if (portalName.match(portalsWithName) !== null) {\n this.portals[portalName].remove();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.portals[portalName];\n }\n });\n };\n}\n\nexport const htmlDecode = (input: string): string => {\n const e = document.createElement('textarea');\n e.innerHTML = input;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue ?? input;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahEventNames } from '../static';\nimport { generateUID } from './guid';\n\nexport const cancelEvent = (event: Event): boolean => {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n return false;\n};\n\nexport class MynahUIGlobalEvents {\n private static instance: MynahUIGlobalEvents;\n private readonly listeners: Record<MynahEventNames, Record<string, (value?: any) => void>>;\n\n private constructor () {\n this.listeners = { ...this.listeners };\n }\n\n public static getInstance = (): MynahUIGlobalEvents => {\n if (MynahUIGlobalEvents.instance === undefined) {\n MynahUIGlobalEvents.instance = new MynahUIGlobalEvents();\n }\n\n return MynahUIGlobalEvents.instance;\n };\n\n /**\n * Subscribe to value changes of a specific item in data store\n * @param eventKey One of the keys in MynahUIDataModel\n * @param handler function will be called with optional data field\n * @returns listenerId which will be necessary to removeListener\n */\n public addListener = (eventKey: MynahEventNames, handler: (data?: any) => void): string => {\n const listenerId: string = generateUID();\n if (this.listeners[eventKey] === undefined) {\n this.listeners[eventKey] = {};\n }\n this.listeners[eventKey][listenerId] = handler;\n return listenerId;\n };\n\n /**\n * Unsubscribe from changes of a specific item in data store\n * @param eventKey One of the keys in MynahUIDataModel\n * @param listenerId listenerId which is returned from addListener function\n */\n public removeListener = (eventKey: MynahEventNames, listenerId: string): void => {\n if (this.listeners[eventKey]?.[listenerId] !== undefined) {\n delete this.listeners[eventKey][listenerId];\n }\n };\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public dispatch = (eventKey: MynahEventNames, data?: any): void => {\n if (this.listeners[eventKey] !== undefined) {\n Object.keys(this.listeners[eventKey]).forEach((listenerId: string) => {\n this.listeners[eventKey][listenerId](data);\n });\n }\n };\n}\n","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type TreeNode = FolderNode | FileNode;\nexport interface FileNode {\n name: string;\n type: 'file';\n filePath: string;\n deleted: boolean;\n}\nexport interface FolderNode {\n name: string;\n type: 'folder';\n children: Array<FolderNode | FileNode>;\n}\n\n/*\n * Converts a list of file Paths into a tree\n *\n * @input: The list of path in string format\n * Example Input:\n * modifiedFilePaths: [\n * \"project/src/hello.js\",\n * ]\n * deletedFilePaths: [\n * \"project/src/goodbye.js\",\n * ]\n *\n * Example output:\n * {\n * name: 'Changes',\n * type: 'folder',\n * children: [{\n * name: 'project',\n * type: 'folder',\n * children: [{\n * name: 'src',\n * type: 'folder',\n * children: [\n * { name: 'hello.js', type: 'file', filePath: 'project/src/hello.js', deleted: false },\n * { name: 'goodbye.js', type: 'file', filePath: 'project/src/goodbye.js', deleted: true },\n * ]\n * }]\n * }]\n * }\n */\nexport const fileListToTree = (modifiedFilePaths: string[], deletedFilePaths: string[] = []): TreeNode => {\n return [ ...splitFilePaths(modifiedFilePaths, false), ...splitFilePaths(deletedFilePaths, true) ].reduce<TreeNode>(\n (acc, { filePath, deleted }) => {\n // pointer to keep track of the current tree node\n let currentNode = acc;\n for (let i = 0; i < filePath.length; i++) {\n const fileOrFolder = filePath[i];\n // we can assume the leaf of each branch is a file. the LLM doesn't generate\n // empty folder changes\n if (i === filePath.length - 1) {\n // the parent of a file is always a folder\n (currentNode as FolderNode).children.push({\n type: 'file',\n name: fileOrFolder,\n filePath: filePath.join('/'),\n deleted,\n });\n break;\n } else {\n const oldItem = (currentNode as FolderNode).children.find(({ name }) => name === fileOrFolder);\n if (oldItem != null) {\n currentNode = oldItem;\n } else {\n // if the current fileOrFolder is not in the list, add it as a folder and move the pointer\n const newItem: FolderNode = { name: fileOrFolder, type: 'folder', children: [] };\n (currentNode as FolderNode).children.push(newItem);\n currentNode = newItem;\n }\n }\n }\n return acc;\n },\n // Start off with a root folder called Changes\n { name: 'Changes', type: 'folder', children: [] }\n );\n};\n\nconst splitFilePaths = (paths: string[], deleted: boolean): Array<{ filePath: string[]; deleted: boolean }> =>\n paths\n // split file path by folder. ignore dot folders\n .map(filePath => ({ filePath: filePath.split('/').filter(item => item !== undefined && item !== '.'), deleted }));\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const generateUID = (): string => {\n const firstPart: number = (Math.random() * 46656) | 0;\n const secondPart: number = (Math.random() * 46656) | 0;\n return `000${firstPart.toString(36)}`.slice(-3) + `000${secondPart.toString(36)}`.slice(-3);\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahEventNames, MynahUIDataModel } from '../static';\nimport { Config } from './config';\nimport { MynahUIGlobalEvents } from './events';\nimport { generateUID } from './guid';\n\nconst PrimitiveObjectTypes = [ 'string', 'number', 'boolean' ];\nexport class EmptyMynahUIDataModel {\n data: Required<MynahUIDataModel>;\n constructor (defaults?: MynahUIDataModel | null) {\n this.data = {\n tabTitle: Config.getInstance().config.texts.mainTitle,\n loadingChat: false,\n cancelButtonWhenLoading: true,\n showChatAvatars: false,\n quickActionCommands: [],\n promptInputPlaceholder: '',\n promptInputInfo: '',\n promptInputDisabledState: false,\n chatItems: [],\n selectedCodeSnippet: '',\n ...defaults\n };\n }\n}\nexport class MynahUIDataStore {\n private readonly subscriptions: Record<keyof MynahUIDataModel, Record<string, (newValue?: any, oldValue?: any) => void>>;\n private readonly tabId: string;\n private store: Required<MynahUIDataModel> = (new EmptyMynahUIDataModel()).data;\n private defaults: MynahUIDataModel | null = null;\n\n constructor (tabId: string, initialData?: MynahUIDataModel) {\n this.tabId = tabId;\n this.store = Object.assign(this.store, initialData);\n this.subscriptions = Object.create({});\n (Object.keys(this.store) as Array<keyof MynahUIDataModel>).forEach((storeKey) => {\n Object.assign(this.subscriptions, { [storeKey]: {} });\n });\n }\n\n /**\n * Sets the defaults to use while clearing the store\n * @param defaults partial set of MynahUIDataModel for defaults\n */\n public setDefaults = (defaults: MynahUIDataModel | null): void => {\n this.defaults = defaults;\n };\n\n /**\n * Get the defaults to use while generating an empty store data\n */\n public getDefaults = (): MynahUIDataModel | null => this.defaults;\n\n /**\n * Subscribe to value changes of a specific item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @param handler function will be called when value of the given key is updated in store with new and old values\n * @returns subscriptionId which needed to unsubscribe\n */\n public subscribe = (storeKey: keyof MynahUIDataModel, handler: (newValue: any, oldValue?: any) => void): string => {\n const subscriptionId: string = generateUID();\n this.subscriptions[storeKey][subscriptionId] = handler;\n return subscriptionId;\n };\n\n /**\n * Unsubscribe from changes of a specific item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @param subscriptionId subscriptionId which is returned from subscribe function\n */\n public unsubscribe = (storeKey: keyof MynahUIDataModel, subscriptionId: string): void => {\n if (this.subscriptions[storeKey]?.[subscriptionId] !== undefined) {\n delete this.subscriptions[storeKey][subscriptionId];\n }\n };\n\n /**\n * Returns current value of an item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @returns value of the given key in data store\n */\n public getValue = (storeKey: keyof MynahUIDataModel): any => structuredClone(this.store[storeKey]);\n\n /**\n * Returns current value of an item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @returns value of the given key in data store\n */\n public getDefaultValue = (storeKey: keyof MynahUIDataModel): any => (new EmptyMynahUIDataModel(this.defaults)).data[storeKey];\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public updateStore = (data: MynahUIDataModel, skipSubscribers?: boolean): void => {\n if (skipSubscribers !== true) {\n (Object.keys(data) as Array<keyof MynahUIDataModel>).forEach(storeKey => {\n Object.keys(this.subscriptions[storeKey]).forEach((subscriptionId: string) => {\n if (!PrimitiveObjectTypes.includes(typeof data[storeKey]) || data[storeKey] !== this.store[storeKey]) {\n this.subscriptions[storeKey][subscriptionId](data[storeKey], this.store[storeKey]);\n }\n });\n });\n }\n this.store = Object.assign(structuredClone(this.store), data);\n };\n\n /**\n * Clears store data and informs all the subscribers\n */\n public resetStore = (): void => {\n this.updateStore((new EmptyMynahUIDataModel(structuredClone(this.defaults))).data);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.RESET_STORE, { tabId: this.tabId });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahUIDataModel, MynahUITabStoreModel, MynahUITabStoreTab } from '../static';\nimport { Config } from './config';\nimport { generateUID } from './guid';\nimport { MynahUIDataStore } from './store';\n\ninterface TabStoreSubscription {\n 'add': Record<string, (tabId: string, tabData?: MynahUITabStoreTab) => void>;\n 'remove': Record<string, (tabId: string, newSelectedTab?: MynahUITabStoreTab) => void>;\n 'update': Record<string, (tabId: string, tabData?: MynahUITabStoreTab) => void>;\n 'selectedTabChange': Record<string, (tabId: string, previousSelectedTab?: MynahUITabStoreTab) => void>;\n}\nexport class EmptyMynahUITabsStoreModel {\n data: Required<MynahUITabStoreModel>;\n constructor () {\n const guid = generateUID();\n this.data = {\n [guid]: {\n isSelected: true,\n store: {},\n }\n };\n }\n}\nexport class MynahUITabsStore {\n private static instance: MynahUITabsStore;\n private readonly subscriptions: TabStoreSubscription = {\n add: {},\n remove: {},\n update: {},\n selectedTabChange: {}\n };\n\n private readonly tabDefaults: MynahUITabStoreTab = {};\n private readonly tabsStore: Required<MynahUITabStoreModel> = {};\n private readonly tabsDataStore: Record<string, MynahUIDataStore> = {};\n\n private constructor (initialData?: MynahUITabStoreModel, defaults?: MynahUITabStoreTab) {\n this.tabsStore = Object.assign(this.tabsStore, initialData);\n if (defaults != null) {\n this.tabDefaults = defaults;\n }\n if ((initialData != null) && Object.keys(initialData).length > 0) {\n Object.keys(initialData).forEach((tabId: string) => {\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId, initialData[tabId].store ?? {});\n });\n }\n }\n\n private readonly deselectAllTabs = (): void => {\n Object.keys(this.tabsStore).forEach(tabId => {\n this.tabsStore[tabId].isSelected = false;\n });\n };\n\n public readonly addTab = (tabData?: MynahUITabStoreTab): string | undefined => {\n if (Object.keys(this.tabsStore).length < Config.getInstance().config.maxTabs) {\n const tabId = generateUID();\n this.deselectAllTabs();\n this.tabsStore[tabId] = { ...this.tabDefaults, ...tabData, isSelected: true };\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId, this.tabsStore[tabId].store ?? {});\n this.informSubscribers('add', tabId, this.tabsStore[tabId]);\n this.informSubscribers('selectedTabChange', tabId, this.tabsStore[tabId]);\n return tabId;\n }\n };\n\n public readonly removeTab = (tabId: string): string => {\n const wasSelected = this.tabsStore[tabId].isSelected ?? false;\n let newSelectedTab: MynahUITabStoreTab | undefined;\n delete this.tabsStore[tabId];\n this.tabsDataStore[tabId].resetStore();\n delete this.tabsDataStore[tabId];\n if (wasSelected) {\n const tabIds = Object.keys(this.tabsStore);\n if (tabIds.length > 0) {\n this.deselectAllTabs();\n this.selectTab(tabIds[tabIds.length - 1]);\n newSelectedTab = this.tabsStore[this.getSelectedTabId()];\n }\n }\n this.informSubscribers('remove', tabId, newSelectedTab);\n return tabId;\n };\n\n public readonly selectTab = (tabId: string): void => {\n this.deselectAllTabs();\n this.tabsStore[tabId].isSelected = true;\n this.informSubscribers('selectedTabChange', tabId, this.tabsStore[tabId]);\n };\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public updateTab = (tabId: string, tabData?: Partial<MynahUITabStoreTab>, skipSubscribers?: boolean): void => {\n if (this.tabsStore[tabId] !== undefined) {\n if (tabData?.isSelected === true && this.getSelectedTabId() !== tabId) {\n this.deselectAllTabs();\n this.informSubscribers('selectedTabChange', tabId);\n }\n this.tabsStore[tabId] = { ...this.tabsStore[tabId], ...tabData };\n if (tabData?.store !== undefined) {\n if (this.tabsDataStore[tabId] === undefined) {\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId);\n }\n this.tabsDataStore[tabId].updateStore(tabData?.store);\n }\n if (skipSubscribers !== true) {\n this.informSubscribers('update', tabId, this.tabsStore[tabId]);\n }\n }\n };\n\n public static getInstance = (initialData?: MynahUITabStoreModel, defaults?: MynahUITabStoreTab): MynahUITabsStore => {\n if (MynahUITabsStore.instance === undefined) {\n MynahUITabsStore.instance = new MynahUITabsStore(initialData, defaults);\n }\n\n return MynahUITabsStore.instance;\n };\n\n /**\n * Subscribe to changes of the tabsStore\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public addListener = (eventName: keyof TabStoreSubscription, handler: (tabId: string, tabData?: MynahUITabStoreTab) => void): string => {\n const subscriptionId: string = generateUID();\n this.subscriptions[eventName][subscriptionId] = handler;\n return subscriptionId;\n };\n\n /**\n * Subscribe to changes of the tabs' data store\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public addListenerToDataStore = (tabId: string, storeKey: keyof MynahUIDataModel, handler: (newValue: any, oldValue?: any) => void): string | null => {\n if (this.tabsDataStore[tabId] !== undefined) {\n return this.tabsDataStore[tabId].subscribe(storeKey, handler);\n }\n return null;\n };\n\n /**\n * Unsubscribe from changes of the tabs' data store\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public removeListenerFromDataStore = (tabId: string, subscriptionId: string, storeKey: keyof MynahUIDataModel): void => {\n if (this.tabsDataStore[tabId] !== undefined) {\n this.tabsDataStore[tabId].unsubscribe(storeKey, subscriptionId);\n }\n };\n\n /**\n * Unsubscribe from changes of the tabs store\n * @param subscriptionId subscriptionId which is returned from subscribe function\n */\n public removeListener = (eventName: keyof TabStoreSubscription, subscriptionId: string): void => {\n if (this.subscriptions[eventName][subscriptionId] !== undefined) {\n delete this.subscriptions[eventName][subscriptionId];\n }\n };\n\n private readonly informSubscribers = (eventName: keyof TabStoreSubscription, tabId: string, tabData?: MynahUITabStoreTab): void => {\n const subscriberKeys = Object.keys(this.subscriptions[eventName]);\n subscriberKeys.forEach(subscriberKey => {\n this.subscriptions[eventName][subscriberKey](tabId, tabData);\n });\n };\n\n /**\n * Returns the tab\n * @param tabId Tab Id\n * @returns info of the tab\n */\n public getTab = (tabId: string): MynahUITabStoreTab | null => this.tabsStore[tabId] ?? null;\n\n /**\n * Returns the tab\n * @param tabId Tab Id\n * @returns info of the tab\n */\n public getAllTabs = (): MynahUITabStoreModel => structuredClone(this.tabsStore);\n\n /**\n * Returns the data store of the tab\n * @param tabId Tab Id\n * @returns data of the tab\n */\n public getTabDataStore = (tabId: string): MynahUIDataStore => this.tabsDataStore[tabId];\n\n /**\n * Returns the data of the tab\n * @param tabId Tab Id\n * @returns data of the tab\n */\n public getSelectedTabId = (): string => {\n const tabIds = Object.keys(this.tabsStore);\n return tabIds.find(tabId => this.tabsStore[tabId].isSelected === true) ?? '';\n };\n\n /**\n * Clears store data and informs all the subscribers\n */\n public removeAllTabs = (): void => {\n Object.keys(this.tabsStore).forEach(tabId => {\n this.removeTab(tabId);\n });\n };\n\n /**\n * Get all tabs length\n * @returns tabs length\n */\n public tabsLength = (): number => Object.keys(this.tabsStore).length;\n}\n","export const getOrigin = (site: string): string => {\n let result = '';\n try {\n result = new URL(site).origin;\n } catch (err) {\n result = 'unknown';\n }\n return result;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MynahIcons } from './components/icon';\n\nexport interface QuickActionCommand {\n command: string;\n description?: string;\n placeholder?: string;\n}\nexport interface QuickActionCommandGroup {\n groupName?: string;\n commands: QuickActionCommand[];\n}\n/**\n * data store model to update the mynah ui partially or fully\n */\nexport interface MynahUIDataModel {\n /**\n * Tab title\n * */\n tabTitle?: string;\n /**\n * Chat screen loading animation state (mainly use during the stream or getting the initial answer)\n */\n loadingChat?: boolean;\n /**\n * Show chat avatars or not\n * */\n showChatAvatars?: boolean;\n /**\n * Show cancel button while loading the chat\n * */\n cancelButtonWhenLoading?: boolean;\n /**\n * Quick Action commands to show when user hits / to the input initially\n */\n quickActionCommands?: QuickActionCommandGroup[];\n /**\n * Placeholder to be shown on prompt input\n */\n promptInputPlaceholder?: string;\n /**\n * Info block to be shown under prompt input\n */\n promptInputInfo?: string;\n /**\n * Prompt input field disabled state, set to tru to disable it\n */\n promptInputDisabledState?: boolean;\n /**\n * List of chat item objects to be shown on the web suggestions search screen\n */\n chatItems?: ChatItem[];\n // TODO\n selectedCodeSnippet?: string;\n}\n\nexport interface MynahUITabStoreTab {\n /**\n * Is tab selected\n */\n isSelected?: boolean;\n /**\n * Tab items data store\n */\n store?: MynahUIDataModel;\n}\n/**\n * tabs store model to update the tabs partially or fully\n */\nexport interface MynahUITabStoreModel {\n [tabId: string]: MynahUITabStoreTab;\n}\n\nexport enum MynahEventNames {\n RESET_STORE = 'resetStore',\n FEEDBACK_SET = 'feedbackSet',\n CARD_VOTE = 'cardVote',\n SOURCE_LINK_CLICK = 'sourceLinkClick',\n INFO_LINK_CLICK = 'infoLinkClick',\n LINK_CLICK = 'linkClick',\n CHAT_ITEM_ENGAGEMENT = 'chatItemEngagement',\n COPY_CODE_TO_CLIPBOARD = 'copyCodeToClipboard',\n INSERT_CODE_TO_CURSOR_POSITION = 'insertCodeToCursorPosition',\n CHAT_PROMPT = 'chatPrompt',\n CHAT_ITEM_ADD = 'chatItemAdd',\n FOLLOW_UP_CLICKED = 'followUpClicked',\n SHOW_MORE_WEB_RESULTS_CLICK = 'showMoreWebResultsClick',\n SHOW_FEEDBACK_FORM = 'showFeedbackForm',\n OPEN_DIFF = 'openDiff',\n ADD_CODE_SNIPPET = 'addCodeSnippet',\n REMOVE_CODE_SNIPPET = 'removeCodeSnippet',\n};\n\nexport enum MynahPortalNames {\n WRAPPER = 'wrapper',\n SIDE_NAV = 'sideNav',\n OVERLAY = 'overlay',\n FEEDBACK_FORM = 'feedbackForm',\n};\n\nexport interface SourceLinkMetaData {\n stars?: number; // repo stars\n forks?: number; // repo forks\n answerCount?: number; // total answers if it is a question\n isOfficialDoc?: boolean; // is suggestion comes from an official api doc\n isAccepted?: boolean; // is accepted or not if it is an answer\n score?: number; // relative score according to the up and down votes for a question or an answer\n lastActivityDate?: number; // creation or last update date for question or answer\n}\n\nexport interface SourceLink {\n title: string;\n id?: string;\n url: string;\n body?: string;\n type?: string;\n metadata?: Record<string, SourceLinkMetaData>;\n}\nexport enum ChatItemType {\n PROMPT = 'prompt',\n SYSTEM_PROMPT = 'system-prompt',\n AI_PROMPT = 'ai-prompt',\n ANSWER = 'answer',\n ANSWER_STREAM = 'answer-stream',\n ANSWER_PART = 'answer-part',\n CODE_RESULT = 'code-result',\n}\n\nexport interface ChatItem {\n body?: string;\n type: ChatItemType;\n messageId?: string;\n canBeVoted?: boolean;\n followUp?: {\n text?: string;\n options?: ChatItemFollowUp[];\n };\n relatedContent?: {\n title?: string;\n content: SourceLink[];\n };\n codeReference?: ReferenceTrackerInformation[];\n fileList?: {\n filePaths?: string[];\n deletedFiles?: string[];\n };\n}\n\nexport interface ChatPrompt {\n prompt?: string;\n escapedPrompt?: string;\n command?: string;\n attachment?: SourceLink;\n}\n\nexport interface ChatItemFollowUp extends ChatPrompt {\n type?: string;\n pillText: string;\n disabled?: boolean;\n description?: string;\n status?: 'info' | 'success' | 'warning' | 'error';\n icon?: MynahIcons;\n}\n\nexport enum KeyMap {\n ESCAPE = 'Escape',\n ENTER = 'Enter',\n BACKSPACE = 'Backspace',\n SPACE = ' ',\n DELETE = 'Delete',\n ARROW_UP = 'ArrowUp',\n ARROW_DOWN = 'ArrowDown',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_RIGHT = 'ArrowRight',\n PAGE_UP = 'PageUp',\n PAGED_OWN = 'PageDown',\n HOME = 'Home',\n END = 'End',\n META = 'Meta',\n TAB = 'Tab',\n SHIFT = 'Shift',\n CONTROL = 'Control',\n ALT = 'Alt',\n SLASH = '/',\n BACK_SLASH = '\\\\'\n}\n\nexport interface ReferenceTrackerInformation {\n licenseName?: string;\n repository?: string;\n url?: string;\n recommendationContentSpan: {\n start: number;\n end: number;\n };\n information: string;\n}\n\nexport type CodeSelectionType = 'selection' | 'block';\nexport type OnCopiedToClipboardFunction = (type?: CodeSelectionType, text?: string, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\nexport type OnInsertToCursorPositionFunction = (type?: CodeSelectionType, text?: string, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n\nexport enum RelevancyVoteType {\n UP = 'upvote',\n DOWN = 'downvote',\n}\n\n/**\n * 'interaction' will be set if there was a potential text selection or a click input was triggered by the user.\n * If this is a selection selectionDistanceTraveled object will also be filled\n * 'timespend' will be set basically if there is no interaction except mouse movements in a time spent longer than the ENGAGEMENT_DURATION_LIMIT\n * Don't forget that in 'timespend' case, user should leave the suggestion card at some point to count it as an interaction.\n * (They need to go back to the code or move to another card instead)\n */\nexport enum EngagementType {\n INTERACTION = 'interaction',\n TIME = 'timespend',\n}\n\nexport interface Engagement {\n /**\n * Engagement type\n */\n engagementType: EngagementType;\n /**\n * Total duration in ms till the engagement triggered.\n */\n engagementDurationTillTrigger: number;\n /**\n * Total mouse movement in x and y directions till the engagement triggered.\n * To avoid confusion: this is not the distance between start and end points, this is the total traveled distance.\n */\n totalMouseDistanceTraveled: { x: number; y: number };\n /**\n * If the engagementType is \"interaction\" and this object has a value, you can assume it as a text selection.\n * If the engagementType is \"interaction\" but this object is not defined, you can assume it as a click\n */\n selectionDistanceTraveled?: { x: number; y: number; selectedText?: string };\n}\n\nexport interface FeedbackPayload {\n messageId: string;\n tabId: string;\n selectedOption: string;\n comment?: string;\n}\n\nexport enum NotificationType {\n INFO = MynahIcons.INFO,\n SUCCESS = MynahIcons.OK_CIRCLED,\n WARNING = MynahIcons.WARNING,\n ERROR = MynahIcons.ERROR,\n}\n\nexport interface ConfigModel {\n texts: {\n mainTitle: string;\n feedbackFormTitle: string;\n feedbackFormOptionsLabel: string;\n feedbackFormCommentLabel: string;\n feedbackThanks: string;\n feedbackReportButtonLabel: string;\n codeSuggestions: string;\n clickFileToViewDiff: string;\n files: string;\n insertAtCursorLabel: string;\n copy: string;\n showMore: string;\n save: string;\n cancel: string;\n submit: string;\n stopGenerating: string;\n copyToClipboard: string;\n noMoreTabsTooltip: string;\n codeSuggestionWithReferenceTitle: string;\n spinnerText: string;\n };\n feedbackOptions: Array<{\n label: string;\n value: string;\n }>;\n maxTabs: number;\n}\n","'use strict'\n\n/**\n * un-escape special characters in the given string of html.\n *\n * @param {String} html\n * @return {String}\n */\n\nmodule.exports = function (html) {\n return String(html)\n .replace(/"/g, '\"')\n .replace(/'/g, '\\'')\n .replace(/:/g, ':')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&')\n}\n","/**\n * marked v7.0.5 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n'use strict';\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: false,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: false,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\nexports.defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n }\n catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n }\n else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n }\n else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n }\n else {\n return base + href;\n }\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction checkDeprecations(opt, callback) {\n if (!opt || opt.silent) {\n return;\n }\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n // TODO: Fix this rules type\n rules;\n lexer;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c, tokens: [] };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n const align = item.align[i];\n if (align) {\n if (/^ *-+: *$/.test(align)) {\n item.align[i] = 'right';\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align[i] = 'center';\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align[i] = 'left';\n }\n else {\n item.align[i] = null;\n }\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return { text: c, tokens: [] };\n });\n }\n // parse child tokens inside headers and cells\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const raw = [...src].slice(0, lLength + match.index + rLength + 1).join('');\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n }\n else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^((?![*_])[\\spunctuation])/\n};\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\ninline._punctuation = '\\\\p{P}$+<=>`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * smartypants text replacement\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n/**\n * mangle email addresses\n */\nfunction mangle(text) {\n let out = '';\n for (let i = 0; i < text.length; i++) {\n const ch = Math.random() > 0.5\n ? 'x' + text.charCodeAt(i).toString(16)\n : text.charCodeAt(i).toString();\n out += '&#' + ch + ';';\n }\n return out;\n}\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n }\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass _Slugger {\n seen;\n constructor() {\n this.seen = {};\n }\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n /**\n * Convert string to unique id\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n slugger;\n constructor(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n }\n else {\n itemBody += checkbox;\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop];\n const rendererKey = prop;\n const prevRenderer = renderer[rendererKey];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop];\n const tokenizerKey = prop;\n const prevTokenizer = tokenizer[tokenizerKey];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop];\n const hooksKey = prop;\n const prevHook = hooks[hooksKey];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n hooks[hooksKey] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n #parseMarkdown(lexer, parser) {\n return (src, optOrCallback, callback) => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n checkDeprecations(opt, callback);\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (callback) {\n const resultCallback = callback;\n const highlight = opt.highlight;\n let tokens;\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n }\n catch (e) {\n return throwError(e);\n }\n const done = (err) => {\n let out;\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n }\n catch (e) {\n err = e;\n }\n }\n opt.highlight = highlight;\n return err\n ? throwError(err)\n : resultCallback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!tokens.length)\n return done();\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n if (pending === 0) {\n done();\n }\n return;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async, callback) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt, callback) {\n return markedInstance.parse(src, opt, callback);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = exports.defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexports.Hooks = _Hooks;\nexports.Lexer = _Lexer;\nexports.Marked = Marked;\nexports.Parser = _Parser;\nexports.Renderer = _Renderer;\nexports.Slugger = _Slugger;\nexports.TextRenderer = _TextRenderer;\nexports.Tokenizer = _Tokenizer;\nexports.getDefaults = _getDefaults;\nexports.lexer = lexer;\nexports.marked = marked;\nexports.options = options;\nexports.parse = parse;\nexports.parseInline = parseInline;\nexports.parser = parser;\nexports.setOptions = setOptions;\nexports.use = use;\nexports.walkTokens = walkTokens;\n//# sourceMappingURL=marked.cjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Notification } from './components/notification';\nimport { DomBuilder, ExtendedHTMLElement } from './helper/dom';\nimport {\n MynahPortalNames,\n RelevancyVoteType,\n FeedbackPayload,\n MynahUIDataModel,\n MynahEventNames,\n NotificationType,\n ChatItem,\n ChatItemFollowUp,\n ChatPrompt,\n MynahUITabStoreModel,\n MynahUITabStoreTab,\n ConfigModel,\n ReferenceTrackerInformation,\n CodeSelectionType,\n Engagement,\n} from './static';\nimport { MynahUIGlobalEvents } from './helper/events';\nimport { Tabs } from './components/navigation-tabs';\nimport { ChatWrapper } from './components/chat-item/chat-wrapper';\nimport { FeedbackForm } from './components/feedback-form/feedback-form';\nimport { MynahUITabsStore } from './helper/tabs-store';\nimport { Config } from './helper/config';\nimport { marked } from 'marked';\nimport './styles/styles.scss';\n\nexport {\n FeedbackPayload,\n RelevancyVoteType,\n EngagementType,\n Engagement,\n MynahUIDataModel,\n NotificationType,\n ChatItem,\n ChatItemFollowUp,\n ChatItemType,\n ChatPrompt,\n SourceLink\n} from './static';\nexport {\n ToggleOption\n} from './components/toggle';\nexport {\n MynahIcons\n} from './components/icon';\n\nexport interface MynahUIProps {\n rootSelector?: string;\n defaults?: MynahUITabStoreTab;\n tabs?: MynahUITabStoreModel;\n config?: Partial<ConfigModel>;\n onShowMoreWebResultsClick?: (tabId: string, messageId: string) => void;\n onReady?: () => void;\n onVote?: (tabId: string, messageId: string, vote: RelevancyVoteType) => void;\n onStopChatResponse?: (tabId: string) => void;\n onResetStore?: (tabId: string) => void;\n onChatPrompt?: (tabId: string, prompt: ChatPrompt) => void;\n onFollowUpClicked?: (tabId: string, messageId: string, followUp: ChatItemFollowUp) => void;\n onTabChange?: (tabId: string) => void;\n onTabAdd?: (tabId: string) => void;\n onTabRemove?: (tabId: string) => void;\n onChatItemEngagement?: (tabId: string, messageId: string, engagement: Engagement) => void;\n onCopyCodeToClipboard?: (tabId: string, messageId: string, code?: string, type?: CodeSelectionType, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n onCodeInsertToCursorPosition?: (tabId: string, messageId: string, code?: string, type?: CodeSelectionType, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n onSourceLinkClick?: (tabId: string, messageId: string, link: string, mouseEvent?: MouseEvent) => void;\n onLinkClick?: (tabId: string, messageId: string, link: string, mouseEvent?: MouseEvent) => void;\n onInfoLinkClick?: (tabId: string, link: string, mouseEvent?: MouseEvent) => void;\n onSendFeedback?: (tabId: string, feedbackPayload: FeedbackPayload) => void;\n onOpenDiff?: (tabId: string, filePath: string, deleted: boolean, messageId?: string) => void;\n}\n\nexport class MynahUI {\n private readonly props: MynahUIProps;\n private readonly wrapper: ExtendedHTMLElement;\n private readonly tabsWrapper: ExtendedHTMLElement;\n private readonly tabContentsWrapper: ExtendedHTMLElement;\n private readonly feedbackForm?: FeedbackForm;\n private readonly chatWrappers: Record<string, ChatWrapper> = {};\n\n constructor (props: MynahUIProps) {\n // Fixes for marked\n marked.use({\n renderer: {\n listitem: (src) => `<li> ${src.replace(/\\[\\[([^[]+)\\]\\](\\(([^)]*))\\)/gim, '<a href=\"$3\">[$1]</a>')}</li>`\n },\n });\n\n this.props = props;\n Config.getInstance(props.config);\n DomBuilder.getInstance(props.rootSelector);\n MynahUITabsStore.getInstance(this.props.tabs, this.props.defaults);\n MynahUIGlobalEvents.getInstance();\n\n const initTabs = MynahUITabsStore.getInstance().getAllTabs();\n this.tabContentsWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-ui-tab-contents-wrapper' ],\n children: Object.keys(initTabs).map((tabId: string) => {\n this.chatWrappers[tabId] = new ChatWrapper({\n tabId,\n onStopChatResponse: props.onStopChatResponse,\n });\n return this.chatWrappers[tabId].render;\n })\n });\n\n if (props.onSendFeedback !== undefined) {\n this.feedbackForm = new FeedbackForm();\n }\n\n this.tabsWrapper = new Tabs({\n onChange: (selectedTabId: string) => {\n if (this.props.onTabChange !== undefined) {\n this.props.onTabChange(selectedTabId);\n }\n }\n }).render;\n\n this.tabsWrapper.setAttribute('selected-tab', MynahUITabsStore.getInstance().getSelectedTabId());\n\n this.wrapper = DomBuilder.getInstance().createPortal(\n MynahPortalNames.WRAPPER,\n {\n type: 'div',\n attributes: {\n id: 'mynah-wrapper'\n },\n children: [\n this.tabsWrapper,\n this.tabContentsWrapper,\n ]\n },\n 'afterbegin'\n );\n\n MynahUITabsStore.getInstance().addListener('add', (tabId: string) => {\n this.chatWrappers[tabId] = new ChatWrapper({\n tabId,\n onStopChatResponse: props.onStopChatResponse,\n });\n this.tabContentsWrapper.appendChild(this.chatWrappers[tabId].render);\n if (this.props.onTabAdd !== undefined) {\n this.props.onTabAdd(tabId);\n }\n });\n MynahUITabsStore.getInstance().addListener('remove', (tabId: string) => {\n this.chatWrappers[tabId].render.remove();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.chatWrappers[tabId];\n if (this.props.onTabRemove !== undefined) {\n this.props.onTabRemove(tabId);\n }\n });\n\n this.addGlobalListeners();\n if (this.props.onReady !== undefined) {\n this.props.onReady();\n }\n }\n\n private readonly addGlobalListeners = (): void => {\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_PROMPT, (data: {tabId: string; prompt: ChatPrompt}) => {\n if (this.props.onChatPrompt !== undefined) {\n this.props.onChatPrompt(data.tabId, data.prompt);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FOLLOW_UP_CLICKED, (data: {\n tabId: string;\n messageId: string;\n followUpOption: ChatItemFollowUp;\n }) => {\n if (this.props.onFollowUpClicked !== undefined) {\n this.props.onFollowUpClicked(data.tabId, data.messageId, data.followUpOption);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SHOW_MORE_WEB_RESULTS_CLICK, (data: {messageId: string}) => {\n if (this.props.onShowMoreWebResultsClick !== undefined) {\n this.props.onShowMoreWebResultsClick(MynahUITabsStore.getInstance().getSelectedTabId(), data.messageId);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FEEDBACK_SET, (feedbackData) => {\n if (this.props.onSendFeedback !== undefined) {\n this.props.onSendFeedback(MynahUITabsStore.getInstance().getSelectedTabId(), feedbackData);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_ITEM_ENGAGEMENT, (data: { engagement: Engagement; messageId: string }) => {\n if (this.props.onChatItemEngagement !== undefined) {\n this.props.onChatItemEngagement(MynahUITabsStore.getInstance().getSelectedTabId(), data.messageId, data.engagement);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.COPY_CODE_TO_CLIPBOARD, (data) => {\n if (this.props.onCopyCodeToClipboard !== undefined) {\n this.props.onCopyCodeToClipboard(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.text,\n data.type,\n data.referenceTrackerInformation\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.INSERT_CODE_TO_CURSOR_POSITION, (data) => {\n if (this.props.onCodeInsertToCursorPosition !== undefined) {\n this.props.onCodeInsertToCursorPosition(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.text,\n data.type,\n data.referenceTrackerInformation\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SOURCE_LINK_CLICK, (data) => {\n if (this.props.onSourceLinkClick !== undefined) {\n this.props.onSourceLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.link,\n data.event\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.LINK_CLICK, (data) => {\n if (this.props.onLinkClick !== undefined) {\n this.props.onLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.link,\n data.event\n );\n }\n });\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.INFO_LINK_CLICK, (data) => {\n if (this.props.onInfoLinkClick !== undefined) {\n this.props.onInfoLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.link,\n data.event\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CARD_VOTE, (data) => {\n if (this.props.onVote !== undefined) {\n this.props.onVote(\n data.tabId,\n data.messageId,\n data.vote\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.RESET_STORE, (data: {tabId: string}) => {\n if (this.props.onResetStore !== undefined) {\n this.props.onResetStore(data.tabId);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.OPEN_DIFF, (data) => {\n if (this.props.onOpenDiff !== undefined) {\n this.props.onOpenDiff(data.tabId, data.filePath, data.deleted, data.messageId);\n }\n });\n };\n\n public addToUserPrompt = (tabId: string, prompt: string): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].addToPrompt(prompt);\n }\n };\n\n /**\n * Adds a new answer on the chat window\n * @param tabId Corresponding tab ID.\n * @param answer An ChatItem object.\n */\n public addChatItem = (tabId: string, chatItem: ChatItem): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_ITEM_ADD, { tabId, chatItem });\n MynahUITabsStore.getInstance().getTabDataStore(tabId).updateStore({\n chatItems: [\n ...MynahUITabsStore.getInstance().getTabDataStore(tabId).getValue('chatItems'),\n chatItem\n ]\n });\n }\n };\n\n /**\n * Updates the body of the last ChatItemType.ANSWER_STREAM chat item\n * @param body new body stream as string.\n */\n public updateLastChatAnswer = (tabId: string, updateWith: Partial<ChatItem>): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].updateLastChatAnswer(updateWith);\n }\n };\n\n /**\n * Updates only the UI with the given data for the given tab\n * Send tab id as an empty string to open a new tab!\n * If max tabs reached, will not return tabId\n * @param data A full or partial set of data with values.\n */\n public updateStore = (tabId: string | '', data: MynahUIDataModel): string | undefined => {\n if (tabId === '') {\n return MynahUITabsStore.getInstance().addTab({ store: { ...data } });\n } else if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n MynahUITabsStore.getInstance().updateTab(tabId, { store: { ...data } });\n }\n return tabId;\n };\n\n /**\n * Simply creates and shows a notification\n * @param props NotificationProps\n */\n public notify = (props: {\n duration?: number;\n type?: NotificationType;\n title?: string;\n content: string;\n onNotificationClick?: () => void;\n onNotificationHide?: () => void;\n }): void => {\n new Notification({\n ...props,\n onNotificationClick: () => {},\n }).notify();\n };\n}\n"],"names":["root","factory","exports","module","define","amd","self","___CSS_LOADER_EXPORT___","push","id","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","matchHtmlRegExp","string","escape","str","match","exec","html","index","lastIndex","charCodeAt","substring","e","t","a","pattern","lookbehind","alias","inside","n","bash","environment","RegExp","variable","greedy","number","operator","punctuation","entity","languages","shebang","comment","parameter","function","keyword","builtin","boolean","s","o","sh","shell","Prism","c","extend","insertBefore","char","macro","directive","expression","constant","clike","replace","r","l","trim","d","p","u","g","b","h","f","m","y","w","v","x","$","_","B","csharp","range","namespace","generic","preprocessor","E","R","z","S","j","attribute","target","A","F","P","U","Z","q","interpolation","dotnet","cs","css","atrule","rule","url","selector","property","important","rest","markup","tag","addInlined","addAttribute","java","annotation","generics","import","static","javascript","regex","hashbang","js","json","null","webmanifest","util","clone","jsx","spread","script","type","tagName","pop","openedBraces","splice","Token","hooks","add","language","tokens","less","lua","markdown","yaml","blockquote","table","code","title","hr","bold","italic","strike","forEach","toLowerCase","classes","highlight","parseInt","slice","Number","plugins","autoloader","Date","valueOf","Math","floor","random","attributes","loadLanguages","document","getElementById","innerHTML","textContent","amp","lt","gt","quot","String","fromCodePoint","fromCharCode","md","prolog","doctype","name","cdata","Object","defineProperty","value","mathml","svg","xml","ssml","atom","rss","mongodb","objectivec","objc","python","decorator","py","backreference","anchor","group","quantifier","alternation","scala","symbol","scss","parent","placeholder","statement","typescript","tsx","flags","at","ts","createRange","KeepMarkup","env","element","children","isActive","dropTokens","pos","processChildren","keepMarkup","processElement","nodeName","classList","contains","shouldKeep","posOpen","posClose","childNodes","child","nodeType","walk","elt","nodeState","nodeStart","node","nodeStartPos","nodeEnd","nodeEndPos","setStart","setEnd","appendChild","extractContents","insertNode","detach","highlightedCode","PLUGIN_NAME","NEW_LINE_EXP","config","lineNumbers","getLine","lineNumberRows","querySelector","lineNumberStart","getAttribute","lineNumberEnd","lineIndex","resize","resizeElements","assumeViewportIndependence","lastWidth","window","addEventListener","innerWidth","Array","prototype","call","querySelectorAll","pre","test","remove","lineNumbersWrapper","linesNum","lines","createElement","setAttribute","className","hasAttribute","style","counterReset","run","elements","filter","whiteSpace","getComputedStyle","currentStyle","infos","codeElement","lineNumberSizer","codeLines","split","display","oneLinerHeight","getBoundingClientRect","height","lineHeights","sizer","Boolean","info","line","childIndex","wrapper","lineNumber","_self","lang","uniqueId","plainTextGrammar","manual","disableWorkerMessageHandler","encode","isArray","objId","obj","deepClone","visited","key","hasOwnProperty","getLanguage","parentElement","setLanguage","currentScript","Error","err","src","stack","scripts","getElementsByTagName","defaultActivation","no","plain","plaintext","text","txt","redef","before","insert","grammar","ret","token","newToken","old","DFS","callback","propertyType","highlightAll","async","highlightAllUnder","container","apply","highlightElement","insertHighlightedCode","Worker","worker","filename","onmessage","evt","postMessage","immediateClose","tokenize","tokenList","LinkedList","addAfter","head","matchGrammar","array","next","tail","toArray","all","callbacks","matchedStr","matchPattern","lookbehindLength","startNode","startPos","rematch","patterns","cause","patternObj","global","currentNode","reach","removeCount","from","to","matchStr","after","removeFrom","prev","removeRange","nestedRematch","newNode","count","aliases","message","parse","close","highlightAutomaticallyCallback","readyState","defer","requestAnimationFrame","setTimeout","WorkerGlobalScope","includedCdataInside","def","attrName","Element","matches","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","extension","success","error","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","start","comma","end","parseRange","max","min","statusText","send","loadFile","fileHighlight","logged","console","warn","arguments","options","styleTagTransform","setAttributes","domAPI","insertStyleElement","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","idCountMap","identifiers","base","indexByIdentifier","sourceMap","references","updater","addElementStyle","byIndex","api","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","memo","styleTarget","HTMLIFrameElement","contentDocument","getTarget","styleElement","nonce","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","constructor","props","updateLabel","label","render","replaceWith","DomBuilder","getInstance","build","classNames","setEnabled","enabled","removeAttribute","primary","events","additionalEvents","click","onClick","icon","highlightersWithTooltip","markupStart","markupAttributes","markerIndex","markupEnd","PARTS_CLASS_NAME","PARTS_CLASS_NAME_VISIBLE","CardBody","processNode","contentString","matchingLanguage","elementFromNode","onLinkClick","href","isBlockCode","snippetLanguage","find","codeString","highlighter","SyntaxHighlighter","codeStringWithMarkup","keepHighlights","showCopyOptions","block","onCopiedToClipboard","getReferenceTrackerInformationFromElement","onInsertToCursorPosition","useParts","replaceChild","cloneNode","markerElements","mark","startIndexText","generateUID","startIndexTextElement","insertAdjacentElement","startIndex","innerText","indexOf","originalRefTrackerInfo","highlightRangeWithTooltip","recommendationContentSpan","showHighlightRangeTooltip","tooltipText","clearTimeout","highlightRangeTooltipTimeout","highlightRangeTooltip","Overlay","background","closeOnOutsideClick","referenceElement","currentTarget","removeOtherOverlays","dimOutside","verticalDirection","OverlayVerticalDirection","TO_TOP","horizontalDirection","OverlayHorizontalDirection","START_TO_RIGHT","body","hideHighlightRangeTooltip","getContentBodyChildren","incomingBody","generatedStartMarkup","calculatedStartIndex","calculatedEndIndex","marked","use","extensions","renderer","textPart","breaks","processedNode","emptyElement","highlightRangeElement","information","engagementStartTime","totalMouseDistanceTraveled","resetEngagement","previousMousePosition","mouseDownInfo","time","handleEngagement","interactionDistanceTraveled","onCardEngaged","engagementDurationTillTrigger","getTime","engagementType","EngagementType","INTERACTION","TIME","selectionDistanceTraveled","padding","border","persistent","mouseenter","clientX","clientY","mousemove","abs","mousedown","mouseup","mouseUpInfo","selectedText","getSelection","mouseleave","engagementEndTime","updateStack","typewriterItemIndex","previousTypewriterItemIndex","generateCard","generatedCard","getCardClasses","messageId","chatItem","ChatItemType","ANSWER_STREAM","Card","Config","texts","spinnerText","getCardContent","addClass","PROMPT","isChatItemEmpty","isNoContent","followUp","relatedContent","ANSWER","MynahUITabsStore","getTabDataStore","tabId","getValue","chatAvatar","fileList","engagement","MynahUIGlobalEvents","dispatch","MynahEventNames","CHAT_ITEM_ENGAGEMENT","commonBodyProps","LINK_CLICK","link","event","CODE_RESULT","filePaths","deletedFiles","referenceSuggestionLabel","contentBody","ChatItemTreeViewWrapper","files","codeReference","ChatItemSourceLinksContainer","referenceTrackerInformation","COPY_CODE_TO_CLIPBOARD","INSERT_CODE_TO_CURSOR_POSITION","canBeVoted","ChatItemRelevanceVote","ChatItemFollowUpContainer","getChatAvatar","Icon","MynahIcons","USER","MYNAH","getInsertedTypewriterPartsCss","fill","typewriterId","getInsertingTypewriterPartsCss","newWordsCount","timeForEach","updateCard","updateTimer","updateCardStack","updateWith","shift","newCardContent","upcomingWords","insertChild","removeClass","subscribe","showCroppedFollowupText","followupTooltipTimeout","elm","followupTooltip","hideCroppedFollowupText","itemAddListenerId","addListener","CHAT_ITEM_ADD","removeListener","followUpOption","disabled","pillText","MAX_LENGTH","FOLLOW_UP_CLICKED","hasClass","description","mouseover","getElementsByClassName","option","onclick","handleVoteChange","vote","CARD_VOTE","newChildren","feedbackThanks","RelevancyVoteType","DOWN","Button","feedbackReportButtonLabel","sendFeedbackListenerId","FEEDBACK_SET","SHOW_FEEDBACK_FORM","replaceChildren","UP","votingId","change","for","THUMBS_UP","THUMBS_DOWN","showMoreButtonBlock","DOWN_OPEN","SHOW_MORE_WEB_RESULTS_CLICK","sourceLink","SourceLinkHeader","showCardOnHover","SOURCE_LINK_CLICK","buildDropdownChildren","ref","CollapsibleContent","codeSuggestionWithReferenceTitle","license","ChatItemTreeViewLicense","tree","ChatItemTreeView","fileListToTree","codeSuggestions","clickFileToViewDiff","isOpen","depth","getClassNames","buildFolderNode","buildFileNode","updateTree","buildFolderChildren","childNode","folderItem","RIGHT_OPEN","cancelEvent","paddingLeft","fileItem","DOC","OPEN_DIFF","filePath","deleted","textDecoration","setCommand","command","promptTextInputCommand","onRemoveClick","linkClick","INFO_LINK_CLICK","addListenerToDataStore","newInfo","MAX_USER_INPUT","MAX_USER_INPUT_THRESHOLD","commandSelectorOpen","selectedCommand","updateAvailableCharactersIndicator","remainingChars","promptTextInput","promptTextInputMaxLength","getTextInputValue","remainingCharsIndicator","handleInputKeydown","blockedKeys","KeyMap","ENTER","ESCAPE","SPACE","TAB","BACK_SLASH","SLASH","navigationalKeys","ARROW_UP","ARROW_DOWN","includes","preventDefault","targetElement","filteredCommandsList","commandSelector","handleCommandSelection","clearTextArea","commandElements","nextElement","lastActiveElement","findIndex","commandElement","updateTextInputValue","quickActionCommands","quickActionGroup","newQuickActionCommandGroup","promptRegex","commands","toggleHidden","updateContent","getQuickCommandActions","BACKSPACE","shiftKey","ctrlKey","stretchWidth","onClose","sendPrompt","quickCommandList","quickActionCommandGroup","groupName","quickActionCommand","updateTextInputPlaceholder","focus","keepAttachment","clear","updateTextInputMaxLength","attachmentWrapper","codeSnippet","attachment","addText","textToAdd","ADD_CODE_SNIPPET","currentInputValue","selectedCodeSnippet","CHAT_PROMPT","prompt","escapedPrompt","ChatPromptInputCommand","PromptTextInput","initMaxLength","onKeydown","onInput","sendButton","SendButton","CodeSnippet","textInputLength","currentSelectedCodeMaxLength","croppedSelectedCodeSnippet","updateSelectedCodeSnippet","REMOVE_CODE_SNIPPET","insertChatItem","chatItemCard","ChatItemCard","lastChatItemCard","AI_PROMPT","SYSTEM_PROMPT","chatItemsContainer","scrollTop","scrollHeight","updateLastChatAnswer","addToPrompt","promptInput","chatItems","chatItemToInsert","lastItem","loadingChat","showCancelButton","intermediateBlockContainer","ChatPromptInput","promptInputElement","promptInfo","ChatPromptInputInfo","onStopChatResponse","stopGenerating","BLOCK","initChatItems","showPreviewOverLay","markdownText","previewOverlay","closePreviewOverLay","renderCodeSnippetWidget","CANCEL","lastCodeSnippet","snippetWidget","_render","CodeSnippetWidget","_props","updateStore","updatePromptTextInputSizer","promptTextInputSizer","defaultPlaceholder","maxLength","maxlength","initialDisabledState","tabindex","rows","keydown","input","blur","isDisabled","placeholderText","ENVELOPE_SEND","uid","initialCollapsedState","onCollapseStateChange","checked","val","newIcon","getComment","keyup","onChange","initComment","feedbackPayload","selectedOption","onFeedbackSet","feedbackData","feedbackComment","feedbackSelect","feedbackOptions","feedbackFormWrapper","show","initPayload","createPortal","MynahPortalNames","FEEDBACK_FORM","feedbackFormContainer","feedbackOptionsWrapper","FeedbackFormComment","feedbackSubmitButton","submit","feedbackFormTitle","feedbackFormOptionsLabel","feedbackFormCommentLabel","cancel","MynahUIIconImporter","mynahIconMappings","MENU","MINUS","SEARCH","PLUS","CHAT","LINK","EXTERNAL","CALENDAR","MEGAPHONE","NOTIFICATION","EYE","ELLIPSIS","OK","UP_OPEN","LEFT_OPEN","RESIZE_FULL","RESIZE_SMALL","OK_CIRCLED","INFO","WARNING","ERROR","STAR","LIGHT_BULB","REFRESH","PLAY","PAUSE","CODE_BLOCK","COPY","CURSOR_INSERT","TEXT_SELECT","REVERT","keys","iconKey","iconName","instance","tabIdTitleSubscriptions","tabIdChatItemsSubscriptions","getTabOptionsFromTabStoreData","tabs","getAllTabs","store","tabTitle","selected","isSelected","getTabsRender","selectedTabId","tab","assignListener","toggleGroup","Toggle","selectTab","onRemove","removeTab","tabsLength","maxTabs","showMaxReachedOverLay","noMoreTabsTooltip","hideMaxReachedOverLay","addTab","maxReachedOverlay","TO_BOTTOM","CENTER","updateOptionTitle","updateOptionIndicator","removeListenerAssignments","removeListenerFromDataStore","dblclick","getSelectedTabId","tabData","addOption","newSelectedTab","removeOption","snapToOption","setValue","getNextCalculatedTop","prevNotifications","DS","prevNotificationRectangle","top","OVERLAY_MARGIN","getChildren","duration","NotificationType","notify","notificationOverlay","referencePoint","left","documentElement","clientWidth","TO_LEFT","onNotificationHide","onNotificationClick","guid","windowBlurHandler","removeEventListener","bind","getCalculatedLeft","referenceRectangle","width","TO_RIGHT","END_TO_LEFT","getCalculatedWidth","getCalculatedTop","START_TO_BOTTOM","END_TO_TOP","innerContainer","hidden","calculatedTop","calculatedLeft","calculatedWidth","removeAllPortals","OVERLAY","containerRectangle","winHeight","clientHeight","innerHeight","winWidth","comparingWidth","comparingHeight","suggestion","getSourceMetaBlock","metadataUnion","metaItems","metadataKey","metadata","isAccepted","lastActivityDate","getTimeDiff","answerCount","stars","forks","score","showLinkPreview","sourceLinkPreviewTimeout","sourceLinkPreview","SourceLinkCard","hideLinkPreview","splitUrl","origin","getOrigin","urlPart","SourceLinkBody","IMPORTED_LANGS","highlighters","textReplacement","ellipsis","getSelectedCodeContextMenu","getSelectedCode","copyToClipboard","textToSendClipboard","notificationText","hasFocus","navigator","clipboard","writeText","then","Notification","catch","codeMarkup","escapedCodeBlock","preElement","showLineNumbers","copy","selectedCode","insertAtCursorLabel","startingLineNumber","ToggleOptionItem","disabledTooltip","disabledTooltipTimer","auxclick","transformScroll","deltaY","scrollLeft","updateSelectionRender","currentValue","elmToCheck","nextSibling","indication","offsetLeft","direction","wheel","configDefaults","mainTitle","showMore","save","differenceInMs","separator","delta","years","months","weeks","days","hours","minutes","combined","EmptyDomBuilderObject","rootSelector","portals","builderObject","toggleClass","position","childItem","insertAdjacentText","clearChildren","removePersistent","extendDomFunctionality","domElement","extendedElement","domBuilderObject","readyToBuildObject","buildedDom","eventName","attributeName","HTMLElement","domToUpdate","portalName","portalDom","getPortal","removePortal","portalsWithName","htmlDecode","nodeValue","stopPropagation","stopImmediatePropagation","eventKey","handler","listenerId","listeners","modifiedFilePaths","deletedFilePaths","splitFilePaths","reduce","acc","fileOrFolder","oldItem","newItem","paths","firstPart","secondPart","PrimitiveObjectTypes","EmptyMynahUIDataModel","defaults","cancelButtonWhenLoading","showChatAvatars","promptInputPlaceholder","promptInputInfo","promptInputDisabledState","initialData","setDefaults","getDefaults","storeKey","subscriptionId","subscriptions","unsubscribe","structuredClone","getDefaultValue","skipSubscribers","assign","resetStore","RESET_STORE","create","selectedTabChange","tabDefaults","tabsStore","tabsDataStore","deselectAllTabs","MynahUIDataStore","informSubscribers","wasSelected","tabIds","updateTab","subscriberKey","getTab","removeAllTabs","site","URL","_getDefaults","baseUrl","gfm","headerIds","headerPrefix","langPrefix","mangle","pedantic","sanitize","sanitizer","silent","smartypants","tokenizer","walkTokens","xhtml","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","unescapeTest","charAt","caret","edit","opt","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","prot","decodeURIComponent","baseUrls","justDomain","rtrim","relativeBase","protocol","domain","resolveUrl","encodeURI","noopTest","splitCells","tableRow","cells","offset","escaped","curr","invert","suffLen","currChar","outputLink","cap","raw","lexer","state","inLink","inlineTokens","_Tokenizer","rules","space","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","indentCodeCompensation","inline","_escapes","heading","trimmed","blockTokens","bull","isordered","ordered","loose","items","itemRegex","itemContents","endsWithBlankLine","endEarly","repeat","nextLine","indent","trimLeft","search","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","ischecked","istask","task","trimRight","spacers","hasMultipleLineBreaks","some","paragraph","header","align","row","lheading","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","level","findClosingBracket","linkLen","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","_punctuation","blockSkip","anyPunctuation","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","_Lexer","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","leading","extTokenizer","startBlock","Infinity","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","lastIndexOf","startInline","_Renderer","infostring","quote","slugger","slug","listitem","checkbox","tablerow","tablecell","cleanHref","image","_TextRenderer","_Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","_Parser","textRenderer","parseInline","renderers","genericToken","parser","headingToken","codeToken","tableToken","cell","blockquoteToken","listToken","itemBody","unshift","htmlToken","paragraphToken","textToken","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","Set","preprocess","postprocess","Marked","setOptions","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Slugger","Hooks","args","values","childTokens","pack","opts","ext","prevRenderer","extLevel","prop","rendererFunc","rendererKey","tokenizerFunc","tokenizerKey","prevTokenizer","hooksFunc","hooksKey","prevHook","passThroughHooks","has","arg","Promise","resolve","packWalktokens","optOrCallback","origOpt","throwError","checkDeprecations","resultCallback","done","pending","msg","reject","markedInstance","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","enumerable","get","globalThis","Function","Symbol","toStringTag","nc","chatWrappers","addGlobalListeners","onChatPrompt","onFollowUpClicked","onShowMoreWebResultsClick","onSendFeedback","onChatItemEngagement","onCopyCodeToClipboard","onCodeInsertToCursorPosition","onSourceLinkClick","onInfoLinkClick","onVote","onResetStore","onOpenDiff","addToUserPrompt","addChatItem","initTabs","tabContentsWrapper","ChatWrapper","feedbackForm","FeedbackForm","tabsWrapper","Tabs","onTabChange","WRAPPER","onTabAdd","onTabRemove","onReady"],"sourceRoot":""}
|