@aws/mynah-ui 3.3.0 → 3.3.2
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/.eslintrc.js +2 -0
- package/README.md +3 -1
- package/dist/helper/store.d.ts +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/static.d.ts +1 -2
- package/package.json +1 -1
- package/docs/CONFIG.md +0 -190
- package/docs/DATAMODEL.md +0 -932
- package/docs/PROPERTIES.md +0 -615
- package/docs/STARTUP.md +0 -50
- package/docs/STYLING.md +0 -175
- package/docs/USAGE.md +0 -325
- package/docs/img/code-attachment.png +0 -0
- package/docs/img/data-model/chatItems/answer.png +0 -0
- package/docs/img/data-model/chatItems/answerStream.png +0 -0
- package/docs/img/data-model/chatItems/body.png +0 -0
- package/docs/img/data-model/chatItems/canBeVoted.png +0 -0
- package/docs/img/data-model/chatItems/codeReference-1.png +0 -0
- package/docs/img/data-model/chatItems/codeReference-2.png +0 -0
- package/docs/img/data-model/chatItems/codeResult.png +0 -0
- package/docs/img/data-model/chatItems/followUp-1.png +0 -0
- package/docs/img/data-model/chatItems/followUp-2.png +0 -0
- package/docs/img/data-model/chatItems/notification-1.png +0 -0
- package/docs/img/data-model/chatItems/notification-2.png +0 -0
- package/docs/img/data-model/chatItems/notification-3.png +0 -0
- package/docs/img/data-model/chatItems/notification-4.png +0 -0
- package/docs/img/data-model/chatItems/prompt.png +0 -0
- package/docs/img/data-model/chatItems/relatedContent-1.png +0 -0
- package/docs/img/data-model/chatItems/relatedContent-2.png +0 -0
- package/docs/img/data-model/chatItems/relatedContent-3.png +0 -0
- package/docs/img/data-model/chatItems/systemPrompt.png +0 -0
- package/docs/img/data-model/tabStore/loadingChat-1.png +0 -0
- package/docs/img/data-model/tabStore/loadingChat-2.png +0 -0
- package/docs/img/data-model/tabStore/promptInputDisabledState.png +0 -0
- package/docs/img/data-model/tabStore/promptInputPlaceholder.png +0 -0
- package/docs/img/data-model/tabStore/quickActionCommands.png +0 -0
- package/docs/img/data-model/tabStore/stopChatResponse.png +0 -0
- package/docs/img/data-model/tabStore/tabTitle.png +0 -0
- package/docs/img/feedbackOptions.png +0 -0
- package/docs/img/maxTabs1.png +0 -0
- package/docs/img/noPrompt.png +0 -0
- package/docs/img/notification.png +0 -0
- package/docs/img/onChatItemEngagement.png +0 -0
- package/docs/img/onChatPrompt.png +0 -0
- package/docs/img/onCodeInsertToCursorPosition.png +0 -0
- package/docs/img/onCopyCodeToClipboard.png +0 -0
- package/docs/img/onFollowupClicked.png +0 -0
- package/docs/img/onInfoLinkClick.png +0 -0
- package/docs/img/onLinkClick.png +0 -0
- package/docs/img/onOpenDiff.png +0 -0
- package/docs/img/onSendFeedback-1.png +0 -0
- package/docs/img/onSendFeedback-2.png +0 -0
- package/docs/img/onSendFeedback-3.png +0 -0
- package/docs/img/onShowMoreClick.png +0 -0
- package/docs/img/onSourceLinkClick.png +0 -0
- package/docs/img/onStopChatResponse.png +0 -0
- package/docs/img/onTabAdd.png +0 -0
- package/docs/img/onTabChange.png +0 -0
- package/docs/img/onTabRemove.png +0 -0
- package/docs/img/onVote.png +0 -0
- package/docs/img/prompt-with-code-attached.png +0 -0
- package/docs/img/texts/codeFileSuggestions.png +0 -0
- package/docs/img/texts/copyInsertToCursor.png +0 -0
- package/docs/img/texts/feedbackForm.png +0 -0
- package/docs/img/texts/mainTitle.png +0 -0
- package/docs/img/texts/noMoreTabs.png +0 -0
- package/docs/img/texts/spinnerText.png +0 -0
- package/docs/img/texts/stopGenerating.png +0 -0
- package/docs/img/texts/voteAndSourceActions.png +0 -0
- package/docs/img/theming-1.png +0 -0
- package/docs/img/theming-2.png +0 -0
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-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-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));--mynah-color-highlight: rgba(255, 179, 0, 0.25);--mynah-color-highlight-text: #886411;--mynah-color-toggle: var(--vscode-sideBar-background);--mynah-color-toggle-reverse: rgba(0, 0, 0, 0.5);--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-card-bg: var(--vscode-editor-background);--mynah-shadow-generic: none;--mynah-shadow-card: none;--mynah-shadow-overlay: 0 -5px 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-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-very-short-transition: all 500ms 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-text-flow-transition: all 700ms cubic-bezier(0.35, 1.2, 0, 1), transform 700ms cubic-bezier(0.2, 1.05, 0, 1)}@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}#mynah-wrapper>.mynah-ui-tab-contents-wrapper:first-child>.mynah-chat-wrapper{display:flex}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)}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-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>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-toggle);color:var(--mynah-color-toggle-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-card-radius);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: calc(-1 * var(--mynah-sizing-1));--overlayTopPos: 0;--overlayInnerHorizontalOrigin: left;--overlayInnerVerticalOrigin: top;position:absolute;display:block;overflow:visible;border-radius:var(--mynah-card-radius);max-width:calc(100vw - var(--mynah-sizing-8)) !important;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 bottom;border-radius:inherit}.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-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:calc(var(--mynah-border-width) + var(--mynah-card-radius)/2);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:calc(var(--mynah-border-width) + var(--mynah-card-radius)/2);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:not(.hidden)>.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 !important}.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-2);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-shown{text-overflow:ellipsis}.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);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.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:auto;width:auto;top:0;right:0;bottom: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-wrapper+.mynah-chat-prompt-input-info{padding-top:0;margin-top:calc(-1*var(--mynah-sizing-2))}.mynah-chat-wrapper>.mynah-chat-prompt-input-info{display:flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;padding:var(--mynah-sizing-4)}.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-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-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));\\n\\n --mynah-color-highlight: rgba(255, 179, 0, 0.25);\\n --mynah-color-highlight-text: #886411;\\n\\n /* previously it was context */\\n --mynah-color-toggle: var(--vscode-sideBar-background);\\n --mynah-color-toggle-reverse: rgba(0, 0, 0, 0.5);\\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-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-overlay: 0 -5px 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\\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-very-short-transition: all 500ms 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-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\",\"@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 &:first-child {\\n > .mynah-chat-wrapper {\\n display: flex;\\n }\\n }\\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 }\\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-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 }\\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-toggle);\\n color: var(--mynah-color-toggle-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-card-radius);\\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: calc(-1 * var(--mynah-sizing-1));\\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 max-width: calc(100vw - var(--mynah-sizing-8))!important;\\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 bottom;\\n border-radius: inherit;\\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 }\\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-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;\\n left: var(--mynah-border-width);\\n right: calc(var(--mynah-border-width) + (var(--mynah-card-radius) / 2));\\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 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\",\"&.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 &:not(.hidden) > .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 !important;\\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-2);\\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-shown {\\n text-overflow: ellipsis;\\n }\\n &::placeholder {\\n color: var(--mynah-color-text-weak);\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n }\\n &:not(.mynah-chat-prompt-input-sizer) {\\n position: absolute;\\n height: auto;\\n width: auto;\\n top: 0;\\n right: 0;\\n bottom: 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 & + .mynah-chat-prompt-input-info {\\n padding-top: 0;\\n margin-top: calc(-1 * var(--mynah-sizing-2));\\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: var(--mynah-sizing-4);\\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\n const isChatItemEmpty = emptyCheckDom.textContent === null || emptyCheckDom.textContent.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 appearance time cannot exceed 50ms\n // Stack's total appearance 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';\nimport { Card } from '../card/card';\nimport { CardBody } from '../card/card-body';\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: true,\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 new Card({\n border: false,\n children: [\n new CardBody({\n body: content\n }).render\n ]\n }).render\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 const promptData = {\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 MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_PROMPT, promptData);\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().addListenerToDataStore(this.props.tabId, 'loadingChat', (loadingChat: boolean) => {\n if (loadingChat) {\n this.render.addClass('loading');\n } else {\n this.render.removeClass('loading');\n }\n });\n\n MynahUITabsStore.getInstance().addListenerToDataStore(this.props.tabId, 'cancelButtonWhenLoading', (showCancelButton: boolean) => {\n if (showCancelButton) {\n this.intermediateBlockContainer.removeClass('hidden');\n } else {\n this.intermediateBlockContainer.addClass('hidden');\n }\n });\n\n this.chatItemsContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-items-container' ],\n persistent: true,\n children: [],\n });\n\n this.promptInfo = new ChatPromptInputInfo({ tabId: this.props.tabId }).render;\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 if (Config.getInstance().config.showPromptField) {\n this.promptInput = new ChatPromptInput({ tabId: this.props.tabId });\n this.promptInputElement = this.promptInput.render;\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: true,\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 new SourceLinkCard({ sourceLink }).render\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 border: false,\n background: false,\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 showPromptField: true,\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 /**\n * Attached code under the prompt input field\n */\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 showPromptField: boolean;\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).slice(0, Config.getInstance().config.maxTabs).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 if (Config.getInstance().config.maxTabs > 1) {\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\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 (Config.getInstance().config.showPromptField && MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].addToPrompt(prompt);\n }\n };\n\n /**\n * Adds a new item to 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 * This function returns the selected tab id if there is any, otherwise returns undefined\n * @returns string selectedTabId or undefined\n */\n public getSelectedTabId = (): string | undefined => {\n const selectedTabId = MynahUITabsStore.getInstance().getSelectedTabId();\n return selectedTabId === '' ? undefined : selectedTabId;\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","emptyCheckDom","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","promptData","prompt","escapedPrompt","CHAT_PROMPT","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","promptInfo","ChatPromptInputInfo","onStopChatResponse","stopGenerating","BLOCK","showPromptField","ChatPromptInput","promptInputElement","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":""}
|
|
1
|
+
{"version":3,"file":"main.js","mappings":"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KAAKoa,OAAO,IAEbuF,OACH3f,KAAKu7B,qBAAqB5b,WAKpC,4GC3IF,gBACA,UAEA,IAAYkL,GAAZ,SAAYA,GACV,gBACA,cACA,gBACA,kBACA,cACA,cACA,cACA,YACA,sBACA,kBACA,sBACA,wBACA,8BACA,YACA,sBACA,UACA,oBACA,wBACA,0BACA,wBACA,4BACA,8BACA,gBACA,0BACA,cACA,oBACA,gBACA,wBACA,4BACA,cACA,0BACA,gCACA,oBACA,cACA,cACA,gBACA,0BACA,cACA,gCACA,4BACA,iBACD,CA1CD,CAAYA,IAAU,aAAVA,EAAU,KAgDtB,aAEE,WAAAtL,CAAaC,GACX,EAAAqc,oBAAoB/b,cACpB9f,KAAK2f,OAAS,EAAAE,WAAWC,cAAcC,MAAM,CAC3CzW,KAAM,IACN0W,WAAY,CACV,gBACQ,iBAAiBR,EAAMiB,eACE3f,IAArB0e,EAAMQ,WAA2BR,EAAMQ,WAAa,IAElEjR,SAAU,CAAE,CACVzF,KAAM,OACNoC,WAAY,CACV,cAAe,QAEjBqD,SAAU,CAAEyQ,EAAMiB,SAGxB,wMCrEF,gBACA,UAEA,aACA,aACA,aACA,YACA,aACA,YACA,aACA,aACA,aACA,aACA,aACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,aAEA,MAAaob,EAEX,cACE,MAAMC,EAAoB,CACxB/Q,MAAA,UACAgR,KAAA,UACAC,MAAA,UACAC,OAAA,UACAC,KAAA,UACAC,KAAA,UACAC,KAAA,UACA1L,IAAA,UACA2L,SAAA,UACA5D,OAAA,UACA6D,SAAA,UACAC,UAAA,UACAC,aAAA,UACAC,IAAA,UACAC,SAAA,UACAC,GAAA,UACAC,QAAA,UACAhO,UAAA,UACA0B,WAAA,UACAuM,UAAA,UACAC,YAAA,UACAC,aAAA,UACAhF,MAAA,UACAiF,WAAA,UACAC,KAAA,UACAC,QAAA,UACAC,MAAA,UACA1O,UAAA,UACAC,YAAA,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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-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-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));--mynah-color-highlight: rgba(255, 179, 0, 0.25);--mynah-color-highlight-text: #886411;--mynah-color-toggle: var(--vscode-sideBar-background);--mynah-color-toggle-reverse: rgba(0, 0, 0, 0.5);--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-card-bg: var(--vscode-editor-background);--mynah-shadow-generic: none;--mynah-shadow-card: none;--mynah-shadow-overlay: 0 -5px 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-card-radius: var(--mynah-sizing-2);--mynah-button-radius: var(--mynah-sizing-1);--mynah-bottom-panel-transition: all 850ms cubic-bezier(0.25, 1, 0, 1);--mynah-very-short-transition: all 600ms cubic-bezier(0.25, 1, 0, 1);--mynah-very-long-transition: all 1650ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition: all 550ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-short-transition-rev: all 580ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-rev-opacity: opacity 750ms cubic-bezier(0.35, 1, 0, 1);--mynah-text-flow-transition: all 800ms cubic-bezier(0.35, 1.2, 0, 1), transform 800ms cubic-bezier(0.2, 1.05, 0, 1)}@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}#mynah-wrapper>.mynah-ui-tab-contents-wrapper:first-child>.mynah-chat-wrapper{display:flex}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)}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-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>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-toggle);color:var(--mynah-color-toggle-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-card-radius);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: calc(-1 * var(--mynah-sizing-1));--overlayTopPos: 0;--overlayInnerHorizontalOrigin: left;--overlayInnerVerticalOrigin: top;position:absolute;display:block;overflow:visible;border-radius:var(--mynah-card-radius);max-width:calc(100vw - var(--mynah-sizing-8)) !important;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 bottom;border-radius:inherit}.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;background-color:inherit}.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-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:calc(var(--mynah-border-width) + var(--mynah-card-radius)/2);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:calc(var(--mynah-border-width) + var(--mynah-card-radius)/2);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:not(.hidden)>.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 !important}.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-2);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-shown{text-overflow:ellipsis}.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);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.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:auto;width:auto;top:0;right:0;bottom: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-wrapper+.mynah-chat-prompt-input-info{padding-top:0;margin-top:calc(-1*var(--mynah-sizing-2))}.mynah-chat-wrapper>.mynah-chat-prompt-input-info{display:flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;padding:var(--mynah-sizing-4)}.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-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-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));\\n\\n --mynah-color-highlight: rgba(255, 179, 0, 0.25);\\n --mynah-color-highlight-text: #886411;\\n\\n /* previously it was context */\\n --mynah-color-toggle: var(--vscode-sideBar-background);\\n --mynah-color-toggle-reverse: rgba(0, 0, 0, 0.5);\\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-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-overlay: 0 -5px 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\\n --mynah-card-radius: var(--mynah-sizing-2);\\n --mynah-button-radius: var(--mynah-sizing-1);\\n\\n --mynah-bottom-panel-transition: all 850ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-very-short-transition: all 600ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-very-long-transition: all 1650ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition: all 550ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-short-transition-rev: all 580ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-rev-opacity: opacity 750ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-text-flow-transition: all 800ms cubic-bezier(0.35, 1.2, 0, 1),\\n transform 800ms cubic-bezier(0.2, 1.05, 0, 1);\\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 &:first-child {\\n > .mynah-chat-wrapper {\\n display: flex;\\n }\\n }\\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 }\\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-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 }\\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-toggle);\\n color: var(--mynah-color-toggle-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-card-radius);\\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: calc(-1 * var(--mynah-sizing-1));\\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 max-width: calc(100vw - var(--mynah-sizing-8))!important;\\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 bottom;\\n border-radius: inherit;\\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 }\\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 background-color: inherit;\\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-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;\\n left: var(--mynah-border-width);\\n right: calc(var(--mynah-border-width) + (var(--mynah-card-radius) / 2));\\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 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\",\"&.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 &:not(.hidden) > .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 !important;\\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-2);\\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-shown {\\n text-overflow: ellipsis;\\n }\\n &::placeholder {\\n color: var(--mynah-color-text-weak);\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n }\\n &:not(.mynah-chat-prompt-input-sizer) {\\n position: absolute;\\n height: auto;\\n width: auto;\\n top: 0;\\n right: 0;\\n bottom: 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 & + .mynah-chat-prompt-input-info {\\n padding-top: 0;\\n margin-top: calc(-1 * var(--mynah-sizing-2));\\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: var(--mynah-sizing-4);\\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 && highlightRangeWithTooltip.recommendationContentSpan !== 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\n const isChatItemEmpty = emptyCheckDom.textContent === null || emptyCheckDom.textContent.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 // Update item inside the store\n if (this.props.chatItem.messageId !== undefined) {\n const currentTabChatItems = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId)?.getStore()?.chatItems;\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).updateStore({\n chatItems: currentTabChatItems?.map((chatItem: ChatItem) => {\n if (chatItem.messageId === this.props.chatItem.messageId) {\n return this.props.chatItem;\n }\n return chatItem;\n })\n }, true);\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 appearance time cannot exceed 50ms\n // Stack's total appearance 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';\nimport { Card } from '../card/card';\nimport { CardBody } from '../card/card-body';\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: true,\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 new Card({\n border: false,\n children: [\n new CardBody({\n body: content\n }).render\n ]\n }).render\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 const promptData = {\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 MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_PROMPT, promptData);\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().addListenerToDataStore(this.props.tabId, 'loadingChat', (loadingChat: boolean) => {\n if (loadingChat) {\n this.render.addClass('loading');\n } else {\n this.render.removeClass('loading');\n }\n });\n\n MynahUITabsStore.getInstance().addListenerToDataStore(this.props.tabId, 'cancelButtonWhenLoading', (showCancelButton: boolean) => {\n if (showCancelButton) {\n this.intermediateBlockContainer.removeClass('hidden');\n } else {\n this.intermediateBlockContainer.addClass('hidden');\n }\n });\n\n this.chatItemsContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-items-container' ],\n persistent: true,\n children: [],\n });\n\n this.promptInfo = new ChatPromptInputInfo({ tabId: this.props.tabId }).render;\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 if (Config.getInstance().config.showPromptField) {\n this.promptInput = new ChatPromptInput({ tabId: this.props.tabId });\n this.promptInputElement = this.promptInput.render;\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: true,\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 new SourceLinkCard({ sourceLink }).render\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 border: false,\n background: false,\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 showPromptField: true,\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 * Get the current store data\n */\n public getStore = (): MynahUIDataModel | null => this.store;\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 => {\n const clonedTabs = structuredClone(this.tabsStore) as MynahUITabStoreModel;\n Object.keys(clonedTabs).forEach(tabId => {\n clonedTabs[tabId].store = structuredClone(this.getTabDataStore(tabId).getStore()) ?? {};\n });\n return clonedTabs;\n };\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 /**\n * Attached code under the prompt input field\n */\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}\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 showPromptField: boolean;\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).slice(0, Config.getInstance().config.maxTabs).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 if (Config.getInstance().config.maxTabs > 1) {\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\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 (Config.getInstance().config.showPromptField && MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].addToPrompt(prompt);\n }\n };\n\n /**\n * Adds a new item to 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 * This function returns the selected tab id if there is any, otherwise returns undefined\n * @returns string selectedTabId or undefined\n */\n public getSelectedTabId = (): string | undefined => {\n const selectedTabId = MynahUITabsStore.getInstance().getSelectedTabId();\n return selectedTabId === '' ? undefined : selectedTabId;\n };\n\n /**\n * Returns all tabs with their store information\n * @returns string selectedTabId or undefined\n */\n public getAllTabs = (): MynahUITabStoreModel => MynahUITabsStore.getInstance().getAllTabs();\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: props.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","emptyCheckDom","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","currentTabChatItems","getStore","chatItems","updateStore","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","promptData","prompt","escapedPrompt","CHAT_PROMPT","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","chatItemToInsert","lastItem","loadingChat","showCancelButton","intermediateBlockContainer","promptInfo","ChatPromptInputInfo","onStopChatResponse","stopGenerating","BLOCK","showPromptField","ChatPromptInput","promptInputElement","initChatItems","showPreviewOverLay","markdownText","previewOverlay","closePreviewOverLay","renderCodeSnippetWidget","CANCEL","lastCodeSnippet","snippetWidget","_render","CodeSnippetWidget","_props","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","clonedTabs","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":""}
|