@ckeditor/ckeditor5-code-block 45.0.0-alpha.9 → 45.1.0-alpha.0
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/build/code-block.js +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
- package/src/codeblockconfig.d.ts +1 -0
- package/src/codeblockediting.js +1 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js","../src/utils.ts","../src/codeblockcommand.ts","../src/indentcodeblockcommand.ts","../src/outdentcodeblockcommand.ts","../src/converters.ts","../src/codeblockediting.ts","../src/codeblockui.ts","../src/codeblock.ts"],"names":["getNormalizedAndLocalizedLanguageDefinitions","editor","t","languageDefs","config","get","def","label","class","undefined","language","getPropertyAssociation","key","value","association","newKey","split","shift","getLeadingWhiteSpaces","textNode","data","match","rawSnippetTextToViewDocumentFragment","writer","text","fragment","createDocumentFragment","textLines","items","reduce","nodes","line","lineIndex","push","length","createElement","appendChild","getIndentOutdentPositions","model","selection","document","positions","isCollapsed","anchor","walker","getFirstRange","getWalker","ignoreElementEnd","direction","item","node","is","parent","previousSibling","startOffset","position","createPositionAt","every","pos","isEqual","isModelSelectionInCodeBlock","firstBlock","first","getSelectedBlocks","canBeCodeBlock","schema","element","isLimit","checkChild","getCodeBlockAriaAnnouncement","languagesToLabels","codeBlockLanguage","getAttribute","getTextNodeAtLineStart","createPositionBefore","nodeBefore","nodeAtStart","nodeAfter","CodeBlockCommand","Command","constructor","_lastLanguage","_getValue","isEnabled","_checkEnabled","execute","options","normalizedLanguagesDefs","firstLanguageInConfig","blocks","Array","from","forceValue","getLanguage","change","_applyCodeBlock","_removeCodeBlock","isCodeBlock","allowedBlocks","filter","block","rename","setAttribute","removeDisallowedAttributes","getChildren","child","forEach","remove","reverse","currentBlock","i","nextBlock","appendElement","merge","codeBlocks","range","createRangeOn","getItems","elementAfter","removeAttribute","lastLanguage","defaultLanguage","usePreviousLanguageChoice","IndentCodeBlockCommand","_indentSequence","indentSequenceTextElement","createText","insertContent","OutdentCodeBlockCommand","getLastOutdentableSequenceRange","deleteContent","createSelection","some","sequence","nodeAtPosition","leadingWhiteSpaces","lastIndexOfSequence","lastIndexOf","createRange","modelToViewCodeBlockInsertion","useLabels","languagesToClasses","evt","conversionApi","mapper","consumable","consume","targetViewPosition","toViewPosition","preAttributes","spellcheck","codeAttributes","code","createContainerElement","pre","insert","bindElements","modelToDataViewSoftBreakInsertion","name","dataViewToModelCodeBlockInsertion","editingView","classesToLanguages","defaultLanguageName","viewCodeElement","viewItem","viewPreElement","modelCursor","findAncestor","test","codeBlock","viewChildClasses","getClassNames","className","hasAttribute","convertChildren","safeInsert","updateConversionResult","dataViewToModelTextNewlinesInsertion","map","lastLine","getShiftedBy","offsetSize","softBreak","createPositionAfter","modelRange","dataViewToModelOrphanNodeConsumer","preElement","preChildren","childCodeElement","find","DEFAULT_ELEMENT","CodeBlockEditing","Plugin","pluginName","isOfficialPlugin","requires","ShiftEnter","define","languages","indentSequence","view","editing","commands","add","listenTo","commandName","shiftKey","command","stopPropagation","preventDefault","stop","context","register","allowWhere","allowChildren","disallowChildren","allowAttributes","allowAttributesOf","isBlock","addAttributeCheck","attributeName","getItem","isFormatting","getAttributeProperties","downcastDispatcher","on","priority","upcastDispatcher","insertionRange","targetRanges","toModelRange","start","dataTransfer","getData","UpcastWriter","content","plugins","has","ClipboardPipeline","contentRange","createRangeIn","hasSameParentAs","focus","docFragment","return","childCount","containsEntireContent","getAttributes","append","newDocumentFragment","getChild","checkAttribute","indent","outdent","registerChildCommand","positionParent","getLastPosition","leaveBlockStartOnEnter","isSoft","leaveBlockEndOnEnter","breakLineOnEnter","_initAriaAnnouncements","ui","lastFocusedCodeBlock","focusParent","ariaLiveAnnouncer","announce","modelDoc","lastSelectionPosition","insertText","isSoftEnter","isAtStart","isSoftBreakNode","newBlock","setSelection","scrollToTheSelection","emptyLineRangeToRemoveOnEnter","isAtEnd","isEmptyishTextNode","CodeBlockUI","componentFactory","normalizedLanguageDefs","itemDefinitions","_getLanguageListItemDefinitions","locale","dropdownView","createDropdown","SplitButtonView","splitButtonView","buttonView","accessibleLabel","set","tooltip","icon","IconCodeBlock","isToggleable","bind","to","source","_codeBlockLanguage","addListToDropdown","role","ariaLabel","menuView","MenuBarMenuView","listView","MenuBarMenuListView","definition","listItemView","MenuBarMenuListItemView","MenuBarMenuListItemButtonView","Object","keys","delegate","children","panelView","Collection","languageDef","type","ViewModel","withText","CodeBlock"],"mappings":"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,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACxD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACzD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS;AACxE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACxD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;AAC9F,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;AAC9F,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;AAC9F,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS;AAC3G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;AAC3G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;AAC3G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;AAC3G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACtG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACtG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS;AACzG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;AACvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;AACvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { ShiftEnter } from '@ckeditor/ckeditor5-enter/dist/index.js';\nimport { UpcastWriter } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { ClipboardPipeline } from '@ckeditor/ckeditor5-clipboard/dist/index.js';\nimport { first, Collection } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { createDropdown, SplitButtonView, addListToDropdown, MenuBarMenuView, MenuBarMenuListView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView, ViewModel } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { IconCodeBlock } from '@ckeditor/ckeditor5-icons/dist/index.js';\n\n/**\n * Returns code block languages as defined in `config.codeBlock.languages` but processed:\n *\n * * To consider the editor localization, i.e. to display {@link module:code-block/codeblockconfig~CodeBlockLanguageDefinition}\n * in the correct language. There is no way to use {@link module:utils/locale~Locale#t} when the user\n * configuration is defined because the editor does not exist yet.\n * * To make sure each definition has a CSS class associated with it even if not specified\n * in the original configuration.\n */ function getNormalizedAndLocalizedLanguageDefinitions(editor) {\n const t = editor.t;\n const languageDefs = editor.config.get('codeBlock.languages');\n for (const def of languageDefs){\n if (def.label === 'Plain text') {\n def.label = t('Plain text');\n }\n if (def.class === undefined) {\n def.class = `language-${def.language}`;\n }\n }\n return languageDefs;\n}\n/**\n * Returns an object associating certain language definition properties with others. For instance:\n *\n * For:\n *\n * ```ts\n * const definitions = {\n * \t{ language: 'php', class: 'language-php', label: 'PHP' },\n * \t{ language: 'javascript', class: 'js', label: 'JavaScript' },\n * };\n *\n * getPropertyAssociation( definitions, 'class', 'language' );\n * ```\n *\n * returns:\n *\n * ```ts\n * {\n * \t'language-php': 'php',\n * \t'js': 'javascript'\n * }\n * ```\n *\n * and\n *\n * ```ts\n * getPropertyAssociation( definitions, 'language', 'label' );\n * ```\n *\n * returns:\n *\n * ```ts\n * {\n * \t'php': 'PHP',\n * \t'javascript': 'JavaScript'\n * }\n * ```\n */ function getPropertyAssociation(languageDefs, key, value) {\n const association = {};\n for (const def of languageDefs){\n if (key === 'class') {\n // Only the first class is considered.\n const newKey = def[key].split(' ').shift();\n association[newKey] = def[value];\n } else {\n association[def[key]] = def[value];\n }\n }\n return association;\n}\n/**\n * For a given model text node, it returns white spaces that precede other characters in that node.\n * This corresponds to the indentation part of the code block line.\n */ function getLeadingWhiteSpaces(textNode) {\n return textNode.data.match(/^(\\s*)/)[0];\n}\n/**\n * For plain text containing the code (a snippet), it returns a document fragment containing\n * view text nodes separated by `<br>` elements (in place of new line characters \"\\n\"), for instance:\n *\n * Input:\n *\n * ```ts\n * \"foo()\\n\n * bar()\"\n * ```\n *\n * Output:\n *\n * ```html\n * <DocumentFragment>\n * \t\"foo()\"\n * \t<br/>\n * \t\"bar()\"\n * </DocumentFragment>\n * ```\n *\n * @param text The raw code text to be converted.\n */ function rawSnippetTextToViewDocumentFragment(writer, text) {\n const fragment = writer.createDocumentFragment();\n const textLines = text.split('\\n');\n const items = textLines.reduce((nodes, line, lineIndex)=>{\n nodes.push(line);\n if (lineIndex < textLines.length - 1) {\n nodes.push(writer.createElement('br'));\n }\n return nodes;\n }, []);\n writer.appendChild(items, fragment);\n return fragment;\n}\n/**\n * Returns an array of all model positions within the selection that represent code block lines.\n *\n * If the selection is collapsed, it returns the exact selection anchor position:\n *\n * ```html\n * <codeBlock>[]foo</codeBlock> -> <codeBlock>^foo</codeBlock>\n * <codeBlock>foo[]bar</codeBlock> -> <codeBlock>foo^bar</codeBlock>\n * ```\n *\n * Otherwise, it returns positions **before** each text node belonging to all code blocks contained by the selection:\n *\n * ```html\n * <codeBlock> <codeBlock>\n * foo[bar ^foobar\n * <softBreak></softBreak> -> <softBreak></softBreak>\n * baz]qux ^bazqux\n * </codeBlock> </codeBlock>\n * ```\n *\n * It also works across other non–code blocks:\n *\n * ```html\n * <codeBlock> <codeBlock>\n * foo[bar ^foobar\n * </codeBlock> </codeBlock>\n * <paragraph>text</paragraph> -> <paragraph>text</paragraph>\n * <codeBlock> <codeBlock>\n * baz]qux ^bazqux\n * </codeBlock> </codeBlock>\n * ```\n *\n * **Note:** The positions are in reverse order so they do not get outdated when iterating over them and\n * the writer inserts or removes elements at the same time.\n *\n * **Note:** The position is located after the leading white spaces in the text node.\n */ function getIndentOutdentPositions(model) {\n const selection = model.document.selection;\n const positions = [];\n // When the selection is collapsed, there's only one position we can indent or outdent.\n if (selection.isCollapsed) {\n return [\n selection.anchor\n ];\n }\n // When the selection is NOT collapsed, collect all positions starting before text nodes\n // (code lines) in any <codeBlock> within the selection.\n // Walk backward so positions we are about to collect here do not get outdated when\n // inserting or deleting using the writer.\n const walker = selection.getFirstRange().getWalker({\n ignoreElementEnd: true,\n direction: 'backward'\n });\n for (const { item } of walker){\n let node = item.is('$textProxy') ? item.textNode : item;\n const parent = node.parent;\n if (!parent.is('element', 'codeBlock') || node.is('element', 'softBreak')) {\n continue;\n }\n // For each item in code block, move backwards until the beginning of the line it is in is found.\n while(node.previousSibling && !node.previousSibling.is('element', 'softBreak')){\n node = node.previousSibling;\n }\n // Take the leading white spaces into account (only for text nodes).\n const startOffset = !node.is('$text') ? node.startOffset : node.startOffset + getLeadingWhiteSpaces(node).length;\n const position = model.createPositionAt(parent, startOffset);\n // Do not add the same position twice. Unfortunately using set doesn't deduplicate positions because\n // they are different objects.\n if (positions.every((pos)=>!pos.isEqual(position))) {\n positions.push(position);\n }\n }\n return positions;\n}\n/**\n * Checks if any of the blocks within the model selection is a code block.\n */ function isModelSelectionInCodeBlock(selection) {\n const firstBlock = first(selection.getSelectedBlocks());\n return !!firstBlock && firstBlock.is('element', 'codeBlock');\n}\n/**\n * Checks if an {@link module:engine/model/element~Element Element} can become a code block.\n *\n * @param schema Model's schema.\n * @param element The element to be checked.\n * @returns Check result.\n */ function canBeCodeBlock(schema, element) {\n if (element.is('rootElement') || schema.isLimit(element)) {\n return false;\n }\n return schema.checkChild(element.parent, 'codeBlock');\n}\n/**\n * Get the translated message read by the screen reader when you enter or exit an element with your cursor.\n */ function getCodeBlockAriaAnnouncement(t, languageDefs, element, direction) {\n const languagesToLabels = getPropertyAssociation(languageDefs, 'language', 'label');\n const codeBlockLanguage = element.getAttribute('language');\n if (codeBlockLanguage in languagesToLabels) {\n const language = languagesToLabels[codeBlockLanguage];\n if (direction === 'enter') {\n return t('Entering %0 code snippet', language);\n }\n return t('Leaving %0 code snippet', language);\n }\n if (direction === 'enter') {\n return t('Entering code snippet');\n }\n return t('Leaving code snippet');\n}\n/**\n * For given position, finds the closest position that is at the beginning of a line of code and returns a text node that is at the\n * beginning of the line (or `null` if there's no text node at the beginning of a given line).\n *\n * Line beings at the start of a code block element and after each `softBreak` element.\n *\n * Note: even though code block doesn't allow inline elements other than `<softBreak>` by default, some features may overwrite this rule,\n * so such inline elements are taken into account.\n *\n * Some examples of expected results:\n *\n * ```\n * <codeBlock>^</codeBlock> -> null\n * <codeBlock>^foobar</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foobar^</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foo^bar</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foo^<softBreak />bar</codeBlock> -> <codeBlock>[foo]<softBreak />bar</codeBlock>\n * <codeBlock>foo<softBreak />bar^</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>foo<softBreak />b^ar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>foo<softBreak />^bar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>^<element /></codeBlock> -> null\n * <codeBlock><element />^</codeBlock> -> null\n * <codeBlock>foo^<element /></codeBlock> -> <codeBlock>[foo]<element /></codeBlock>\n * <codeBlock>foo<element />^</codeBlock> -> <codeBlock>[foo]<element /></codeBlock>\n * <codeBlock>foo<element />bar^</codeBlock> -> <codeBlock>[foo]<element />bar</codeBlock>\n * <codeBlock><element />bar^</codeBlock> -> null\n * <codeBlock>foo<softBreak />^<softBreak /></codeBlock> -> null\n * <codeBlock>foo<softBreak />^<element /></codeBlock> -> null\n * <codeBlock>foo<softBreak /><element />^</codeBlock> -> null\n * <codeBlock>foo<softBreak />bar<element />^</codeBlock> -> <codeBlock>foo<softBreak />[bar]<element /></codeBlock>\n * <codeBlock>foo<softBreak /><element />ba^r</codeBlock> -> null\n * ```\n */ function getTextNodeAtLineStart(position, model) {\n // First, move position before a text node, if it is inside a text node.\n if (position.textNode) {\n position = model.createPositionBefore(position.textNode);\n }\n // Then, jump-back the position until it is before a `softBreak` or at the beginning of the `codeBlock`.\n while(position.nodeBefore && !position.nodeBefore.is('element', 'softBreak')){\n position = model.createPositionBefore(position.nodeBefore);\n }\n // Now, the position is at the beginning of a line.\n // Return a text node after the position, if there is one.\n const nodeAtStart = position.nodeAfter;\n return nodeAtStart && nodeAtStart.is('$text') ? nodeAtStart : null;\n}\n\n/**\n * The code block command plugin.\n */ class CodeBlockCommand extends Command {\n /**\n\t * Contains the last used language.\n\t */ _lastLanguage;\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n this._lastLanguage = null;\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n this.value = this._getValue();\n this.isEnabled = this._checkEnabled();\n }\n /**\n\t * Executes the command. When the command {@link #value is on}, all topmost code blocks within\n\t * the selection will be removed. If it is off, all selected blocks will be flattened and\n\t * wrapped by a code block.\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.language The code block language.\n\t * @param options.forceValue If set, it will force the command behavior. If `true`, the command will apply a code block,\n\t * otherwise the command will remove the code block. If not set, the command will act basing on its current value.\n\t * @param options.usePreviousLanguageChoice If set on `true` and the `options.language` is not specified, the command\n\t * will apply the previous language (if the command was already executed) when inserting the `codeBlock` element.\n\t */ execute(options = {}) {\n const editor = this.editor;\n const model = editor.model;\n const selection = model.document.selection;\n const normalizedLanguagesDefs = getNormalizedAndLocalizedLanguageDefinitions(editor);\n const firstLanguageInConfig = normalizedLanguagesDefs[0];\n const blocks = Array.from(selection.getSelectedBlocks());\n const value = options.forceValue == undefined ? !this.value : options.forceValue;\n const language = getLanguage(options, this._lastLanguage, firstLanguageInConfig.language);\n model.change((writer)=>{\n if (value) {\n this._applyCodeBlock(writer, blocks, language);\n } else {\n this._removeCodeBlock(writer, blocks);\n }\n });\n }\n /**\n\t * Checks the command's {@link #value}.\n\t *\n\t * @returns The current value.\n\t */ _getValue() {\n const selection = this.editor.model.document.selection;\n const firstBlock = first(selection.getSelectedBlocks());\n const isCodeBlock = !!firstBlock?.is('element', 'codeBlock');\n return isCodeBlock ? firstBlock.getAttribute('language') : false;\n }\n /**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @returns Whether the command should be enabled.\n\t */ _checkEnabled() {\n if (this.value) {\n return true;\n }\n const selection = this.editor.model.document.selection;\n const schema = this.editor.model.schema;\n const firstBlock = first(selection.getSelectedBlocks());\n if (!firstBlock) {\n return false;\n }\n return canBeCodeBlock(schema, firstBlock);\n }\n _applyCodeBlock(writer, blocks, language) {\n this._lastLanguage = language;\n const schema = this.editor.model.schema;\n const allowedBlocks = blocks.filter((block)=>canBeCodeBlock(schema, block));\n for (const block of allowedBlocks){\n writer.rename(block, 'codeBlock');\n writer.setAttribute('language', language, block);\n schema.removeDisallowedAttributes([\n block\n ], writer);\n // Remove children of the `codeBlock` element that are not allowed. See #9567.\n Array.from(block.getChildren()).filter((child)=>!schema.checkChild(block, child)).forEach((child)=>writer.remove(child));\n }\n allowedBlocks.reverse().forEach((currentBlock, i)=>{\n const nextBlock = allowedBlocks[i + 1];\n if (currentBlock.previousSibling === nextBlock) {\n writer.appendElement('softBreak', nextBlock);\n writer.merge(writer.createPositionBefore(currentBlock));\n }\n });\n }\n _removeCodeBlock(writer, blocks) {\n const codeBlocks = blocks.filter((block)=>block.is('element', 'codeBlock'));\n for (const block of codeBlocks){\n const range = writer.createRangeOn(block);\n for (const item of Array.from(range.getItems()).reverse()){\n if (item.is('element', 'softBreak') && item.parent.is('element', 'codeBlock')) {\n const { position } = writer.split(writer.createPositionBefore(item));\n const elementAfter = position.nodeAfter;\n writer.rename(elementAfter, 'paragraph');\n writer.removeAttribute('language', elementAfter);\n writer.remove(item);\n }\n }\n writer.rename(block, 'paragraph');\n writer.removeAttribute('language', block);\n }\n }\n}\n/**\n * Picks the language for the new code block. If any language is passed as an option,\n * it will be returned. Else, if option usePreviousLanguageChoice is true and some\n * code block was already created (lastLanguage is not null) then previously used\n * language will be returned. If not, it will return default language.\n */ function getLanguage(options, lastLanguage, defaultLanguage) {\n if (options.language) {\n return options.language;\n }\n if (options.usePreviousLanguageChoice && lastLanguage) {\n return lastLanguage;\n }\n return defaultLanguage;\n}\n\n/**\n * The code block indentation increase command plugin.\n */ class IndentCodeBlockCommand extends Command {\n /**\n\t * A sequence of characters added to the line when the command is executed.\n\t */ _indentSequence;\n constructor(editor){\n super(editor);\n this._indentSequence = editor.config.get('codeBlock.indentSequence');\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n this.isEnabled = this._checkEnabled();\n }\n /**\n\t * Executes the command. When the command {@link #isEnabled is enabled}, the indentation of the\n\t * code lines in the selection will be increased.\n\t *\n\t * @fires execute\n\t */ execute() {\n const editor = this.editor;\n const model = editor.model;\n model.change((writer)=>{\n const positions = getIndentOutdentPositions(model);\n // Indent all positions, for instance assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock>^foo</codeBlock> -> <codeBlock> foo</codeBlock>\n //\n //\t\t<codeBlock>foo^bar</codeBlock> -> <codeBlock>foo bar</codeBlock>\n //\n // Also, when there is more than one position:\n //\n //\t\t<codeBlock>\n //\t\t\t^foobar\n //\t\t\t<softBreak></softBreak>\n //\t\t\t^bazqux\n //\t\t</codeBlock>\n //\n //\t\t->\n //\n //\t\t<codeBlock>\n //\t\t\t foobar\n //\t\t\t<softBreak></softBreak>\n //\t\t\t bazqux\n //\t\t</codeBlock>\n //\n for (const position of positions){\n const indentSequenceTextElement = writer.createText(this._indentSequence);\n // Previously insertion was done by writer.insertText(). It was changed to insertContent() to enable\n // integration of code block with track changes. It's the easiest way of integration because insertContent()\n // is already integrated with track changes, but if it ever cause any troubles it can be reverted, however\n // some additional work will be required in track changes integration of code block.\n model.insertContent(indentSequenceTextElement, position);\n }\n });\n }\n /**\n\t * Checks whether the command can be enabled in the current context.\n\t */ _checkEnabled() {\n if (!this._indentSequence) {\n return false;\n }\n // Indent (forward) command is always enabled when there's any code block in the selection\n // because you can always indent code lines.\n return isModelSelectionInCodeBlock(this.editor.model.document.selection);\n }\n}\n\n/**\n * The code block indentation decrease command plugin.\n */ class OutdentCodeBlockCommand extends Command {\n /**\n\t * A sequence of characters removed from the line when the command is executed.\n\t */ _indentSequence;\n constructor(editor){\n super(editor);\n this._indentSequence = editor.config.get('codeBlock.indentSequence');\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n this.isEnabled = this._checkEnabled();\n }\n /**\n\t * Executes the command. When the command {@link #isEnabled is enabled}, the indentation of the\n\t * code lines in the selection will be decreased.\n\t *\n\t * @fires execute\n\t */ execute() {\n const editor = this.editor;\n const model = editor.model;\n model.change(()=>{\n const positions = getIndentOutdentPositions(model);\n // Outdent all positions, for instance assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock>^foo</codeBlock> -> <codeBlock>foo</codeBlock>\n //\n //\t\t<codeBlock> ^bar</codeBlock> -> <codeBlock>bar</codeBlock>\n //\n // Also, when there is more than one position:\n //\n //\t\t<codeBlock>\n //\t\t\t ^foobar\n //\t\t\t<softBreak></softBreak>\n //\t\t\t ^bazqux\n //\t\t</codeBlock>\n //\n //\t\t->\n //\n //\t\t<codeBlock>\n //\t\t\tfoobar\n //\t\t\t<softBreak></softBreak>\n //\t\t\tbazqux\n //\t\t</codeBlock>\n for (const position of positions){\n const range = getLastOutdentableSequenceRange(model, position, this._indentSequence);\n if (range) {\n // Previously deletion was done by writer.remove(). It was changed to deleteContent() to enable\n // integration of code block with track changes. It's the easiest way of integration because deleteContent()\n // is already integrated with track changes, but if it ever cause any troubles it can be reverted, however\n // some additional work will be required in track changes integration of code block.\n model.deleteContent(model.createSelection(range));\n }\n }\n });\n }\n /**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @private\n\t * @returns {Boolean} Whether the command should be enabled.\n\t */ _checkEnabled() {\n if (!this._indentSequence) {\n return false;\n }\n const model = this.editor.model;\n if (!isModelSelectionInCodeBlock(model.document.selection)) {\n return false;\n }\n // Outdent command can execute only when there is an indent character sequence\n // in some of the lines.\n return getIndentOutdentPositions(model).some((position)=>{\n return getLastOutdentableSequenceRange(model, position, this._indentSequence);\n });\n }\n}\n// For a position coming from `getIndentOutdentPositions()`, it returns the range representing\n// the last occurrence of the indent sequence among the leading whitespaces of the code line the\n// position represents.\n//\n// For instance, assuming the indent sequence is 4x space (\" \"):\n//\n//\t\t<codeBlock>foo^</codeBlock> -> null\n//\t\t<codeBlock>foo^<softBreak></softBreak>bar</codeBlock> -> null\n//\t\t<codeBlock> ^foo</codeBlock> -> null\n//\t\t<codeBlock> ^foo</codeBlock> -> <codeBlock> [ ]foo</codeBlock>\n//\t\t<codeBlock> ^foo bar</codeBlock> -> <codeBlock>[ ]foo bar</codeBlock>\n//\n// @param {<module:engine/model/model~Model>} model\n// @param {<module:engine/model/position~Position>} position\n// @param {String} sequence\n// @returns {<module:engine/model/range~Range>|null}\nfunction getLastOutdentableSequenceRange(model, position, sequence) {\n // Positions start before each text node (code line). Get the node corresponding to the position.\n const nodeAtPosition = getTextNodeAtLineStart(position, model);\n if (!nodeAtPosition) {\n return null;\n }\n const leadingWhiteSpaces = getLeadingWhiteSpaces(nodeAtPosition);\n const lastIndexOfSequence = leadingWhiteSpaces.lastIndexOf(sequence);\n // For instance, assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock> \t^foo</codeBlock> -> null\n //\n if (lastIndexOfSequence + sequence.length !== leadingWhiteSpaces.length) {\n return null;\n }\n // For instance, assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock> ^foo</codeBlock> -> null\n //\n if (lastIndexOfSequence === -1) {\n return null;\n }\n const { parent, startOffset } = nodeAtPosition;\n // Create a range that contains the **last** indent sequence among the leading whitespaces\n // of the line.\n //\n // For instance, assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock> ^foo</codeBlock> -> <codeBlock> [ ]foo</codeBlock>\n //\n return model.createRange(model.createPositionAt(parent, startOffset + lastIndexOfSequence), model.createPositionAt(parent, startOffset + lastIndexOfSequence + sequence.length));\n}\n\n/**\n * A model-to-view (both editing and data) converter for the `codeBlock` element.\n *\n * Sample input:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * Sample output (editing):\n *\n * ```html\n * <pre data-language=\"JavaScript\"><code class=\"language-javascript\">foo();<br />bar();</code></pre>\n * ```\n *\n * Sample output (data, see {@link module:code-block/converters~modelToDataViewSoftBreakInsertion}):\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();\\nbar();</code></pre>\n * ```\n *\n * @param languageDefs The normalized language configuration passed to the feature.\n * @param useLabels When `true`, the `<pre>` element will get a `data-language` attribute with a\n * human–readable label of the language. Used only in the editing.\n * @returns Returns a conversion callback.\n */ function modelToViewCodeBlockInsertion(model, languageDefs, useLabels = false) {\n // Language CSS classes:\n //\n //\t\t{\n //\t\t\tphp: 'language-php',\n //\t\t\tpython: 'language-python',\n //\t\t\tjavascript: 'js',\n //\t\t\t...\n //\t\t}\n const languagesToClasses = getPropertyAssociation(languageDefs, 'language', 'class');\n // Language labels:\n //\n //\t\t{\n //\t\t\tphp: 'PHP',\n //\t\t\tpython: 'Python',\n //\t\t\tjavascript: 'JavaScript',\n //\t\t\t...\n //\t\t}\n const languagesToLabels = getPropertyAssociation(languageDefs, 'language', 'label');\n return (evt, data, conversionApi)=>{\n const { writer, mapper, consumable } = conversionApi;\n if (!consumable.consume(data.item, 'insert')) {\n return;\n }\n const codeBlockLanguage = data.item.getAttribute('language');\n const targetViewPosition = mapper.toViewPosition(model.createPositionBefore(data.item));\n const preAttributes = {};\n // Attributes added only in the editing view.\n if (useLabels) {\n preAttributes['data-language'] = languagesToLabels[codeBlockLanguage];\n preAttributes.spellcheck = 'false';\n }\n const codeAttributes = languagesToClasses[codeBlockLanguage] ? {\n class: languagesToClasses[codeBlockLanguage]\n } : undefined;\n const code = writer.createContainerElement('code', codeAttributes);\n const pre = writer.createContainerElement('pre', preAttributes, code);\n writer.insert(targetViewPosition, pre);\n mapper.bindElements(data.item, code);\n };\n}\n/**\n * A model-to-data view converter for the new line (`softBreak`) separator.\n *\n * Sample input:\n *\n * ```html\n * <codeBlock ...>foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <pre><code ...>foo();\\nbar();</code></pre>\n * ```\n *\n * @returns Returns a conversion callback.\n */ function modelToDataViewSoftBreakInsertion(model) {\n return (evt, data, conversionApi)=>{\n if (data.item.parent.name !== 'codeBlock') {\n return;\n }\n const { writer, mapper, consumable } = conversionApi;\n if (!consumable.consume(data.item, 'insert')) {\n return;\n }\n const position = mapper.toViewPosition(model.createPositionBefore(data.item));\n writer.insert(position, writer.createText('\\n'));\n };\n}\n/**\n * A view-to-model converter for `<pre>` with the `<code>` HTML.\n *\n * Sample input:\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();bar();</code></pre>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();bar();</codeBlock>\n * ```\n *\n * @param languageDefs The normalized language configuration passed to the feature.\n * @returns Returns a conversion callback.\n */ function dataViewToModelCodeBlockInsertion(editingView, languageDefs) {\n // Language names associated with CSS classes:\n //\n //\t\t{\n //\t\t\t'language-php': 'php',\n //\t\t\t'language-python': 'python',\n //\t\t\tjs: 'javascript',\n //\t\t\t...\n //\t\t}\n const classesToLanguages = getPropertyAssociation(languageDefs, 'class', 'language');\n const defaultLanguageName = languageDefs[0].language;\n return (evt, data, conversionApi)=>{\n const viewCodeElement = data.viewItem;\n const viewPreElement = viewCodeElement.parent;\n if (!viewPreElement || !viewPreElement.is('element', 'pre')) {\n return;\n }\n // In case of nested code blocks we don't want to convert to another code block.\n if (data.modelCursor.findAncestor('codeBlock')) {\n return;\n }\n const { consumable, writer } = conversionApi;\n if (!consumable.test(viewCodeElement, {\n name: true\n })) {\n return;\n }\n const codeBlock = writer.createElement('codeBlock');\n const viewChildClasses = [\n ...viewCodeElement.getClassNames()\n ];\n // As we're to associate each class with a model language, a lack of class (empty class) can be\n // also associated with a language if the language definition was configured so. Pushing an empty\n // string to make sure the association will work.\n if (!viewChildClasses.length) {\n viewChildClasses.push('');\n }\n // Figure out if any of the <code> element's class names is a valid programming\n // language class. If so, use it on the model element (becomes the language of the entire block).\n for (const className of viewChildClasses){\n const language = classesToLanguages[className];\n if (language) {\n writer.setAttribute('language', language, codeBlock);\n break;\n }\n }\n // If no language value was set, use the default language from the config.\n if (!codeBlock.hasAttribute('language')) {\n writer.setAttribute('language', defaultLanguageName, codeBlock);\n }\n // Convert children before inserting the code block element\n // to make sure that code block won't be splitted by any block.\n conversionApi.convertChildren(viewCodeElement, codeBlock);\n // Let's try to insert code block.\n if (!conversionApi.safeInsert(codeBlock, data.modelCursor)) {\n return;\n }\n consumable.consume(viewCodeElement, {\n name: true\n });\n conversionApi.updateConversionResult(codeBlock, data);\n };\n}\n/**\n * A view-to-model converter for new line characters in `<pre>`.\n *\n * Sample input:\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();\\nbar();</code></pre>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * @returns {Function} Returns a conversion callback.\n */ function dataViewToModelTextNewlinesInsertion() {\n return (evt, data, { consumable, writer })=>{\n let position = data.modelCursor;\n // When node is already converted then do nothing.\n if (!consumable.test(data.viewItem)) {\n return;\n }\n // When not inside `codeBlock` then do nothing.\n if (!position.findAncestor('codeBlock')) {\n return;\n }\n consumable.consume(data.viewItem);\n const text = data.viewItem.data;\n const textLines = text.split('\\n').map((data)=>writer.createText(data));\n const lastLine = textLines[textLines.length - 1];\n for (const node of textLines){\n writer.insert(node, position);\n position = position.getShiftedBy(node.offsetSize);\n if (node !== lastLine) {\n const softBreak = writer.createElement('softBreak');\n writer.insert(softBreak, position);\n position = writer.createPositionAfter(softBreak);\n }\n }\n data.modelRange = writer.createRange(data.modelCursor, position);\n data.modelCursor = position;\n };\n}\n/**\n * A view-to-model converter that handles orphan text nodes (white spaces, new lines, etc.)\n * that surround `<code>` inside `<pre>`.\n *\n * Sample input:\n *\n * ```html\n * // White spaces\n * <pre> <code>foo()</code> </pre>\n *\n * // White spaces\n * <pre> <code>foo()</code> </pre>\n *\n * // White spaces\n * <pre>\t\t\t<code>foo()</code>\t\t\t</pre>\n *\n * // New lines\n * <pre>\n * \t<code>foo()</code>\n * </pre>\n *\n * // Redundant text\n * <pre>ABC<code>foo()</code>DEF</pre>\n * ```\n *\n * Unified output for each case:\n *\n * ```html\n * <codeBlock language=\"plaintext\">foo()</codeBlock>\n * ```\n *\n * @returns Returns a conversion callback.\n */ function dataViewToModelOrphanNodeConsumer() {\n return (evt, data, { consumable })=>{\n const preElement = data.viewItem;\n // Don't clean up nested pre elements. Their content should stay as it is, they are not upcasted\n // to code blocks.\n if (preElement.findAncestor('pre')) {\n return;\n }\n const preChildren = Array.from(preElement.getChildren());\n const childCodeElement = preChildren.find((node)=>node.is('element', 'code'));\n // <code>-less <pre>. It will not upcast to code block in the model, skipping.\n if (!childCodeElement) {\n return;\n }\n for (const child of preChildren){\n if (child === childCodeElement || !child.is('$text')) {\n continue;\n }\n // Consuming the orphan to remove it from the input data.\n // Second argument in `consumable.consume` is discarded for text nodes.\n consumable.consume(child, {\n name: true\n });\n }\n };\n}\n\nconst DEFAULT_ELEMENT = 'paragraph';\n/**\n * The editing part of the code block feature.\n *\n * Introduces the `'codeBlock'` command and the `'codeBlock'` model element.\n */ class CodeBlockEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'CodeBlockEditing';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n ShiftEnter\n ];\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n editor.config.define('codeBlock', {\n languages: [\n {\n language: 'plaintext',\n label: 'Plain text'\n },\n {\n language: 'c',\n label: 'C'\n },\n {\n language: 'cs',\n label: 'C#'\n },\n {\n language: 'cpp',\n label: 'C++'\n },\n {\n language: 'css',\n label: 'CSS'\n },\n {\n language: 'diff',\n label: 'Diff'\n },\n {\n language: 'html',\n label: 'HTML'\n },\n {\n language: 'java',\n label: 'Java'\n },\n {\n language: 'javascript',\n label: 'JavaScript'\n },\n {\n language: 'php',\n label: 'PHP'\n },\n {\n language: 'python',\n label: 'Python'\n },\n {\n language: 'ruby',\n label: 'Ruby'\n },\n {\n language: 'typescript',\n label: 'TypeScript'\n },\n {\n language: 'xml',\n label: 'XML'\n }\n ],\n // A single tab.\n indentSequence: '\\t'\n });\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const schema = editor.model.schema;\n const model = editor.model;\n const view = editor.editing.view;\n const normalizedLanguagesDefs = getNormalizedAndLocalizedLanguageDefinitions(editor);\n // The main command.\n editor.commands.add('codeBlock', new CodeBlockCommand(editor));\n // Commands that change the indentation.\n editor.commands.add('indentCodeBlock', new IndentCodeBlockCommand(editor));\n editor.commands.add('outdentCodeBlock', new OutdentCodeBlockCommand(editor));\n this.listenTo(view.document, 'tab', (evt, data)=>{\n const commandName = data.shiftKey ? 'outdentCodeBlock' : 'indentCodeBlock';\n const command = editor.commands.get(commandName);\n if (!command.isEnabled) {\n return;\n }\n editor.execute(commandName);\n data.stopPropagation();\n data.preventDefault();\n evt.stop();\n }, {\n context: 'pre'\n });\n schema.register('codeBlock', {\n allowWhere: '$block',\n allowChildren: '$text',\n // Disallow `$inlineObject` and its derivatives like `inlineWidget` inside `codeBlock` to ensure that only text,\n // not other inline elements like inline images, are allowed. This maintains the semantic integrity of code blocks.\n disallowChildren: '$inlineObject',\n allowAttributes: [\n 'language'\n ],\n allowAttributesOf: '$listItem',\n isBlock: true\n });\n // Disallow formatting attributes on `codeBlock` children.\n schema.addAttributeCheck((context, attributeName)=>{\n const parent = context.getItem(context.length - 2);\n const isFormatting = schema.getAttributeProperties(attributeName).isFormatting;\n if (isFormatting && parent && parent.name == 'codeBlock') {\n return false;\n }\n });\n // Conversion.\n editor.editing.downcastDispatcher.on('insert:codeBlock', modelToViewCodeBlockInsertion(model, normalizedLanguagesDefs, true));\n editor.data.downcastDispatcher.on('insert:codeBlock', modelToViewCodeBlockInsertion(model, normalizedLanguagesDefs));\n editor.data.downcastDispatcher.on('insert:softBreak', modelToDataViewSoftBreakInsertion(model), {\n priority: 'high'\n });\n editor.data.upcastDispatcher.on('element:code', dataViewToModelCodeBlockInsertion(view, normalizedLanguagesDefs));\n editor.data.upcastDispatcher.on('text', dataViewToModelTextNewlinesInsertion());\n editor.data.upcastDispatcher.on('element:pre', dataViewToModelOrphanNodeConsumer(), {\n priority: 'high'\n });\n // Intercept the clipboard input (paste) when the selection is anchored in the code block and force the clipboard\n // data to be pasted as a single plain text. Otherwise, the code lines will split the code block and\n // \"spill out\" as separate paragraphs.\n this.listenTo(editor.editing.view.document, 'clipboardInput', (evt, data)=>{\n let insertionRange = model.createRange(model.document.selection.anchor);\n // Use target ranges in case this is a drop.\n if (data.targetRanges) {\n insertionRange = editor.editing.mapper.toModelRange(data.targetRanges[0]);\n }\n if (!insertionRange.start.parent.is('element', 'codeBlock')) {\n return;\n }\n const text = data.dataTransfer.getData('text/plain');\n const writer = new UpcastWriter(editor.editing.view.document);\n // Pass the view fragment to the default clipboardInput handler.\n data.content = rawSnippetTextToViewDocumentFragment(writer, text);\n });\n if (editor.plugins.has('ClipboardPipeline')) {\n // Elements may have a plain textual representation (hence be present in the 'text/plain' data transfer),\n // but not be allowed in the code block.\n // Filter them out before inserting the content to the model.\n editor.plugins.get(ClipboardPipeline).on('contentInsertion', (evt, data)=>{\n const model = editor.model;\n const selection = model.document.selection;\n if (!selection.anchor.parent.is('element', 'codeBlock')) {\n return;\n }\n model.change((writer)=>{\n const contentRange = writer.createRangeIn(data.content);\n for (const item of [\n ...contentRange.getItems()\n ]){\n // Remove all nodes disallowed in the code block.\n if (item.is('node') && !schema.checkChild(selection.anchor, item)) {\n writer.remove(item);\n }\n }\n });\n });\n }\n // Make sure multi–line selection is always wrapped in a code block when `getSelectedContent()`\n // is used (e.g. clipboard copy). Otherwise, only the raw text will be copied to the clipboard and,\n // upon next paste, this bare text will not be inserted as a code block, which is not the best UX.\n // Similarly, when the selection in a single line, the selected content should be an inline code\n // so it can be pasted later on and retain it's preformatted nature.\n this.listenTo(model, 'getSelectedContent', (evt, [selection])=>{\n const anchor = selection.anchor;\n if (selection.isCollapsed || !anchor.parent.is('element', 'codeBlock') || !anchor.hasSameParentAs(selection.focus)) {\n return;\n }\n model.change((writer)=>{\n const docFragment = evt.return;\n // fo[o<softBreak></softBreak>b]ar -> <codeBlock language=\"...\">[o<softBreak></softBreak>b]<codeBlock>\n if (anchor.parent.is('element') && (docFragment.childCount > 1 || selection.containsEntireContent(anchor.parent))) {\n const codeBlock = writer.createElement('codeBlock', anchor.parent.getAttributes());\n writer.append(docFragment, codeBlock);\n const newDocumentFragment = writer.createDocumentFragment();\n writer.append(codeBlock, newDocumentFragment);\n evt.return = newDocumentFragment;\n return;\n }\n // \"f[oo]\" -> <$text code=\"true\">oo</text>\n const textNode = docFragment.getChild(0);\n if (schema.checkAttribute(textNode, 'code')) {\n writer.setAttribute('code', true, textNode);\n }\n });\n });\n }\n /**\n\t * @inheritDoc\n\t */ afterInit() {\n const editor = this.editor;\n const commands = editor.commands;\n const indent = commands.get('indent');\n const outdent = commands.get('outdent');\n if (indent) {\n // Priority is highest due to integration with `IndentList` command of `List` plugin.\n // If selection is in a code block we give priority to it. This way list item cannot be indented\n // but if we would give priority to indenting list item then user would have to indent list item\n // as much as possible and only then he could indent code block.\n indent.registerChildCommand(commands.get('indentCodeBlock'), {\n priority: 'highest'\n });\n }\n if (outdent) {\n outdent.registerChildCommand(commands.get('outdentCodeBlock'));\n }\n // Customize the response to the <kbd>Enter</kbd> and <kbd>Shift</kbd>+<kbd>Enter</kbd>\n // key press when the selection is in the code block. Upon enter key press we can either\n // leave the block if it's \"two or three enters\" in a row or create a new code block line, preserving\n // previous line's indentation.\n this.listenTo(editor.editing.view.document, 'enter', (evt, data)=>{\n const positionParent = editor.model.document.selection.getLastPosition().parent;\n if (!positionParent.is('element', 'codeBlock')) {\n return;\n }\n if (!leaveBlockStartOnEnter(editor, data.isSoft) && !leaveBlockEndOnEnter(editor, data.isSoft)) {\n breakLineOnEnter(editor);\n }\n data.preventDefault();\n evt.stop();\n }, {\n context: 'pre'\n });\n this._initAriaAnnouncements();\n }\n /**\n\t * Observe when user enters or leaves code block and set proper aria value in global live announcer.\n\t * This allows screen readers to indicate when the user has entered and left the specified code block.\n\t *\n\t * @internal\n\t */ _initAriaAnnouncements() {\n const { model, ui, t } = this.editor;\n const languageDefs = getNormalizedAndLocalizedLanguageDefinitions(this.editor);\n let lastFocusedCodeBlock = null;\n model.document.selection.on('change:range', ()=>{\n const focusParent = model.document.selection.focus.parent;\n if (!ui || lastFocusedCodeBlock === focusParent || !focusParent.is('element')) {\n return;\n }\n if (lastFocusedCodeBlock && lastFocusedCodeBlock.is('element', 'codeBlock')) {\n ui.ariaLiveAnnouncer.announce(getCodeBlockAriaAnnouncement(t, languageDefs, lastFocusedCodeBlock, 'leave'));\n }\n if (focusParent.is('element', 'codeBlock')) {\n ui.ariaLiveAnnouncer.announce(getCodeBlockAriaAnnouncement(t, languageDefs, focusParent, 'enter'));\n }\n lastFocusedCodeBlock = focusParent;\n });\n }\n}\n/**\n * Normally, when the Enter (or Shift+Enter) key is pressed, a soft line break is to be added to the\n * code block. Let's try to follow the indentation of the previous line when possible, for instance:\n *\n * ```html\n * // Before pressing enter (or shift enter)\n * <codeBlock>\n * \" foo()\"[] // Indent of 4 spaces.\n * </codeBlock>\n *\n * // After pressing:\n * <codeBlock>\n * \" foo()\" // Indent of 4 spaces.\n * <softBreak></softBreak> // A new soft break created by pressing enter.\n * \" \"[] // Retain the indent of 4 spaces.\n * </codeBlock>\n * ```\n */ function breakLineOnEnter(editor) {\n const model = editor.model;\n const modelDoc = model.document;\n // Use last position as other mechanisms (e.g. condition deciding whether this function should be called) also check that.\n const lastSelectionPosition = modelDoc.selection.getLastPosition();\n let leadingWhiteSpaces;\n const node = getTextNodeAtLineStart(lastSelectionPosition, model);\n // Figure out the indentation (white space chars) at the beginning of the line.\n if (node && node.is('$text')) {\n leadingWhiteSpaces = getLeadingWhiteSpaces(node);\n }\n // Keeping everything in a change block for a single undo step.\n editor.model.change((writer)=>{\n editor.execute('shiftEnter');\n // If the line before being broken in two had some indentation, let's retain it\n // in the new line.\n if (leadingWhiteSpaces) {\n writer.insertText(leadingWhiteSpaces, modelDoc.selection.anchor);\n }\n });\n}\n/**\n * Leave the code block when Enter (but NOT Shift+Enter) has been pressed twice at the beginning\n * of the code block:\n *\n * ```html\n * // Before:\n * <codeBlock>[]<softBreak></softBreak>foo</codeBlock>\n *\n * // After pressing:\n * <paragraph>[]</paragraph><codeBlock>foo</codeBlock>\n * ```\n *\n * @param isSoftEnter When `true`, enter was pressed along with <kbd>Shift</kbd>.\n * @returns `true` when selection left the block. `false` if stayed.\n */ function leaveBlockStartOnEnter(editor, isSoftEnter) {\n const model = editor.model;\n const modelDoc = model.document;\n const view = editor.editing.view;\n const lastSelectionPosition = modelDoc.selection.getLastPosition();\n const nodeAfter = lastSelectionPosition.nodeAfter;\n if (isSoftEnter || !modelDoc.selection.isCollapsed || !lastSelectionPosition.isAtStart) {\n return false;\n }\n if (!isSoftBreakNode(nodeAfter)) {\n return false;\n }\n // We're doing everything in a single change block to have a single undo step.\n editor.model.change((writer)=>{\n // \"Clone\" the <codeBlock> in the standard way.\n editor.execute('enter');\n // The cloned block exists now before the original code block.\n const newBlock = modelDoc.selection.anchor.parent.previousSibling;\n // Make the cloned <codeBlock> a regular <paragraph> (with clean attributes, so no language).\n writer.rename(newBlock, DEFAULT_ELEMENT);\n writer.setSelection(newBlock, 'in');\n editor.model.schema.removeDisallowedAttributes([\n newBlock\n ], writer);\n // Remove the <softBreak> that originally followed the selection position.\n writer.remove(nodeAfter);\n });\n // Eye candy.\n view.scrollToTheSelection();\n return true;\n}\n/**\n * Leave the code block when Enter (but NOT Shift+Enter) has been pressed twice at the end\n * of the code block:\n *\n * ```html\n * // Before:\n * <codeBlock>foo[]</codeBlock>\n *\n * // After first press:\n * <codeBlock>foo<softBreak></softBreak>[]</codeBlock>\n *\n * // After second press:\n * <codeBlock>foo</codeBlock><paragraph>[]</paragraph>\n * ```\n *\n * @param isSoftEnter When `true`, enter was pressed along with <kbd>Shift</kbd>.\n * @returns `true` when selection left the block. `false` if stayed.\n */ function leaveBlockEndOnEnter(editor, isSoftEnter) {\n const model = editor.model;\n const modelDoc = model.document;\n const view = editor.editing.view;\n const lastSelectionPosition = modelDoc.selection.getLastPosition();\n const nodeBefore = lastSelectionPosition.nodeBefore;\n let emptyLineRangeToRemoveOnEnter;\n if (isSoftEnter || !modelDoc.selection.isCollapsed || !lastSelectionPosition.isAtEnd || !nodeBefore || !nodeBefore.previousSibling) {\n return false;\n }\n // When the position is directly preceded by two soft breaks\n //\n //\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak>[]</codeBlock>\n //\n // it creates the following range that will be cleaned up before leaving:\n //\n //\t\t<codeBlock>foo[<softBreak></softBreak><softBreak></softBreak>]</codeBlock>\n //\n if (isSoftBreakNode(nodeBefore) && isSoftBreakNode(nodeBefore.previousSibling)) {\n emptyLineRangeToRemoveOnEnter = model.createRange(model.createPositionBefore(nodeBefore.previousSibling), model.createPositionAfter(nodeBefore));\n } else if (isEmptyishTextNode(nodeBefore) && isSoftBreakNode(nodeBefore.previousSibling) && isSoftBreakNode(nodeBefore.previousSibling.previousSibling)) {\n emptyLineRangeToRemoveOnEnter = model.createRange(model.createPositionBefore(nodeBefore.previousSibling.previousSibling), model.createPositionAfter(nodeBefore));\n } else if (isEmptyishTextNode(nodeBefore) && isSoftBreakNode(nodeBefore.previousSibling) && isEmptyishTextNode(nodeBefore.previousSibling.previousSibling) && nodeBefore.previousSibling.previousSibling && isSoftBreakNode(nodeBefore.previousSibling.previousSibling.previousSibling)) {\n emptyLineRangeToRemoveOnEnter = model.createRange(model.createPositionBefore(nodeBefore.previousSibling.previousSibling.previousSibling), model.createPositionAfter(nodeBefore));\n } else {\n return false;\n }\n // We're doing everything in a single change block to have a single undo step.\n editor.model.change((writer)=>{\n // Remove the last <softBreak>s and all white space characters that followed them.\n writer.remove(emptyLineRangeToRemoveOnEnter);\n // \"Clone\" the <codeBlock> in the standard way.\n editor.execute('enter');\n const newBlock = modelDoc.selection.anchor.parent;\n // Make the cloned <codeBlock> a regular <paragraph> (with clean attributes, so no language).\n writer.rename(newBlock, DEFAULT_ELEMENT);\n editor.model.schema.removeDisallowedAttributes([\n newBlock\n ], writer);\n });\n // Eye candy.\n view.scrollToTheSelection();\n return true;\n}\nfunction isEmptyishTextNode(node) {\n return node && node.is('$text') && !node.data.match(/\\S/);\n}\nfunction isSoftBreakNode(node) {\n return node && node.is('element', 'softBreak');\n}\n\n/**\n * The code block UI plugin.\n *\n * Introduces the `'codeBlock'` dropdown.\n */ class CodeBlockUI extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'CodeBlockUI';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const t = editor.t;\n const componentFactory = editor.ui.componentFactory;\n const normalizedLanguageDefs = getNormalizedAndLocalizedLanguageDefinitions(editor);\n const itemDefinitions = this._getLanguageListItemDefinitions(normalizedLanguageDefs);\n const command = editor.commands.get('codeBlock');\n componentFactory.add('codeBlock', (locale)=>{\n const dropdownView = createDropdown(locale, SplitButtonView);\n const splitButtonView = dropdownView.buttonView;\n const accessibleLabel = t('Insert code block');\n splitButtonView.set({\n label: accessibleLabel,\n tooltip: true,\n icon: IconCodeBlock,\n isToggleable: true\n });\n splitButtonView.bind('isOn').to(command, 'value', (value)=>!!value);\n splitButtonView.on('execute', ()=>{\n editor.execute('codeBlock', {\n usePreviousLanguageChoice: true\n });\n editor.editing.view.focus();\n });\n dropdownView.on('execute', (evt)=>{\n editor.execute('codeBlock', {\n language: evt.source._codeBlockLanguage,\n forceValue: true\n });\n editor.editing.view.focus();\n });\n dropdownView.class = 'ck-code-block-dropdown';\n dropdownView.bind('isEnabled').to(command);\n addListToDropdown(dropdownView, itemDefinitions, {\n role: 'menu',\n ariaLabel: accessibleLabel\n });\n return dropdownView;\n });\n componentFactory.add('menuBar:codeBlock', (locale)=>{\n const menuView = new MenuBarMenuView(locale);\n menuView.buttonView.set({\n role: 'menuitem',\n label: t('Code block'),\n icon: IconCodeBlock\n });\n menuView.bind('isEnabled').to(command);\n const listView = new MenuBarMenuListView(locale);\n listView.set({\n ariaLabel: t('Insert code block')\n });\n for (const definition of itemDefinitions){\n const listItemView = new MenuBarMenuListItemView(locale, menuView);\n const buttonView = new MenuBarMenuListItemButtonView(locale);\n buttonView.bind(...Object.keys(definition.model)).to(definition.model);\n buttonView.set({\n isToggleable: true,\n role: 'menuitemcheckbox'\n });\n buttonView.delegate('execute').to(menuView);\n buttonView.on('execute', ()=>{\n editor.execute('codeBlock', {\n language: definition.model._codeBlockLanguage,\n forceValue: command.value == definition.model._codeBlockLanguage ? false : true\n });\n editor.editing.view.focus();\n });\n listItemView.children.add(buttonView);\n listView.items.add(listItemView);\n }\n menuView.panelView.children.add(listView);\n return menuView;\n });\n }\n /**\n\t * A helper returning a collection of the `codeBlock` dropdown items representing languages\n\t * available for the user to choose from.\n\t */ _getLanguageListItemDefinitions(normalizedLanguageDefs) {\n const editor = this.editor;\n const command = editor.commands.get('codeBlock');\n const itemDefinitions = new Collection();\n for (const languageDef of normalizedLanguageDefs){\n const definition = {\n type: 'button',\n model: new ViewModel({\n _codeBlockLanguage: languageDef.language,\n label: languageDef.label,\n role: 'menuitemradio',\n withText: true\n })\n };\n definition.model.bind('isOn').to(command, 'value', (value)=>{\n return value === definition.model._codeBlockLanguage;\n });\n itemDefinitions.add(definition);\n }\n return itemDefinitions;\n }\n}\n\n/**\n * The code block plugin.\n *\n * For more information about this feature check the {@glink api/code-block package page} and the\n * {@glink features/code-blocks code block} feature guide.\n *\n * This is a \"glue\" plugin that loads the {@link module:code-block/codeblockediting~CodeBlockEditing code block editing feature}\n * and the {@link module:code-block/codeblockui~CodeBlockUI code block UI feature}.\n */ class CodeBlock extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n CodeBlockEditing,\n CodeBlockUI\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'CodeBlock';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n}\n\nexport { CodeBlock, CodeBlockEditing, CodeBlockUI };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/utils\n */\n\nimport type { Editor } from 'ckeditor5/src/core.js';\nimport type { CodeBlockLanguageDefinition } from './codeblockconfig.js';\nimport type {\n\tDocumentSelection,\n\tElement,\n\tModel,\n\tPosition,\n\tSchema,\n\tText,\n\tUpcastWriter,\n\tViewDocumentFragment,\n\tViewElement\n} from 'ckeditor5/src/engine.js';\n\nimport { first, type LocaleTranslate } from 'ckeditor5/src/utils.js';\n\n/**\n * Returns code block languages as defined in `config.codeBlock.languages` but processed:\n *\n * * To consider the editor localization, i.e. to display {@link module:code-block/codeblockconfig~CodeBlockLanguageDefinition}\n * in the correct language. There is no way to use {@link module:utils/locale~Locale#t} when the user\n * configuration is defined because the editor does not exist yet.\n * * To make sure each definition has a CSS class associated with it even if not specified\n * in the original configuration.\n */\nexport function getNormalizedAndLocalizedLanguageDefinitions( editor: Editor ): Array<CodeBlockLanguageDefinition> {\n\tconst t = editor.t;\n\tconst languageDefs = editor.config.get( 'codeBlock.languages' ) as Array<CodeBlockLanguageDefinition>;\n\n\tfor ( const def of languageDefs ) {\n\t\tif ( def.label === 'Plain text' ) {\n\t\t\tdef.label = t( 'Plain text' );\n\t\t}\n\n\t\tif ( def.class === undefined ) {\n\t\t\tdef.class = `language-${ def.language }`;\n\t\t}\n\t}\n\n\treturn languageDefs;\n}\n\n/**\n * Returns an object associating certain language definition properties with others. For instance:\n *\n * For:\n *\n * ```ts\n * const definitions = {\n * \t{ language: 'php', class: 'language-php', label: 'PHP' },\n * \t{ language: 'javascript', class: 'js', label: 'JavaScript' },\n * };\n *\n * getPropertyAssociation( definitions, 'class', 'language' );\n * ```\n *\n * returns:\n *\n * ```ts\n * {\n * \t'language-php': 'php',\n * \t'js': 'javascript'\n * }\n * ```\n *\n * and\n *\n * ```ts\n * getPropertyAssociation( definitions, 'language', 'label' );\n * ```\n *\n * returns:\n *\n * ```ts\n * {\n * \t'php': 'PHP',\n * \t'javascript': 'JavaScript'\n * }\n * ```\n */\nexport function getPropertyAssociation(\n\tlanguageDefs: Array<CodeBlockLanguageDefinition>,\n\tkey: keyof CodeBlockLanguageDefinition,\n\tvalue: keyof CodeBlockLanguageDefinition\n): Record<string, string> {\n\tconst association: Record<string, string> = {};\n\n\tfor ( const def of languageDefs ) {\n\t\tif ( key === 'class' ) {\n\t\t\t// Only the first class is considered.\n\t\t\tconst newKey = ( def[ key ]! ).split( ' ' ).shift()!;\n\n\t\t\tassociation[ newKey ] = def[ value ]!;\n\t\t} else {\n\t\t\tassociation[ def[ key ]! ] = def[ value ]!;\n\t\t}\n\t}\n\n\treturn association;\n}\n\n/**\n * For a given model text node, it returns white spaces that precede other characters in that node.\n * This corresponds to the indentation part of the code block line.\n */\nexport function getLeadingWhiteSpaces( textNode: Text ): string {\n\treturn textNode.data.match( /^(\\s*)/ )![ 0 ];\n}\n\n/**\n * For plain text containing the code (a snippet), it returns a document fragment containing\n * view text nodes separated by `<br>` elements (in place of new line characters \"\\n\"), for instance:\n *\n * Input:\n *\n * ```ts\n * \"foo()\\n\n * bar()\"\n * ```\n *\n * Output:\n *\n * ```html\n * <DocumentFragment>\n * \t\"foo()\"\n * \t<br/>\n * \t\"bar()\"\n * </DocumentFragment>\n * ```\n *\n * @param text The raw code text to be converted.\n */\nexport function rawSnippetTextToViewDocumentFragment( writer: UpcastWriter, text: string ): ViewDocumentFragment {\n\tconst fragment = writer.createDocumentFragment();\n\tconst textLines = text.split( '\\n' );\n\n\tconst items = textLines.reduce( ( nodes: Array<string | ViewElement>, line, lineIndex ) => {\n\t\tnodes.push( line );\n\n\t\tif ( lineIndex < textLines.length - 1 ) {\n\t\t\tnodes.push( writer.createElement( 'br' ) );\n\t\t}\n\n\t\treturn nodes;\n\t}, [] );\n\n\twriter.appendChild( items, fragment );\n\n\treturn fragment;\n}\n\n/**\n * Returns an array of all model positions within the selection that represent code block lines.\n *\n * If the selection is collapsed, it returns the exact selection anchor position:\n *\n * ```html\n * <codeBlock>[]foo</codeBlock> -> <codeBlock>^foo</codeBlock>\n * <codeBlock>foo[]bar</codeBlock> -> <codeBlock>foo^bar</codeBlock>\n * ```\n *\n * Otherwise, it returns positions **before** each text node belonging to all code blocks contained by the selection:\n *\n * ```html\n * <codeBlock> <codeBlock>\n * foo[bar ^foobar\n * <softBreak></softBreak> -> <softBreak></softBreak>\n * baz]qux ^bazqux\n * </codeBlock> </codeBlock>\n * ```\n *\n * It also works across other non–code blocks:\n *\n * ```html\n * <codeBlock> <codeBlock>\n * foo[bar ^foobar\n * </codeBlock> </codeBlock>\n * <paragraph>text</paragraph> -> <paragraph>text</paragraph>\n * <codeBlock> <codeBlock>\n * baz]qux ^bazqux\n * </codeBlock> </codeBlock>\n * ```\n *\n * **Note:** The positions are in reverse order so they do not get outdated when iterating over them and\n * the writer inserts or removes elements at the same time.\n *\n * **Note:** The position is located after the leading white spaces in the text node.\n */\nexport function getIndentOutdentPositions( model: Model ): Array<Position> {\n\tconst selection = model.document.selection;\n\tconst positions: Array<Position> = [];\n\n\t// When the selection is collapsed, there's only one position we can indent or outdent.\n\tif ( selection.isCollapsed ) {\n\t\treturn [ selection.anchor! ];\n\t}\n\n\t// When the selection is NOT collapsed, collect all positions starting before text nodes\n\t// (code lines) in any <codeBlock> within the selection.\n\n\t// Walk backward so positions we are about to collect here do not get outdated when\n\t// inserting or deleting using the writer.\n\n\tconst walker = selection.getFirstRange()!.getWalker( {\n\t\tignoreElementEnd: true,\n\t\tdirection: 'backward'\n\t} );\n\n\tfor ( const { item } of walker ) {\n\t\tlet node = item.is( '$textProxy' ) ? item.textNode : item;\n\t\tconst parent = node.parent;\n\n\t\tif ( !parent!.is( 'element', 'codeBlock' ) || node.is( 'element', 'softBreak' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// For each item in code block, move backwards until the beginning of the line it is in is found.\n\t\twhile ( node.previousSibling && !node.previousSibling.is( 'element', 'softBreak' ) ) {\n\t\t\tnode = node.previousSibling;\n\t\t}\n\n\t\t// Take the leading white spaces into account (only for text nodes).\n\t\tconst startOffset = !node.is( '$text' ) ? node.startOffset! : node.startOffset! + getLeadingWhiteSpaces( node ).length;\n\t\tconst position = model.createPositionAt( parent, startOffset );\n\n\t\t// Do not add the same position twice. Unfortunately using set doesn't deduplicate positions because\n\t\t// they are different objects.\n\t\tif ( positions.every( pos => !pos.isEqual( position ) ) ) {\n\t\t\tpositions.push( position );\n\t\t}\n\t}\n\n\treturn positions;\n}\n\n/**\n * Checks if any of the blocks within the model selection is a code block.\n */\nexport function isModelSelectionInCodeBlock( selection: DocumentSelection ): boolean {\n\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\treturn !!firstBlock && firstBlock.is( 'element', 'codeBlock' );\n}\n\n/**\n * Checks if an {@link module:engine/model/element~Element Element} can become a code block.\n *\n * @param schema Model's schema.\n * @param element The element to be checked.\n * @returns Check result.\n */\nexport function canBeCodeBlock( schema: Schema, element: Element ): boolean {\n\tif ( element.is( 'rootElement' ) || schema.isLimit( element ) ) {\n\t\treturn false;\n\t}\n\n\treturn schema.checkChild( element.parent as Element, 'codeBlock' );\n}\n\n/**\n * Get the translated message read by the screen reader when you enter or exit an element with your cursor.\n */\nexport function getCodeBlockAriaAnnouncement(\n\tt: LocaleTranslate,\n\tlanguageDefs: Array<CodeBlockLanguageDefinition>,\n\telement: Element,\n\tdirection: 'enter' | 'leave'\n): string {\n\tconst languagesToLabels = getPropertyAssociation( languageDefs, 'language', 'label' );\n\tconst codeBlockLanguage = element.getAttribute( 'language' ) as string;\n\n\tif ( codeBlockLanguage in languagesToLabels ) {\n\t\tconst language = languagesToLabels[ codeBlockLanguage ];\n\n\t\tif ( direction === 'enter' ) {\n\t\t\treturn t( 'Entering %0 code snippet', language );\n\t\t}\n\n\t\treturn t( 'Leaving %0 code snippet', language );\n\t}\n\n\tif ( direction === 'enter' ) {\n\t\treturn t( 'Entering code snippet' );\n\t}\n\n\treturn t( 'Leaving code snippet' );\n}\n\n/**\n * For given position, finds the closest position that is at the beginning of a line of code and returns a text node that is at the\n * beginning of the line (or `null` if there's no text node at the beginning of a given line).\n *\n * Line beings at the start of a code block element and after each `softBreak` element.\n *\n * Note: even though code block doesn't allow inline elements other than `<softBreak>` by default, some features may overwrite this rule,\n * so such inline elements are taken into account.\n *\n * Some examples of expected results:\n *\n * ```\n * <codeBlock>^</codeBlock> -> null\n * <codeBlock>^foobar</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foobar^</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foo^bar</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foo^<softBreak />bar</codeBlock> -> <codeBlock>[foo]<softBreak />bar</codeBlock>\n * <codeBlock>foo<softBreak />bar^</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>foo<softBreak />b^ar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>foo<softBreak />^bar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>^<element /></codeBlock> -> null\n * <codeBlock><element />^</codeBlock> -> null\n * <codeBlock>foo^<element /></codeBlock> -> <codeBlock>[foo]<element /></codeBlock>\n * <codeBlock>foo<element />^</codeBlock> -> <codeBlock>[foo]<element /></codeBlock>\n * <codeBlock>foo<element />bar^</codeBlock> -> <codeBlock>[foo]<element />bar</codeBlock>\n * <codeBlock><element />bar^</codeBlock> -> null\n * <codeBlock>foo<softBreak />^<softBreak /></codeBlock> -> null\n * <codeBlock>foo<softBreak />^<element /></codeBlock> -> null\n * <codeBlock>foo<softBreak /><element />^</codeBlock> -> null\n * <codeBlock>foo<softBreak />bar<element />^</codeBlock> -> <codeBlock>foo<softBreak />[bar]<element /></codeBlock>\n * <codeBlock>foo<softBreak /><element />ba^r</codeBlock> -> null\n * ```\n */\nexport function getTextNodeAtLineStart( position: Position, model: Model ): Text | null {\n\t// First, move position before a text node, if it is inside a text node.\n\tif ( position.textNode ) {\n\t\tposition = model.createPositionBefore( position.textNode );\n\t}\n\n\t// Then, jump-back the position until it is before a `softBreak` or at the beginning of the `codeBlock`.\n\twhile ( position.nodeBefore && !position.nodeBefore.is( 'element', 'softBreak' ) ) {\n\t\tposition = model.createPositionBefore( position.nodeBefore );\n\t}\n\n\t// Now, the position is at the beginning of a line.\n\t// Return a text node after the position, if there is one.\n\tconst nodeAtStart = position.nodeAfter;\n\n\treturn nodeAtStart && nodeAtStart.is( '$text' ) ? nodeAtStart : null;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/codeblockcommand\n */\n\nimport type { Element, Writer } from 'ckeditor5/src/engine.js';\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\nimport { first } from 'ckeditor5/src/utils.js';\n\nimport { getNormalizedAndLocalizedLanguageDefinitions, canBeCodeBlock } from './utils.js';\n\n/**\n * The code block command plugin.\n */\nexport default class CodeBlockCommand extends Command {\n\t/**\n\t * Contains the last used language.\n\t */\n\tprivate _lastLanguage: string | null;\n\n\t/**\n\t * Contains language if any is selected, false otherwise.\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: string | false;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._lastLanguage = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.value = this._getValue();\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Executes the command. When the command {@link #value is on}, all topmost code blocks within\n\t * the selection will be removed. If it is off, all selected blocks will be flattened and\n\t * wrapped by a code block.\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.language The code block language.\n\t * @param options.forceValue If set, it will force the command behavior. If `true`, the command will apply a code block,\n\t * otherwise the command will remove the code block. If not set, the command will act basing on its current value.\n\t * @param options.usePreviousLanguageChoice If set on `true` and the `options.language` is not specified, the command\n\t * will apply the previous language (if the command was already executed) when inserting the `codeBlock` element.\n\t */\n\tpublic override execute( options: {\n\t\tlanguage?: string;\n\t\tforceValue?: boolean;\n\t\tusePreviousLanguageChoice?: boolean;\n\t} = {} ): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst normalizedLanguagesDefs = getNormalizedAndLocalizedLanguageDefinitions( editor );\n\t\tconst firstLanguageInConfig = normalizedLanguagesDefs[ 0 ];\n\n\t\tconst blocks = Array.from( selection.getSelectedBlocks() );\n\t\tconst value = options.forceValue == undefined ? !this.value : options.forceValue;\n\t\tconst language = getLanguage( options, this._lastLanguage, firstLanguageInConfig.language );\n\n\t\tmodel.change( writer => {\n\t\t\tif ( value ) {\n\t\t\t\tthis._applyCodeBlock( writer, blocks, language );\n\t\t\t} else {\n\t\t\t\tthis._removeCodeBlock( writer, blocks );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks the command's {@link #value}.\n\t *\n\t * @returns The current value.\n\t */\n\tprivate _getValue(): string | false {\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst firstBlock = first( selection.getSelectedBlocks() );\n\t\tconst isCodeBlock = !!firstBlock?.is( 'element', 'codeBlock' );\n\n\t\treturn isCodeBlock ? firstBlock.getAttribute( 'language' ) as string : false;\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @returns Whether the command should be enabled.\n\t */\n\tprivate _checkEnabled(): boolean {\n\t\tif ( this.value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst schema = this.editor.model.schema;\n\n\t\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t\tif ( !firstBlock ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn canBeCodeBlock( schema, firstBlock );\n\t}\n\n\tprivate _applyCodeBlock( writer: Writer, blocks: Array<Element>, language: string ): void {\n\t\tthis._lastLanguage = language;\n\n\t\tconst schema = this.editor.model.schema;\n\t\tconst allowedBlocks = blocks.filter( block => canBeCodeBlock( schema, block ) );\n\n\t\tfor ( const block of allowedBlocks ) {\n\t\t\twriter.rename( block, 'codeBlock' );\n\t\t\twriter.setAttribute( 'language', language, block );\n\t\t\tschema.removeDisallowedAttributes( [ block ], writer );\n\n\t\t\t// Remove children of the `codeBlock` element that are not allowed. See #9567.\n\t\t\tArray.from( block.getChildren() )\n\t\t\t\t.filter( child => !schema.checkChild( block, child ) )\n\t\t\t\t.forEach( child => writer.remove( child ) );\n\t\t}\n\n\t\tallowedBlocks.reverse().forEach( ( currentBlock, i ) => {\n\t\t\tconst nextBlock = allowedBlocks[ i + 1 ];\n\n\t\t\tif ( currentBlock.previousSibling === nextBlock ) {\n\t\t\t\twriter.appendElement( 'softBreak', nextBlock );\n\t\t\t\twriter.merge( writer.createPositionBefore( currentBlock ) );\n\t\t\t}\n\t\t} );\n\t}\n\n\tprivate _removeCodeBlock( writer: Writer, blocks: Array<Element> ): void {\n\t\tconst codeBlocks = blocks.filter( block => block.is( 'element', 'codeBlock' ) );\n\n\t\tfor ( const block of codeBlocks ) {\n\t\t\tconst range = writer.createRangeOn( block );\n\n\t\t\tfor ( const item of Array.from( range.getItems() ).reverse() ) {\n\t\t\t\tif ( item.is( 'element', 'softBreak' ) && item.parent!.is( 'element', 'codeBlock' ) ) {\n\t\t\t\t\tconst { position } = writer.split( writer.createPositionBefore( item ) );\n\t\t\t\t\tconst elementAfter = position.nodeAfter as Element;\n\n\t\t\t\t\twriter.rename( elementAfter, 'paragraph' );\n\t\t\t\t\twriter.removeAttribute( 'language', elementAfter );\n\t\t\t\t\twriter.remove( item );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twriter.rename( block, 'paragraph' );\n\t\t\twriter.removeAttribute( 'language', block );\n\t\t}\n\t}\n}\n\n/**\n * Picks the language for the new code block. If any language is passed as an option,\n * it will be returned. Else, if option usePreviousLanguageChoice is true and some\n * code block was already created (lastLanguage is not null) then previously used\n * language will be returned. If not, it will return default language.\n */\nfunction getLanguage(\n\toptions: { usePreviousLanguageChoice?: boolean; language?: string },\n\tlastLanguage: string | null,\n\tdefaultLanguage: string\n): string {\n\tif ( options.language ) {\n\t\treturn options.language;\n\t}\n\n\tif ( options.usePreviousLanguageChoice && lastLanguage ) {\n\t\treturn lastLanguage;\n\t}\n\n\treturn defaultLanguage;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/indentcodeblockcommand\n */\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\n\nimport {\n\tgetIndentOutdentPositions,\n\tisModelSelectionInCodeBlock\n} from './utils.js';\n\n/**\n * The code block indentation increase command plugin.\n */\nexport default class IndentCodeBlockCommand extends Command {\n\t/**\n\t * A sequence of characters added to the line when the command is executed.\n\t */\n\tprivate _indentSequence: string;\n\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._indentSequence = editor.config.get( 'codeBlock.indentSequence' )!;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Executes the command. When the command {@link #isEnabled is enabled}, the indentation of the\n\t * code lines in the selection will be increased.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\tmodel.change( writer => {\n\t\t\tconst positions = getIndentOutdentPositions( model );\n\n\t\t\t// Indent all positions, for instance assuming the indent sequence is 4x space (\" \"):\n\t\t\t//\n\t\t\t//\t\t<codeBlock>^foo</codeBlock> -> <codeBlock> foo</codeBlock>\n\t\t\t//\n\t\t\t//\t\t<codeBlock>foo^bar</codeBlock> -> <codeBlock>foo bar</codeBlock>\n\t\t\t//\n\t\t\t// Also, when there is more than one position:\n\t\t\t//\n\t\t\t//\t\t<codeBlock>\n\t\t\t//\t\t\t^foobar\n\t\t\t//\t\t\t<softBreak></softBreak>\n\t\t\t//\t\t\t^bazqux\n\t\t\t//\t\t</codeBlock>\n\t\t\t//\n\t\t\t//\t\t->\n\t\t\t//\n\t\t\t//\t\t<codeBlock>\n\t\t\t//\t\t\t foobar\n\t\t\t//\t\t\t<softBreak></softBreak>\n\t\t\t//\t\t\t bazqux\n\t\t\t//\t\t</codeBlock>\n\t\t\t//\n\t\t\tfor ( const position of positions ) {\n\t\t\t\tconst indentSequenceTextElement = writer.createText( this._indentSequence );\n\n\t\t\t\t// Previously insertion was done by writer.insertText(). It was changed to insertContent() to enable\n\t\t\t\t// integration of code block with track changes. It's the easiest way of integration because insertContent()\n\t\t\t\t// is already integrated with track changes, but if it ever cause any troubles it can be reverted, however\n\t\t\t\t// some additional work will be required in track changes integration of code block.\n\t\t\t\tmodel.insertContent( indentSequenceTextElement, position );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t */\n\tprivate _checkEnabled(): boolean {\n\t\tif ( !this._indentSequence ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Indent (forward) command is always enabled when there's any code block in the selection\n\t\t// because you can always indent code lines.\n\t\treturn isModelSelectionInCodeBlock( this.editor.model.document.selection );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/outdentcodeblockcommand\n */\n\nimport type { Model, Position, Range } from 'ckeditor5/src/engine.js';\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\n\nimport {\n\tgetLeadingWhiteSpaces,\n\tgetIndentOutdentPositions,\n\tisModelSelectionInCodeBlock,\n\tgetTextNodeAtLineStart\n} from './utils.js';\n\n/**\n * The code block indentation decrease command plugin.\n */\nexport default class OutdentCodeBlockCommand extends Command {\n\t/**\n\t * A sequence of characters removed from the line when the command is executed.\n\t */\n\tprivate readonly _indentSequence: string;\n\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._indentSequence = editor.config.get( 'codeBlock.indentSequence' )!;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Executes the command. When the command {@link #isEnabled is enabled}, the indentation of the\n\t * code lines in the selection will be decreased.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\tmodel.change( () => {\n\t\t\tconst positions = getIndentOutdentPositions( model );\n\n\t\t\t// Outdent all positions, for instance assuming the indent sequence is 4x space (\" \"):\n\t\t\t//\n\t\t\t//\t\t<codeBlock>^foo</codeBlock> -> <codeBlock>foo</codeBlock>\n\t\t\t//\n\t\t\t//\t\t<codeBlock> ^bar</codeBlock> -> <codeBlock>bar</codeBlock>\n\t\t\t//\n\t\t\t// Also, when there is more than one position:\n\t\t\t//\n\t\t\t//\t\t<codeBlock>\n\t\t\t//\t\t\t ^foobar\n\t\t\t//\t\t\t<softBreak></softBreak>\n\t\t\t//\t\t\t ^bazqux\n\t\t\t//\t\t</codeBlock>\n\t\t\t//\n\t\t\t//\t\t->\n\t\t\t//\n\t\t\t//\t\t<codeBlock>\n\t\t\t//\t\t\tfoobar\n\t\t\t//\t\t\t<softBreak></softBreak>\n\t\t\t//\t\t\tbazqux\n\t\t\t//\t\t</codeBlock>\n\t\t\tfor ( const position of positions ) {\n\t\t\t\tconst range = getLastOutdentableSequenceRange( model, position, this._indentSequence );\n\n\t\t\t\tif ( range ) {\n\t\t\t\t\t// Previously deletion was done by writer.remove(). It was changed to deleteContent() to enable\n\t\t\t\t\t// integration of code block with track changes. It's the easiest way of integration because deleteContent()\n\t\t\t\t\t// is already integrated with track changes, but if it ever cause any troubles it can be reverted, however\n\t\t\t\t\t// some additional work will be required in track changes integration of code block.\n\t\t\t\t\tmodel.deleteContent( model.createSelection( range ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @private\n\t * @returns {Boolean} Whether the command should be enabled.\n\t */\n\tprivate _checkEnabled(): boolean {\n\t\tif ( !this._indentSequence ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst model = this.editor.model;\n\n\t\tif ( !isModelSelectionInCodeBlock( model.document.selection ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Outdent command can execute only when there is an indent character sequence\n\t\t// in some of the lines.\n\t\treturn getIndentOutdentPositions( model ).some( position => {\n\t\t\treturn getLastOutdentableSequenceRange( model, position, this._indentSequence );\n\t\t} );\n\t}\n}\n\n// For a position coming from `getIndentOutdentPositions()`, it returns the range representing\n// the last occurrence of the indent sequence among the leading whitespaces of the code line the\n// position represents.\n//\n// For instance, assuming the indent sequence is 4x space (\" \"):\n//\n//\t\t<codeBlock>foo^</codeBlock> -> null\n//\t\t<codeBlock>foo^<softBreak></softBreak>bar</codeBlock> -> null\n//\t\t<codeBlock> ^foo</codeBlock> -> null\n//\t\t<codeBlock> ^foo</codeBlock> -> <codeBlock> [ ]foo</codeBlock>\n//\t\t<codeBlock> ^foo bar</codeBlock> -> <codeBlock>[ ]foo bar</codeBlock>\n//\n// @param {<module:engine/model/model~Model>} model\n// @param {<module:engine/model/position~Position>} position\n// @param {String} sequence\n// @returns {<module:engine/model/range~Range>|null}\nfunction getLastOutdentableSequenceRange( model: Model, position: Position, sequence: string ): Range | null {\n\t// Positions start before each text node (code line). Get the node corresponding to the position.\n\tconst nodeAtPosition = getTextNodeAtLineStart( position, model );\n\n\tif ( !nodeAtPosition ) {\n\t\treturn null;\n\t}\n\n\tconst leadingWhiteSpaces = getLeadingWhiteSpaces( nodeAtPosition );\n\tconst lastIndexOfSequence = leadingWhiteSpaces.lastIndexOf( sequence );\n\n\t// For instance, assuming the indent sequence is 4x space (\" \"):\n\t//\n\t//\t\t<codeBlock> \t^foo</codeBlock> -> null\n\t//\n\tif ( lastIndexOfSequence + sequence.length !== leadingWhiteSpaces.length ) {\n\t\treturn null;\n\t}\n\n\t// For instance, assuming the indent sequence is 4x space (\" \"):\n\t//\n\t//\t\t<codeBlock> ^foo</codeBlock> -> null\n\t//\n\tif ( lastIndexOfSequence === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst { parent, startOffset } = nodeAtPosition;\n\n\t// Create a range that contains the **last** indent sequence among the leading whitespaces\n\t// of the line.\n\t//\n\t// For instance, assuming the indent sequence is 4x space (\" \"):\n\t//\n\t//\t\t<codeBlock> ^foo</codeBlock> -> <codeBlock> [ ]foo</codeBlock>\n\t//\n\treturn model.createRange(\n\t\tmodel.createPositionAt( parent!, startOffset! + lastIndexOfSequence ),\n\t\tmodel.createPositionAt( parent!, startOffset! + lastIndexOfSequence + sequence.length )\n\t);\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/converters\n */\n\nimport type { GetCallback } from 'ckeditor5/src/utils.js';\nimport type { DowncastInsertEvent, Element, Model, UpcastElementEvent, UpcastTextEvent, EditingView } from 'ckeditor5/src/engine.js';\nimport type { CodeBlockLanguageDefinition } from './codeblockconfig.js';\nimport { getPropertyAssociation } from './utils.js';\n\n/**\n * A model-to-view (both editing and data) converter for the `codeBlock` element.\n *\n * Sample input:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * Sample output (editing):\n *\n * ```html\n * <pre data-language=\"JavaScript\"><code class=\"language-javascript\">foo();<br />bar();</code></pre>\n * ```\n *\n * Sample output (data, see {@link module:code-block/converters~modelToDataViewSoftBreakInsertion}):\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();\\nbar();</code></pre>\n * ```\n *\n * @param languageDefs The normalized language configuration passed to the feature.\n * @param useLabels When `true`, the `<pre>` element will get a `data-language` attribute with a\n * human–readable label of the language. Used only in the editing.\n * @returns Returns a conversion callback.\n */\nexport function modelToViewCodeBlockInsertion(\n\tmodel: Model,\n\tlanguageDefs: Array<CodeBlockLanguageDefinition>,\n\tuseLabels: boolean = false\n): GetCallback<DowncastInsertEvent> {\n\t// Language CSS classes:\n\t//\n\t//\t\t{\n\t//\t\t\tphp: 'language-php',\n\t//\t\t\tpython: 'language-python',\n\t//\t\t\tjavascript: 'js',\n\t//\t\t\t...\n\t//\t\t}\n\tconst languagesToClasses = getPropertyAssociation( languageDefs, 'language', 'class' );\n\n\t// Language labels:\n\t//\n\t//\t\t{\n\t//\t\t\tphp: 'PHP',\n\t//\t\t\tpython: 'Python',\n\t//\t\t\tjavascript: 'JavaScript',\n\t//\t\t\t...\n\t//\t\t}\n\tconst languagesToLabels = getPropertyAssociation( languageDefs, 'language', 'label' );\n\n\treturn ( evt, data, conversionApi ): void => {\n\t\tconst { writer, mapper, consumable } = conversionApi;\n\n\t\tif ( !consumable.consume( data.item, 'insert' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst codeBlockLanguage = data.item.getAttribute( 'language' ) as string;\n\t\tconst targetViewPosition = mapper.toViewPosition( model.createPositionBefore( data.item ) );\n\t\tconst preAttributes: Record<string, string> = {};\n\n\t\t// Attributes added only in the editing view.\n\t\tif ( useLabels ) {\n\t\t\tpreAttributes[ 'data-language' ] = languagesToLabels[ codeBlockLanguage ];\n\t\t\tpreAttributes.spellcheck = 'false';\n\t\t}\n\n\t\tconst codeAttributes = languagesToClasses[ codeBlockLanguage ] ? {\n\t\t\tclass: languagesToClasses[ codeBlockLanguage ]\n\t\t} : undefined;\n\t\tconst code = writer.createContainerElement( 'code', codeAttributes );\n\n\t\tconst pre = writer.createContainerElement( 'pre', preAttributes, code );\n\n\t\twriter.insert( targetViewPosition, pre );\n\n\t\tmapper.bindElements( data.item as Element, code );\n\t};\n}\n\n/**\n * A model-to-data view converter for the new line (`softBreak`) separator.\n *\n * Sample input:\n *\n * ```html\n * <codeBlock ...>foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <pre><code ...>foo();\\nbar();</code></pre>\n * ```\n *\n * @returns Returns a conversion callback.\n */\nexport function modelToDataViewSoftBreakInsertion( model: Model ): GetCallback<DowncastInsertEvent> {\n\treturn ( evt, data, conversionApi ) => {\n\t\tif ( data.item.parent!.name !== 'codeBlock' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { writer, mapper, consumable } = conversionApi;\n\n\t\tif ( !consumable.consume( data.item, 'insert' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst position = mapper.toViewPosition( model.createPositionBefore( data.item ) );\n\n\t\twriter.insert( position, writer.createText( '\\n' ) );\n\t};\n}\n\n/**\n * A view-to-model converter for `<pre>` with the `<code>` HTML.\n *\n * Sample input:\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();bar();</code></pre>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();bar();</codeBlock>\n * ```\n *\n * @param languageDefs The normalized language configuration passed to the feature.\n * @returns Returns a conversion callback.\n */\nexport function dataViewToModelCodeBlockInsertion(\n\teditingView: EditingView,\n\tlanguageDefs: Array<CodeBlockLanguageDefinition>\n): GetCallback<UpcastElementEvent> {\n\t// Language names associated with CSS classes:\n\t//\n\t//\t\t{\n\t//\t\t\t'language-php': 'php',\n\t//\t\t\t'language-python': 'python',\n\t//\t\t\tjs: 'javascript',\n\t//\t\t\t...\n\t//\t\t}\n\tconst classesToLanguages = getPropertyAssociation( languageDefs, 'class', 'language' );\n\tconst defaultLanguageName = languageDefs[ 0 ].language;\n\n\treturn ( evt, data, conversionApi ) => {\n\t\tconst viewCodeElement = data.viewItem;\n\t\tconst viewPreElement = viewCodeElement.parent;\n\n\t\tif ( !viewPreElement || !viewPreElement.is( 'element', 'pre' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In case of nested code blocks we don't want to convert to another code block.\n\t\tif ( data.modelCursor.findAncestor( 'codeBlock' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { consumable, writer } = conversionApi;\n\n\t\tif ( !consumable.test( viewCodeElement, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst codeBlock = writer.createElement( 'codeBlock' );\n\t\tconst viewChildClasses = [ ...viewCodeElement.getClassNames() ];\n\n\t\t// As we're to associate each class with a model language, a lack of class (empty class) can be\n\t\t// also associated with a language if the language definition was configured so. Pushing an empty\n\t\t// string to make sure the association will work.\n\t\tif ( !viewChildClasses.length ) {\n\t\t\tviewChildClasses.push( '' );\n\t\t}\n\n\t\t// Figure out if any of the <code> element's class names is a valid programming\n\t\t// language class. If so, use it on the model element (becomes the language of the entire block).\n\t\tfor ( const className of viewChildClasses ) {\n\t\t\tconst language = classesToLanguages[ className ];\n\n\t\t\tif ( language ) {\n\t\t\t\twriter.setAttribute( 'language', language, codeBlock );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// If no language value was set, use the default language from the config.\n\t\tif ( !codeBlock.hasAttribute( 'language' ) ) {\n\t\t\twriter.setAttribute( 'language', defaultLanguageName, codeBlock );\n\t\t}\n\n\t\t// Convert children before inserting the code block element\n\t\t// to make sure that code block won't be splitted by any block.\n\t\tconversionApi.convertChildren( viewCodeElement, codeBlock );\n\n\t\t// Let's try to insert code block.\n\t\tif ( !conversionApi.safeInsert( codeBlock, data.modelCursor ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconsumable.consume( viewCodeElement, { name: true } );\n\n\t\tconversionApi.updateConversionResult( codeBlock, data );\n\t};\n}\n\n/**\n * A view-to-model converter for new line characters in `<pre>`.\n *\n * Sample input:\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();\\nbar();</code></pre>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * @returns {Function} Returns a conversion callback.\n */\nexport function dataViewToModelTextNewlinesInsertion(): GetCallback<UpcastTextEvent> {\n\treturn ( evt, data, { consumable, writer } ) => {\n\t\tlet position = data.modelCursor;\n\n\t\t// When node is already converted then do nothing.\n\t\tif ( !consumable.test( data.viewItem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// When not inside `codeBlock` then do nothing.\n\t\tif ( !position.findAncestor( 'codeBlock' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconsumable.consume( data.viewItem );\n\n\t\tconst text = data.viewItem.data;\n\t\tconst textLines = text.split( '\\n' ).map( data => writer.createText( data ) );\n\t\tconst lastLine = textLines[ textLines.length - 1 ];\n\n\t\tfor ( const node of textLines ) {\n\t\t\twriter.insert( node, position );\n\t\t\tposition = position.getShiftedBy( node.offsetSize );\n\n\t\t\tif ( node !== lastLine ) {\n\t\t\t\tconst softBreak = writer.createElement( 'softBreak' );\n\n\t\t\t\twriter.insert( softBreak, position );\n\t\t\t\tposition = writer.createPositionAfter( softBreak );\n\t\t\t}\n\t\t}\n\n\t\tdata.modelRange = writer.createRange(\n\t\t\tdata.modelCursor,\n\t\t\tposition\n\t\t);\n\t\tdata.modelCursor = position;\n\t};\n}\n\n/**\n * A view-to-model converter that handles orphan text nodes (white spaces, new lines, etc.)\n * that surround `<code>` inside `<pre>`.\n *\n * Sample input:\n *\n * ```html\n * // White spaces\n * <pre> <code>foo()</code> </pre>\n *\n * // White spaces\n * <pre> <code>foo()</code> </pre>\n *\n * // White spaces\n * <pre>\t\t\t<code>foo()</code>\t\t\t</pre>\n *\n * // New lines\n * <pre>\n * \t<code>foo()</code>\n * </pre>\n *\n * // Redundant text\n * <pre>ABC<code>foo()</code>DEF</pre>\n * ```\n *\n * Unified output for each case:\n *\n * ```html\n * <codeBlock language=\"plaintext\">foo()</codeBlock>\n * ```\n *\n * @returns Returns a conversion callback.\n */\nexport function dataViewToModelOrphanNodeConsumer(): GetCallback<UpcastElementEvent> {\n\treturn ( evt, data, { consumable } ) => {\n\t\tconst preElement = data.viewItem;\n\n\t\t// Don't clean up nested pre elements. Their content should stay as it is, they are not upcasted\n\t\t// to code blocks.\n\t\tif ( preElement.findAncestor( 'pre' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst preChildren = Array.from( preElement.getChildren() );\n\t\tconst childCodeElement = preChildren.find( node => node.is( 'element', 'code' ) );\n\n\t\t// <code>-less <pre>. It will not upcast to code block in the model, skipping.\n\t\tif ( !childCodeElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const child of preChildren ) {\n\t\t\tif ( child === childCodeElement || !child.is( '$text' ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Consuming the orphan to remove it from the input data.\n\t\t\t// Second argument in `consumable.consume` is discarded for text nodes.\n\t\t\tconsumable.consume( child, { name: true } );\n\t\t}\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/codeblockediting\n */\n\nimport { Plugin, type Editor, type MultiCommand } from 'ckeditor5/src/core.js';\nimport { ShiftEnter, type ViewDocumentEnterEvent } from 'ckeditor5/src/enter.js';\n\nimport {\n\tUpcastWriter,\n\ttype Range,\n\ttype Node,\n\ttype ModelGetSelectedContentEvent,\n\ttype ViewDocumentTabEvent,\n\ttype DowncastInsertEvent,\n\ttype UpcastElementEvent,\n\ttype UpcastTextEvent,\n\ttype Element,\n\ttype SelectionChangeRangeEvent\n} from 'ckeditor5/src/engine.js';\nimport { ClipboardPipeline, type ClipboardContentInsertionEvent } from 'ckeditor5/src/clipboard.js';\n\nimport CodeBlockCommand from './codeblockcommand.js';\nimport IndentCodeBlockCommand from './indentcodeblockcommand.js';\nimport OutdentCodeBlockCommand from './outdentcodeblockcommand.js';\nimport {\n\tgetNormalizedAndLocalizedLanguageDefinitions,\n\tgetLeadingWhiteSpaces,\n\trawSnippetTextToViewDocumentFragment,\n\tgetCodeBlockAriaAnnouncement,\n\tgetTextNodeAtLineStart\n} from './utils.js';\nimport {\n\tmodelToViewCodeBlockInsertion,\n\tmodelToDataViewSoftBreakInsertion,\n\tdataViewToModelCodeBlockInsertion,\n\tdataViewToModelTextNewlinesInsertion,\n\tdataViewToModelOrphanNodeConsumer\n} from './converters.js';\n\nconst DEFAULT_ELEMENT = 'paragraph';\n\n/**\n * The editing part of the code block feature.\n *\n * Introduces the `'codeBlock'` command and the `'codeBlock'` model element.\n */\nexport default class CodeBlockEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CodeBlockEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ShiftEnter ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'codeBlock', {\n\t\t\tlanguages: [\n\t\t\t\t{ language: 'plaintext', label: 'Plain text' },\n\t\t\t\t{ language: 'c', label: 'C' },\n\t\t\t\t{ language: 'cs', label: 'C#' },\n\t\t\t\t{ language: 'cpp', label: 'C++' },\n\t\t\t\t{ language: 'css', label: 'CSS' },\n\t\t\t\t{ language: 'diff', label: 'Diff' },\n\t\t\t\t{ language: 'html', label: 'HTML' },\n\t\t\t\t{ language: 'java', label: 'Java' },\n\t\t\t\t{ language: 'javascript', label: 'JavaScript' },\n\t\t\t\t{ language: 'php', label: 'PHP' },\n\t\t\t\t{ language: 'python', label: 'Python' },\n\t\t\t\t{ language: 'ruby', label: 'Ruby' },\n\t\t\t\t{ language: 'typescript', label: 'TypeScript' },\n\t\t\t\t{ language: 'xml', label: 'XML' }\n\t\t\t],\n\n\t\t\t// A single tab.\n\t\t\tindentSequence: '\\t'\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\n\t\tconst normalizedLanguagesDefs = getNormalizedAndLocalizedLanguageDefinitions( editor );\n\n\t\t// The main command.\n\t\teditor.commands.add( 'codeBlock', new CodeBlockCommand( editor ) );\n\n\t\t// Commands that change the indentation.\n\t\teditor.commands.add( 'indentCodeBlock', new IndentCodeBlockCommand( editor ) );\n\t\teditor.commands.add( 'outdentCodeBlock', new OutdentCodeBlockCommand( editor ) );\n\n\t\tthis.listenTo<ViewDocumentTabEvent>( view.document, 'tab', ( evt, data ) => {\n\t\t\tconst commandName = data.shiftKey ? 'outdentCodeBlock' : 'indentCodeBlock';\n\t\t\tconst command: OutdentCodeBlockCommand | IndentCodeBlockCommand = editor.commands.get( commandName )!;\n\n\t\t\tif ( !command.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.execute( commandName );\n\n\t\t\tdata.stopPropagation();\n\t\t\tdata.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: 'pre' } );\n\n\t\tschema.register( 'codeBlock', {\n\t\t\tallowWhere: '$block',\n\t\t\tallowChildren: '$text',\n\t\t\t// Disallow `$inlineObject` and its derivatives like `inlineWidget` inside `codeBlock` to ensure that only text,\n\t\t\t// not other inline elements like inline images, are allowed. This maintains the semantic integrity of code blocks.\n\t\t\tdisallowChildren: '$inlineObject',\n\t\t\tallowAttributes: [ 'language' ],\n\t\t\tallowAttributesOf: '$listItem',\n\t\t\tisBlock: true\n\t\t} );\n\n\t\t// Disallow formatting attributes on `codeBlock` children.\n\t\tschema.addAttributeCheck( ( context, attributeName ) => {\n\t\t\tconst parent = context.getItem( context.length - 2 );\n\t\t\tconst isFormatting = schema.getAttributeProperties( attributeName ).isFormatting;\n\n\t\t\tif ( isFormatting && parent && parent.name == 'codeBlock' ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\t// Conversion.\n\t\teditor.editing.downcastDispatcher.on<DowncastInsertEvent>(\n\t\t\t'insert:codeBlock',\n\t\t\tmodelToViewCodeBlockInsertion( model, normalizedLanguagesDefs, true )\n\t\t);\n\t\teditor.data.downcastDispatcher.on<DowncastInsertEvent>(\n\t\t\t'insert:codeBlock',\n\t\t\tmodelToViewCodeBlockInsertion( model, normalizedLanguagesDefs )\n\t\t);\n\t\teditor.data.downcastDispatcher.on<DowncastInsertEvent>(\n\t\t\t'insert:softBreak',\n\t\t\tmodelToDataViewSoftBreakInsertion( model ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\t\teditor.data.upcastDispatcher.on<UpcastElementEvent>(\n\t\t\t'element:code',\n\t\t\tdataViewToModelCodeBlockInsertion( view, normalizedLanguagesDefs )\n\t\t);\n\t\teditor.data.upcastDispatcher.on<UpcastTextEvent>( 'text', dataViewToModelTextNewlinesInsertion() );\n\t\teditor.data.upcastDispatcher.on<UpcastElementEvent>( 'element:pre', dataViewToModelOrphanNodeConsumer(), { priority: 'high' } );\n\n\t\t// Intercept the clipboard input (paste) when the selection is anchored in the code block and force the clipboard\n\t\t// data to be pasted as a single plain text. Otherwise, the code lines will split the code block and\n\t\t// \"spill out\" as separate paragraphs.\n\t\tthis.listenTo( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n\t\t\tlet insertionRange = model.createRange( model.document.selection.anchor! );\n\n\t\t\t// Use target ranges in case this is a drop.\n\t\t\tif ( data.targetRanges ) {\n\t\t\t\tinsertionRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n\t\t\t}\n\n\t\t\tif ( !insertionRange.start.parent.is( 'element', 'codeBlock' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst text = data.dataTransfer.getData( 'text/plain' );\n\t\t\tconst writer = new UpcastWriter( editor.editing.view.document );\n\n\t\t\t// Pass the view fragment to the default clipboardInput handler.\n\t\t\tdata.content = rawSnippetTextToViewDocumentFragment( writer, text );\n\t\t} );\n\n\t\tif ( editor.plugins.has( 'ClipboardPipeline' ) ) {\n\t\t\t// Elements may have a plain textual representation (hence be present in the 'text/plain' data transfer),\n\t\t\t// but not be allowed in the code block.\n\t\t\t// Filter them out before inserting the content to the model.\n\t\t\teditor.plugins.get( ClipboardPipeline ).on<ClipboardContentInsertionEvent>( 'contentInsertion', ( evt, data ) => {\n\t\t\t\tconst model = editor.model;\n\t\t\t\tconst selection = model.document.selection;\n\n\t\t\t\tif ( !selection.anchor!.parent.is( 'element', 'codeBlock' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\tconst contentRange = writer.createRangeIn( data.content );\n\n\t\t\t\t\tfor ( const item of [ ...contentRange.getItems() ] ) {\n\t\t\t\t\t\t// Remove all nodes disallowed in the code block.\n\t\t\t\t\t\tif ( item.is( 'node' ) && !schema.checkChild( selection.anchor!, item ) ) {\n\t\t\t\t\t\t\twriter.remove( item );\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\t// Make sure multi–line selection is always wrapped in a code block when `getSelectedContent()`\n\t\t// is used (e.g. clipboard copy). Otherwise, only the raw text will be copied to the clipboard and,\n\t\t// upon next paste, this bare text will not be inserted as a code block, which is not the best UX.\n\t\t// Similarly, when the selection in a single line, the selected content should be an inline code\n\t\t// so it can be pasted later on and retain it's preformatted nature.\n\t\tthis.listenTo<ModelGetSelectedContentEvent>( model, 'getSelectedContent', ( evt, [ selection ] ) => {\n\t\t\tconst anchor = selection.anchor!;\n\n\t\t\tif ( selection.isCollapsed || !anchor.parent.is( 'element', 'codeBlock' ) || !anchor.hasSameParentAs( selection.focus! ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst docFragment = evt.return!;\n\n\t\t\t\t// fo[o<softBreak></softBreak>b]ar -> <codeBlock language=\"...\">[o<softBreak></softBreak>b]<codeBlock>\n\t\t\t\tif (\n\t\t\t\t\tanchor.parent.is( 'element' ) &&\n\t\t\t\t\t( docFragment.childCount > 1 || selection.containsEntireContent( anchor.parent ) )\n\t\t\t\t) {\n\t\t\t\t\tconst codeBlock = writer.createElement( 'codeBlock', anchor.parent.getAttributes() );\n\t\t\t\t\twriter.append( docFragment, codeBlock );\n\n\t\t\t\t\tconst newDocumentFragment = writer.createDocumentFragment();\n\t\t\t\t\twriter.append( codeBlock, newDocumentFragment );\n\n\t\t\t\t\tevt.return = newDocumentFragment;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// \"f[oo]\" -> <$text code=\"true\">oo</text>\n\t\t\t\tconst textNode = docFragment.getChild( 0 )!;\n\n\t\t\t\tif ( schema.checkAttribute( textNode, 'code' ) ) {\n\t\t\t\t\twriter.setAttribute( 'code', true, textNode );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\t\tconst commands = editor.commands;\n\t\tconst indent = commands.get( 'indent' );\n\t\tconst outdent = commands.get( 'outdent' );\n\n\t\tif ( indent ) {\n\t\t\t// Priority is highest due to integration with `IndentList` command of `List` plugin.\n\t\t\t// If selection is in a code block we give priority to it. This way list item cannot be indented\n\t\t\t// but if we would give priority to indenting list item then user would have to indent list item\n\t\t\t// as much as possible and only then he could indent code block.\n\t\t\t( indent as MultiCommand ).registerChildCommand( commands.get( 'indentCodeBlock' )!, { priority: 'highest' } );\n\t\t}\n\n\t\tif ( outdent ) {\n\t\t\t( outdent as MultiCommand ).registerChildCommand( commands.get( 'outdentCodeBlock' )! );\n\t\t}\n\n\t\t// Customize the response to the <kbd>Enter</kbd> and <kbd>Shift</kbd>+<kbd>Enter</kbd>\n\t\t// key press when the selection is in the code block. Upon enter key press we can either\n\t\t// leave the block if it's \"two or three enters\" in a row or create a new code block line, preserving\n\t\t// previous line's indentation.\n\t\tthis.listenTo<ViewDocumentEnterEvent>( editor.editing.view.document, 'enter', ( evt, data ) => {\n\t\t\tconst positionParent = editor.model.document.selection.getLastPosition()!.parent;\n\n\t\t\tif ( !positionParent.is( 'element', 'codeBlock' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !leaveBlockStartOnEnter( editor, data.isSoft ) && !leaveBlockEndOnEnter( editor, data.isSoft ) ) {\n\t\t\t\tbreakLineOnEnter( editor );\n\t\t\t}\n\n\t\t\tdata.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: 'pre' } );\n\n\t\tthis._initAriaAnnouncements( );\n\t}\n\n\t/**\n\t * Observe when user enters or leaves code block and set proper aria value in global live announcer.\n\t * This allows screen readers to indicate when the user has entered and left the specified code block.\n\t *\n\t * @internal\n\t */\n\tprivate _initAriaAnnouncements( ) {\n\t\tconst { model, ui, t } = this.editor;\n\t\tconst languageDefs = getNormalizedAndLocalizedLanguageDefinitions( this.editor );\n\n\t\tlet lastFocusedCodeBlock: Element | null = null;\n\n\t\tmodel.document.selection.on<SelectionChangeRangeEvent>( 'change:range', () => {\n\t\t\tconst focusParent = model.document.selection.focus!.parent;\n\n\t\t\tif ( !ui || lastFocusedCodeBlock === focusParent || !focusParent.is( 'element' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( lastFocusedCodeBlock && lastFocusedCodeBlock.is( 'element', 'codeBlock' ) ) {\n\t\t\t\tui.ariaLiveAnnouncer.announce( getCodeBlockAriaAnnouncement( t, languageDefs, lastFocusedCodeBlock, 'leave' ) );\n\t\t\t}\n\n\t\t\tif ( focusParent.is( 'element', 'codeBlock' ) ) {\n\t\t\t\tui.ariaLiveAnnouncer.announce( getCodeBlockAriaAnnouncement( t, languageDefs, focusParent, 'enter' ) );\n\t\t\t}\n\n\t\t\tlastFocusedCodeBlock = focusParent;\n\t\t} );\n\t}\n}\n\n/**\n * Normally, when the Enter (or Shift+Enter) key is pressed, a soft line break is to be added to the\n * code block. Let's try to follow the indentation of the previous line when possible, for instance:\n *\n * ```html\n * // Before pressing enter (or shift enter)\n * <codeBlock>\n * \" foo()\"[] // Indent of 4 spaces.\n * </codeBlock>\n *\n * // After pressing:\n * <codeBlock>\n * \" foo()\" // Indent of 4 spaces.\n * <softBreak></softBreak> // A new soft break created by pressing enter.\n * \" \"[] // Retain the indent of 4 spaces.\n * </codeBlock>\n * ```\n */\nfunction breakLineOnEnter( editor: Editor ): void {\n\tconst model = editor.model;\n\tconst modelDoc = model.document;\n\t// Use last position as other mechanisms (e.g. condition deciding whether this function should be called) also check that.\n\tconst lastSelectionPosition = modelDoc.selection.getLastPosition()!;\n\tlet leadingWhiteSpaces: string | undefined;\n\n\tconst node = getTextNodeAtLineStart( lastSelectionPosition, model );\n\n\t// Figure out the indentation (white space chars) at the beginning of the line.\n\tif ( node && node.is( '$text' ) ) {\n\t\tleadingWhiteSpaces = getLeadingWhiteSpaces( node );\n\t}\n\n\t// Keeping everything in a change block for a single undo step.\n\teditor.model.change( writer => {\n\t\teditor.execute( 'shiftEnter' );\n\n\t\t// If the line before being broken in two had some indentation, let's retain it\n\t\t// in the new line.\n\t\tif ( leadingWhiteSpaces ) {\n\t\t\twriter.insertText( leadingWhiteSpaces, modelDoc.selection.anchor! );\n\t\t}\n\t} );\n}\n\n/**\n * Leave the code block when Enter (but NOT Shift+Enter) has been pressed twice at the beginning\n * of the code block:\n *\n * ```html\n * // Before:\n * <codeBlock>[]<softBreak></softBreak>foo</codeBlock>\n *\n * // After pressing:\n * <paragraph>[]</paragraph><codeBlock>foo</codeBlock>\n * ```\n *\n * @param isSoftEnter When `true`, enter was pressed along with <kbd>Shift</kbd>.\n * @returns `true` when selection left the block. `false` if stayed.\n */\nfunction leaveBlockStartOnEnter( editor: Editor, isSoftEnter: boolean ): boolean {\n\tconst model = editor.model;\n\tconst modelDoc = model.document;\n\tconst view = editor.editing.view;\n\tconst lastSelectionPosition = modelDoc.selection.getLastPosition()!;\n\tconst nodeAfter = lastSelectionPosition.nodeAfter;\n\n\tif ( isSoftEnter || !modelDoc.selection.isCollapsed || !lastSelectionPosition.isAtStart ) {\n\t\treturn false;\n\t}\n\n\tif ( !isSoftBreakNode( nodeAfter ) ) {\n\t\treturn false;\n\t}\n\n\t// We're doing everything in a single change block to have a single undo step.\n\teditor.model.change( writer => {\n\t\t// \"Clone\" the <codeBlock> in the standard way.\n\t\teditor.execute( 'enter' );\n\n\t\t// The cloned block exists now before the original code block.\n\t\tconst newBlock = modelDoc.selection.anchor!.parent.previousSibling! as Element;\n\n\t\t// Make the cloned <codeBlock> a regular <paragraph> (with clean attributes, so no language).\n\t\twriter.rename( newBlock, DEFAULT_ELEMENT );\n\t\twriter.setSelection( newBlock, 'in' );\n\t\teditor.model.schema.removeDisallowedAttributes( [ newBlock ], writer );\n\n\t\t// Remove the <softBreak> that originally followed the selection position.\n\t\twriter.remove( nodeAfter! );\n\t} );\n\n\t// Eye candy.\n\tview.scrollToTheSelection();\n\n\treturn true;\n}\n\n/**\n * Leave the code block when Enter (but NOT Shift+Enter) has been pressed twice at the end\n * of the code block:\n *\n * ```html\n * // Before:\n * <codeBlock>foo[]</codeBlock>\n *\n * // After first press:\n * <codeBlock>foo<softBreak></softBreak>[]</codeBlock>\n *\n * // After second press:\n * <codeBlock>foo</codeBlock><paragraph>[]</paragraph>\n * ```\n *\n * @param isSoftEnter When `true`, enter was pressed along with <kbd>Shift</kbd>.\n * @returns `true` when selection left the block. `false` if stayed.\n */\nfunction leaveBlockEndOnEnter( editor: Editor, isSoftEnter: boolean ): boolean {\n\tconst model = editor.model;\n\tconst modelDoc = model.document;\n\tconst view = editor.editing.view;\n\tconst lastSelectionPosition = modelDoc.selection.getLastPosition()!;\n\tconst nodeBefore = lastSelectionPosition.nodeBefore;\n\n\tlet emptyLineRangeToRemoveOnEnter: Range;\n\n\tif ( isSoftEnter || !modelDoc.selection.isCollapsed || !lastSelectionPosition.isAtEnd || !nodeBefore || !nodeBefore.previousSibling ) {\n\t\treturn false;\n\t}\n\n\t// When the position is directly preceded by two soft breaks\n\t//\n\t//\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak>[]</codeBlock>\n\t//\n\t// it creates the following range that will be cleaned up before leaving:\n\t//\n\t//\t\t<codeBlock>foo[<softBreak></softBreak><softBreak></softBreak>]</codeBlock>\n\t//\n\tif ( isSoftBreakNode( nodeBefore ) && isSoftBreakNode( nodeBefore.previousSibling ) ) {\n\t\temptyLineRangeToRemoveOnEnter = model.createRange(\n\t\t\tmodel.createPositionBefore( nodeBefore.previousSibling ), model.createPositionAfter( nodeBefore )\n\t\t);\n\t}\n\n\t// When there's some text before the position that is\n\t// preceded by two soft breaks and made purely of white–space characters\n\t//\n\t//\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak> []</codeBlock>\n\t//\n\t// it creates the following range to clean up before leaving:\n\t//\n\t//\t\t<codeBlock>foo[<softBreak></softBreak><softBreak></softBreak> ]</codeBlock>\n\t//\n\telse if (\n\t\tisEmptyishTextNode( nodeBefore ) &&\n\t\tisSoftBreakNode( nodeBefore.previousSibling ) &&\n\t\tisSoftBreakNode( nodeBefore.previousSibling.previousSibling )\n\t) {\n\t\temptyLineRangeToRemoveOnEnter = model.createRange(\n\t\t\tmodel.createPositionBefore( nodeBefore.previousSibling.previousSibling! ), model.createPositionAfter( nodeBefore )\n\t\t);\n\t}\n\n\t// When there's some text before the position that is made purely of white–space characters\n\t// and is preceded by some other text made purely of white–space characters\n\t//\n\t//\t\t<codeBlock>foo<softBreak></softBreak> <softBreak></softBreak> []</codeBlock>\n\t//\n\t// it creates the following range to clean up before leaving:\n\t//\n\t//\t\t<codeBlock>foo[<softBreak></softBreak> <softBreak></softBreak> ]</codeBlock>\n\t//\n\telse if (\n\t\tisEmptyishTextNode( nodeBefore ) &&\n\t\tisSoftBreakNode( nodeBefore.previousSibling ) &&\n\t\tisEmptyishTextNode( nodeBefore.previousSibling.previousSibling ) &&\n\t\tnodeBefore.previousSibling.previousSibling &&\n\t\tisSoftBreakNode( nodeBefore.previousSibling.previousSibling.previousSibling )\n\t) {\n\t\temptyLineRangeToRemoveOnEnter = model.createRange(\n\t\t\tmodel.createPositionBefore( nodeBefore.previousSibling.previousSibling.previousSibling! ),\n\t\t\tmodel.createPositionAfter( nodeBefore )\n\t\t);\n\t}\n\n\t// Not leaving the block in the following cases:\n\t//\n\t//\t\t<codeBlock> []</codeBlock>\n\t//\t\t<codeBlock> a []</codeBlock>\n\t//\t\t<codeBlock>foo<softBreak></softBreak>[]</codeBlock>\n\t//\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak>bar[]</codeBlock>\n\t//\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak> a []</codeBlock>\n\t//\n\telse {\n\t\treturn false;\n\t}\n\n\t// We're doing everything in a single change block to have a single undo step.\n\teditor.model.change( writer => {\n\t\t// Remove the last <softBreak>s and all white space characters that followed them.\n\t\twriter.remove( emptyLineRangeToRemoveOnEnter );\n\n\t\t// \"Clone\" the <codeBlock> in the standard way.\n\t\teditor.execute( 'enter' );\n\n\t\tconst newBlock = modelDoc.selection.anchor!.parent as Element;\n\n\t\t// Make the cloned <codeBlock> a regular <paragraph> (with clean attributes, so no language).\n\t\twriter.rename( newBlock, DEFAULT_ELEMENT );\n\t\teditor.model.schema.removeDisallowedAttributes( [ newBlock ], writer );\n\t} );\n\n\t// Eye candy.\n\tview.scrollToTheSelection();\n\n\treturn true;\n}\n\nfunction isEmptyishTextNode( node: Node | null ) {\n\treturn node && node.is( '$text' ) && !node.data.match( /\\S/ );\n}\n\nfunction isSoftBreakNode( node: Node | null ) {\n\treturn node && node.is( 'element', 'softBreak' );\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/codeblockui\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { Collection } from 'ckeditor5/src/utils.js';\nimport {\n\tViewModel,\n\tSplitButtonView,\n\tcreateDropdown,\n\taddListToDropdown,\n\tMenuBarMenuListItemButtonView,\n\tMenuBarMenuListView,\n\tMenuBarMenuView,\n\tMenuBarMenuListItemView,\n\ttype ListDropdownButtonDefinition\n} from 'ckeditor5/src/ui.js';\nimport { IconCodeBlock } from 'ckeditor5/src/icons.js';\n\nimport { getNormalizedAndLocalizedLanguageDefinitions } from './utils.js';\n\nimport type { CodeBlockLanguageDefinition } from './codeblockconfig.js';\nimport type CodeBlockCommand from './codeblockcommand.js';\n\nimport '../theme/codeblock.css';\n\n/**\n * The code block UI plugin.\n *\n * Introduces the `'codeBlock'` dropdown.\n */\nexport default class CodeBlockUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CodeBlockUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst componentFactory = editor.ui.componentFactory;\n\t\tconst normalizedLanguageDefs = getNormalizedAndLocalizedLanguageDefinitions( editor );\n\t\tconst itemDefinitions = this._getLanguageListItemDefinitions( normalizedLanguageDefs );\n\t\tconst command: CodeBlockCommand = editor.commands.get( 'codeBlock' )!;\n\n\t\tcomponentFactory.add( 'codeBlock', locale => {\n\t\t\tconst dropdownView = createDropdown( locale, SplitButtonView );\n\t\t\tconst splitButtonView = dropdownView.buttonView;\n\t\t\tconst accessibleLabel = t( 'Insert code block' );\n\n\t\t\tsplitButtonView.set( {\n\t\t\t\tlabel: accessibleLabel,\n\t\t\t\ttooltip: true,\n\t\t\t\ticon: IconCodeBlock,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'isOn' ).to( command, 'value', value => !!value );\n\n\t\t\tsplitButtonView.on( 'execute', () => {\n\t\t\t\teditor.execute( 'codeBlock', {\n\t\t\t\t\tusePreviousLanguageChoice: true\n\t\t\t\t} );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\tdropdownView.on( 'execute', evt => {\n\t\t\t\teditor.execute( 'codeBlock', {\n\t\t\t\t\tlanguage: ( evt.source as any )._codeBlockLanguage,\n\t\t\t\t\tforceValue: true\n\t\t\t\t} );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\tdropdownView.class = 'ck-code-block-dropdown';\n\t\t\tdropdownView.bind( 'isEnabled' ).to( command );\n\n\t\t\taddListToDropdown( dropdownView, itemDefinitions, {\n\t\t\t\trole: 'menu',\n\t\t\t\tariaLabel: accessibleLabel\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\n\t\tcomponentFactory.add( 'menuBar:codeBlock', locale => {\n\t\t\tconst menuView = new MenuBarMenuView( locale );\n\n\t\t\tmenuView.buttonView.set( {\n\t\t\t\trole: 'menuitem',\n\t\t\t\tlabel: t( 'Code block' ),\n\t\t\t\ticon: IconCodeBlock\n\t\t\t} );\n\n\t\t\tmenuView.bind( 'isEnabled' ).to( command );\n\n\t\t\tconst listView = new MenuBarMenuListView( locale );\n\n\t\t\tlistView.set( {\n\t\t\t\tariaLabel: t( 'Insert code block' )\n\t\t\t} );\n\n\t\t\tfor ( const definition of itemDefinitions ) {\n\t\t\t\tconst listItemView = new MenuBarMenuListItemView( locale, menuView );\n\t\t\t\tconst buttonView = new MenuBarMenuListItemButtonView( locale );\n\n\t\t\t\tbuttonView.bind( ...Object.keys( definition.model ) as Array<keyof MenuBarMenuListItemButtonView> ).to( definition.model );\n\t\t\t\tbuttonView.set( {\n\t\t\t\t\tisToggleable: true,\n\t\t\t\t\trole: 'menuitemcheckbox'\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.delegate( 'execute' ).to( menuView );\n\n\t\t\t\tbuttonView.on( 'execute', () => {\n\t\t\t\t\teditor.execute( 'codeBlock', {\n\t\t\t\t\t\tlanguage: definition.model._codeBlockLanguage as string,\n\t\t\t\t\t\tforceValue: command.value == definition.model._codeBlockLanguage ? false : true\n\t\t\t\t\t} );\n\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t} );\n\n\t\t\t\tlistItemView.children.add( buttonView );\n\t\t\t\tlistView.items.add( listItemView );\n\t\t\t}\n\n\t\t\tmenuView.panelView.children.add( listView );\n\n\t\t\treturn menuView;\n\t\t} );\n\t}\n\n\t/**\n\t * A helper returning a collection of the `codeBlock` dropdown items representing languages\n\t * available for the user to choose from.\n\t */\n\tprivate _getLanguageListItemDefinitions(\n\t\tnormalizedLanguageDefs: Array<CodeBlockLanguageDefinition>\n\t): Collection<ListDropdownButtonDefinition> {\n\t\tconst editor = this.editor;\n\t\tconst command: CodeBlockCommand = editor.commands.get( 'codeBlock' )!;\n\t\tconst itemDefinitions = new Collection<ListDropdownButtonDefinition>();\n\n\t\tfor ( const languageDef of normalizedLanguageDefs ) {\n\t\t\tconst definition: ListDropdownButtonDefinition = {\n\t\t\t\ttype: 'button',\n\t\t\t\tmodel: new ViewModel( {\n\t\t\t\t\t_codeBlockLanguage: languageDef.language,\n\t\t\t\t\tlabel: languageDef.label,\n\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\twithText: true\n\t\t\t\t} )\n\t\t\t};\n\n\t\t\tdefinition.model.bind( 'isOn' ).to( command, 'value', value => {\n\t\t\t\treturn value === definition.model._codeBlockLanguage;\n\t\t\t} );\n\n\t\t\titemDefinitions.add( definition );\n\t\t}\n\n\t\treturn itemDefinitions;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/codeblock\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\n\nimport CodeBlockEditing from './codeblockediting.js';\nimport CodeBlockUI from './codeblockui.js';\n\n/**\n * The code block plugin.\n *\n * For more information about this feature check the {@glink api/code-block package page} and the\n * {@glink features/code-blocks code block} feature guide.\n *\n * This is a \"glue\" plugin that loads the {@link module:code-block/codeblockediting~CodeBlockEditing code block editing feature}\n * and the {@link module:code-block/codeblockui~CodeBlockUI code block UI feature}.\n */\nexport default class CodeBlock extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ CodeBlockEditing, CodeBlockUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CodeBlock' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["index.js","../src/utils.ts","../src/codeblockcommand.ts","../src/indentcodeblockcommand.ts","../src/outdentcodeblockcommand.ts","../src/converters.ts","../src/codeblockediting.ts","../src/codeblockui.ts","../src/codeblock.ts"],"names":["getNormalizedAndLocalizedLanguageDefinitions","editor","t","languageDefs","config","get","def","label","class","undefined","language","getPropertyAssociation","key","value","association","newKey","split","shift","getLeadingWhiteSpaces","textNode","data","match","rawSnippetTextToViewDocumentFragment","writer","text","fragment","createDocumentFragment","textLines","items","reduce","nodes","line","lineIndex","push","length","createElement","appendChild","getIndentOutdentPositions","model","selection","document","positions","isCollapsed","anchor","walker","getFirstRange","getWalker","ignoreElementEnd","direction","item","node","is","parent","previousSibling","startOffset","position","createPositionAt","every","pos","isEqual","isModelSelectionInCodeBlock","firstBlock","first","getSelectedBlocks","canBeCodeBlock","schema","element","isLimit","checkChild","getCodeBlockAriaAnnouncement","languagesToLabels","codeBlockLanguage","getAttribute","getTextNodeAtLineStart","createPositionBefore","nodeBefore","nodeAtStart","nodeAfter","CodeBlockCommand","Command","constructor","_lastLanguage","_getValue","isEnabled","_checkEnabled","execute","options","normalizedLanguagesDefs","firstLanguageInConfig","blocks","Array","from","forceValue","getLanguage","change","_applyCodeBlock","_removeCodeBlock","isCodeBlock","allowedBlocks","filter","block","rename","setAttribute","removeDisallowedAttributes","getChildren","child","forEach","remove","reverse","currentBlock","i","nextBlock","appendElement","merge","codeBlocks","range","createRangeOn","getItems","elementAfter","removeAttribute","lastLanguage","defaultLanguage","usePreviousLanguageChoice","IndentCodeBlockCommand","_indentSequence","indentSequenceTextElement","createText","insertContent","OutdentCodeBlockCommand","getLastOutdentableSequenceRange","deleteContent","createSelection","some","sequence","nodeAtPosition","leadingWhiteSpaces","lastIndexOfSequence","lastIndexOf","createRange","modelToViewCodeBlockInsertion","useLabels","languagesToClasses","evt","conversionApi","mapper","consumable","consume","targetViewPosition","toViewPosition","preAttributes","spellcheck","codeAttributes","code","createContainerElement","pre","insert","bindElements","modelToDataViewSoftBreakInsertion","name","dataViewToModelCodeBlockInsertion","editingView","classesToLanguages","defaultLanguageName","viewCodeElement","viewItem","viewPreElement","modelCursor","findAncestor","test","codeBlock","viewChildClasses","getClassNames","className","hasAttribute","convertChildren","safeInsert","updateConversionResult","dataViewToModelTextNewlinesInsertion","map","lastLine","getShiftedBy","offsetSize","softBreak","createPositionAfter","modelRange","dataViewToModelOrphanNodeConsumer","preElement","preChildren","childCodeElement","find","DEFAULT_ELEMENT","CodeBlockEditing","Plugin","pluginName","isOfficialPlugin","requires","ShiftEnter","define","languages","indentSequence","view","editing","commands","add","listenTo","commandName","shiftKey","command","stopPropagation","preventDefault","stop","context","register","allowWhere","allowChildren","disallowChildren","allowAttributes","allowAttributesOf","isBlock","addAttributeCheck","attributeName","getItem","isFormatting","getAttributeProperties","downcastDispatcher","on","priority","upcastDispatcher","insertionRange","targetRanges","toModelRange","start","dataTransfer","getData","UpcastWriter","content","plugins","has","ClipboardPipeline","contentRange","createRangeIn","hasSameParentAs","focus","docFragment","return","childCount","containsEntireContent","getAttributes","append","newDocumentFragment","getChild","checkAttribute","indent","outdent","registerChildCommand","positionParent","getLastPosition","leaveBlockStartOnEnter","isSoft","leaveBlockEndOnEnter","breakLineOnEnter","_initAriaAnnouncements","ui","lastFocusedCodeBlock","focusParent","ariaLiveAnnouncer","announce","modelDoc","lastSelectionPosition","insertText","isSoftEnter","isAtStart","isSoftBreakNode","newBlock","setSelection","scrollToTheSelection","emptyLineRangeToRemoveOnEnter","isAtEnd","isEmptyishTextNode","CodeBlockUI","componentFactory","normalizedLanguageDefs","itemDefinitions","_getLanguageListItemDefinitions","locale","dropdownView","createDropdown","SplitButtonView","splitButtonView","buttonView","accessibleLabel","set","tooltip","icon","IconCodeBlock","isToggleable","bind","to","source","_codeBlockLanguage","addListToDropdown","role","ariaLabel","menuView","MenuBarMenuView","listView","MenuBarMenuListView","definition","listItemView","MenuBarMenuListItemView","MenuBarMenuListItemButtonView","Object","keys","delegate","children","panelView","Collection","languageDef","type","ViewModel","withText","CodeBlock"],"mappings":"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,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACxD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACzD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS;AACxE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACxD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;AAC9F,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;AAC9F,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;AAC9F,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS;AAC3G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;AAC3G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;AAC3G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;AAC3G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACtG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACtG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS;AACzG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;AACvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;AACvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG1XR,GAAM,CAAA,CAAA,KAAA,CAAMiB,QAAAA,CAAAA,EAAAA,CAAYd,SAAY,CAAA;AACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMoF,yBAAAA,CAAAA,CAAAA,CAA4BtG,MAAOuG,CAAAA,UAAU,CAAE,IAAI,CAACF,eAAe,CAAA;AH2X7E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;AAC3H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACnH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;AACnG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGzXXtF,KAAMyF,CAAAA,aAAa,CAAEF,yBAA2BtE,CAAAA,CAAAA,QAAAA,CAAAA;AACjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHyXD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO;AGvXlE,CAAA,CAAA,CAAA,CAAA,CACD,aAAiC,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAC,IAAI,CAACqE,eAAe,CAAG,CAAA;AHwX/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGvXR,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHwXF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AACzF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;AACnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGtXL,MAAOhE,CAAAA,2BAAAA,CAA6B,IAAI,CAAC3D,MAAM,CAACqC,KAAK,CAACE,QAAQ,CAACD,SAAS,CAAA;AACzE,CAAA,CAAA,CAAA,CAAA;AACD;;AC7EA,CAAA,CAAA;AJscA,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;AACrD,CAAC,CAAC,CAAC,CIpcY,KAAMyF,CAAAA,uBAAgCjD,CAAAA,OAAAA,CAAAA,OAAAA,CAAAA;AACpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJqcD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ;AInc7E,CAAA,CAAA,CAAA,CAAA,CACD,eAAyC;AAEzCC,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAa/E,MAAc,CAAG;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAEA,MAAAA,CAAAA;AAEP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC2H,eAAe,CAAG3H,CAAAA,CAAAA,MAAAA,CAAOG,MAAM,CAACC,GAAG,CAAE,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA;AAC3C,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJicD,CAAC,CAAC,CAAC,CAAC,CAAC;AI/bH,CAAA,CAAA,CAAA,CAAA,CACD,OAAgC,CAAA,CAAA,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC8E,SAAS,CAAA,CAAA,CAAG,IAAI,CAACC,aAAa,CAAA,CAAA;AACpC,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJ+bD,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AAC7F,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS;AACjD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AI7bT,CAAA,CAAA,CAAA,CAAA,CACD,OAAgC,CAAA,CAAA,CAAA;AJ8bjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CI7bL,KAAMnF,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AJ8b5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CI7bL,KAAMqC,CAAAA,KAAAA,CAAQrC,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK;AAE1BA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAMwD,MAAM,CAAE,CAAA,CAAA,CAAA,CAAA;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMrD,SAAAA,CAAAA,CAAAA,CAAYJ,yBAA2BC,CAAAA,KAAAA,CAAAA;AJ6bhD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS;AACtF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS;AACtF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;AACzD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;AACvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;AACvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CI3bR,GAAM,CAAA,CAAA,KAAA,CAAMiB,QAAAA,CAAAA,EAAAA,CAAYd,SAAY,CAAA;AACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAM0E,CAAAA,KAAAA,CAAQc,CAAAA,CAAAA,+BAAiC3F,CAAAA,KAAAA,CAAOiB,CAAAA,QAAU,CAAA,CAAA,IAAI,CAACqE,eAAe,CAAA;AAEpF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKT,KAAQ,CAAA,CAAA;AJ2bjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;AAC/H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACvH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;AIzblG7E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAM4F,aAAa,CAAE5F,KAAM6F,CAAAA,eAAe,CAAEhB,KAAAA,CAAAA,CAAAA;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJ0bD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO;AACpE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;AIxb1D,CAAA,CAAA,CAAA,CAAA,CACD,aAAiC,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAC,IAAI,CAACS,eAAe,CAAG,CAAA;AJyb/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CIxbR,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMtF,KAAQ,CAAA,CAAA,CAAA,IAAI,CAACrC,MAAM,CAACqC,KAAK;AAE/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAACsB,2BAA6BtB,CAAAA,KAAAA,CAAME,QAAQ,CAACD,SAAS,CAAK,CAAA,CAAA;AJublE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CItbR,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJubF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AIpb7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAOF,yBAA2BC,CAAAA,KAAAA,CAAAA,CAAQ8F,IAAI,CAAE7E,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA;AAC/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO0E,+BAAiC3F,CAAAA,KAAAA,CAAAA,CAAOiB,QAAU,CAAA,CAAA,IAAI,CAACqE,eAAe,CAAA;AAC9E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,QAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,GAAA,CAAA,KAAA,CAAA;AACA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,UAAA,CAAA,EAAA,CAAA,GAAA,CAAA,MAAA,CAAA,QAAA,CAAA,KAAA,CAAA,GAAA,CAAA,OAAA,CAAA,WAAA,CAAA,EAAA,CAAA,GAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,CAAA,CAAA,CAAA,QAAA,CAAA,UAAA;AACA,CAAA;AACA,CAAA,CAAA,CAAA,GAAA,CAAA,QAAA,CAAA,CAAA,QAAA,CAAA,GAAA,CAAA,MAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,SAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,SAAA;AACA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA,IAAA;AACA,QAAA,CAASK,+BAAiC3F,CAAAA,KAAY,CAAA,CAAEiB,QAAkB,CAAA,CAAE8E,QAAgB,CAAA,CAAA;AJqb5F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AACpG,CIpbC,CAAA,CAAA,CAAA,KAAA,CAAMC,cAAAA,CAAiB7D,CAAAA,CAAAA,sBAAAA,CAAwBlB,QAAUjB,CAAAA,CAAAA,KAAAA,CAAAA;AAEzD,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAACgG,cAAiB,CAAA,CAAA;AJobxB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CInbL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,kBAAAA,CAAAA,CAAAA,CAAqBrH,qBAAuBoH,CAAAA,cAAAA,CAAAA;AJmbnD,CIlbC,CAAA,CAAA,CAAA,KAAA,CAAME,mBAAAA,CAAsBD,CAAAA,CAAAA,kBAAmBE,CAAAA,WAAW,CAAEJ,QAAAA,CAAAA;AJmb7D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC,CAAC,CAAC;AIhbJ,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKG,mBAAAA,CAAAA,CAAAA,CAAsBH,QAASnG,CAAAA,MAAM,CAAKqG,CAAAA,CAAAA,CAAAA,CAAAA,kBAAAA,CAAmBrG,MAAM,CAAG,CAAA;AJkb5E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CIjbL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AJkbD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CIhbF,EAAKsG,CAAAA,CAAAA,mBAAAA,CAAwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA;AJibnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CIhbL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,CAAEpF,CAAAA,MAAM,CAAA,CAAEE,WAAW,CAAA,CAAE,CAAA,CAAA,CAAGgF,cAAAA;AJgbjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACnF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAClB,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS;AAC3F,CAAC,CAAC,CAAC,CAAC,CAAC;AI7aJ,CAAA,CAAA,CAAA,CAAA,MAAOhG,CAAAA,KAAAA,CAAMoG,WAAW,CACvBpG,KAAMkB,CAAAA,gBAAgB,CAAEJ,MAASE,CAAAA,CAAAA,WAAAA,CAAAA,CAAAA,CAAekF,mBAChDlG,CAAAA,CAAAA,CAAAA,KAAAA,CAAMkB,gBAAgB,CAAEJ,MAAAA,CAASE,CAAAA,WAAekF,CAAAA,CAAAA,CAAAA,mBAAAA,CAAsBH,CAAAA,CAAAA,QAAAA,CAASnG,MAAM,CAAA,CAAA;AAEvF;;AC5JA,CAAA,CAAA;AL0kBA,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO;AAChF,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;AACf,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAClF,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AAC1B,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACnG,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC;AACnG,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACpE,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AAClF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/F,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AACjE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ;AACzC,CKxkBO,CAAA,CAAA,CAAA,QAAA,CAASyG,6BACfrG,CAAAA,KAAY,CAAA,CACZnC,YAAgD,CAChDyI,CAAAA,SAAAA,CAAqB,CAAA,CAAA,KAAK,CAAA,CAAA;ALskB3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO;AAC3B,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACR,CKpkBC,CAAA,CAAA,CAAA,KAAA,CAAMC,kBAAAA,CAAAA,CAAAA,CAAqBlI,sBAAwBR,CAAAA,YAAAA,CAAc,CAAA,CAAA,QAAA,CAAY,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA;ALqkB9E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;AACtB,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;AACjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACR,CKnkBC,CAAA,CAAA,CAAA,KAAA,CAAMmE,iBAAAA,CAAAA,CAAAA,CAAoB3D,sBAAwBR,CAAAA,YAAAA,CAAc,CAAA,CAAA,QAAA,CAAY,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA;ALokB7E,CAAC,CAAC,CAAC,CKlkBF,MAAA,CAAO,CAAE2I,GAAAA,CAAAA,CAAK1H,IAAM2H,CAAAA,CAAAA,aAAAA,CAAAA,CAAAA,CAAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,CAAA,CAAExH,MAAM,CAAA,CAAEyH,MAAM,CAAEC,CAAAA,UAAU,CAAE,CAAA,CAAA,CAAA,CAAGF,aAAAA;AAEvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAACE,UAAWC,CAAAA,OAAO,CAAE9H,IAAK6B,CAAAA,IAAI,CAAA,CAAE,CAAa,MAAA,CAAA,CAAA,CAAA,CAAA;AACjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMsB,iBAAoBnD,CAAAA,CAAAA,CAAAA,IAAAA,CAAK6B,IAAI,CAACuB,YAAY,CAAE,CAAA,QAAA,CAAA,CAAA;ALikBpD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKhkBL,KAAM2E,CAAAA,kBAAAA,CAAqBH,CAAAA,CAAAA,MAAAA,CAAOI,cAAc,CAAE9G,KAAAA,CAAMoC,oBAAoB,CAAEtD,IAAAA,CAAK6B,IAAI,CAAA,CAAA;AACvF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMoG,aAAAA,CAAAA,CAAAA,CAAwC,CAAC,CAAA;ALikBjD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AK9jBlD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKT,SAAY,CAAA,CAAA;AAChBS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,aAAa,CAAE,CAAA,IAAA,CAAA,QAAA,CAAA,CAAiB,CAAA,CAAA,CAAG/E,iBAAiB,CAAEC,iBAAmB,CAAA;AACzE8E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,aAAAA,CAAcC,UAAU,CAAA,CAAA,CAAG,CAAA,KAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,cAAiBV,CAAAA,CAAAA,CAAAA,kBAAkB,CAAEtE,iBAAAA,CAAmB,CAAG,CAAA,CAAA;AL+jBnE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK9jBR/D,KAAOqI,CAAAA,CAAAA,kBAAkB,CAAEtE,iBAAmB;AL+jBjD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK9jBF9D,CAAAA,CAAAA,CAAAA,SAAAA;AACJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM+I,IAAOjI,CAAAA,CAAAA,CAAAA,MAAAA,CAAOkI,sBAAsB,CAAE,CAAA,IAAA,CAAQF,CAAAA,CAAAA,cAAAA,CAAAA;AAEpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAMG,CAAAA,GAAMnI,CAAAA,CAAAA,CAAAA,MAAAA,CAAOkI,sBAAsB,CAAE,CAAA,GAAA,CAAA,CAAOJ,CAAAA,aAAeG,CAAAA,CAAAA,IAAAA,CAAAA;AL8jBnE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK5jBLjI,MAAOoI,CAAAA,MAAM,CAAER,kBAAoBO,CAAAA,CAAAA,GAAAA,CAAAA;AAEnCV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOY,YAAY,CAAExI,IAAK6B,CAAAA,IAAI,CAAauG,CAAAA,IAAAA,CAAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;AL2jBA,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;AAC1E,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;AACf,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAChE,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AAChB,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAC5C,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ;AACzC,CAAC,CAAC,CAAC,CKzjBI,QAASK,CAAAA,iCAAAA,CAAmCvH,KAAY,CAAA,CAAA;AL0jB/D,CAAC,CAAC,CAAC,CKzjBF,MAAA,CAAO,CAAEwG,GAAAA,CAAAA,CAAK1H,IAAM2H,CAAAA,CAAAA,aAAAA,CAAAA,CAAAA,CAAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK3H,IAAAA,CAAK6B,IAAI,CAACG,MAAM,CAAE0G,IAAI,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAc,CAAA,CAAA;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,CAAA,CAAEvI,MAAM,CAAA,CAAEyH,MAAM,CAAEC,CAAAA,UAAU,CAAE,CAAA,CAAA,CAAA,CAAGF,aAAAA;AAEvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAACE,UAAWC,CAAAA,OAAO,CAAE9H,IAAK6B,CAAAA,IAAI,CAAA,CAAE,CAAa,MAAA,CAAA,CAAA,CAAA,CAAA;AACjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALwjBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKtjBL,KAAMM,CAAAA,QAAAA,CAAWyF,CAAAA,CAAAA,MAAAA,CAAOI,cAAc,CAAE9G,KAAAA,CAAMoC,oBAAoB,CAAEtD,IAAAA,CAAK6B,IAAI,CAAA,CAAA;AAE7E1B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOoI,MAAM,CAAEpG,QAAUhC,CAAAA,CAAAA,MAAAA,CAAOuG,UAAU,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;ALqjBA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;AAC/D,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;AACf,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAClE,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AAChB,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC3D,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AAClF,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ;AKnjBxC,CAAA,CAAA,CAAA,CACM,QAAA,CAASiC,iCACfC,CAAAA,WAAwB,CAAA,CACxB7J,YAAgD,CAAA,CAAA;ALkjBjD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;AACzB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACR,CKhjBC,CAAA,CAAA,CAAA,KAAA,CAAM8J,kBAAAA,CAAAA,CAAAA,CAAqBtJ,sBAAwBR,CAAAA,YAAAA,CAAc,CAAA,CAAA,KAAA,CAAS,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA;AAC1E,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM+J,mBAAsB/J,CAAAA,CAAAA,CAAAA,YAAY,CAAE,CAAA,CAAG,CAACO,QAAQ;ALijBvD,CAAC,CAAC,CAAC,CK/iBF,MAAA,CAAO,CAAEoI,GAAAA,CAAAA,CAAK1H,IAAM2H,CAAAA,CAAAA,aAAAA,CAAAA,CAAAA,CAAAA;ALgjBrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK/iBL,KAAMoB,CAAAA,eAAAA,CAAkB/I,CAAAA,CAAAA,IAAAA,CAAKgJ,QAAQ;ALgjBvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK/iBL,KAAMC,CAAAA,cAAAA,CAAiBF,CAAAA,CAAAA,eAAAA,CAAgB/G,MAAM;AAE7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAACiH,cAAkB,CAAA,CAAA,CAAA,CAAA,CAACA,cAAAA,CAAelH,EAAE,CAAE,CAAA,OAAA,CAAA,CAAW,CAAA,CAAA,GAAA,CAAU,CAAA,CAAA,CAAA;AAChE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL+iBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK;AK5iBrF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK/B,IAAKkJ,CAAAA,WAAW,CAACC,YAAY,CAAE,CAAgB,SAAA,CAAA,CAAA,CAAA,CAAA;AACnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,CAAEtB,CAAAA,UAAU,CAAA,CAAE1H,MAAM,CAAA,CAAE,CAAA,CAAA,CAAGwH,aAAAA;AAE/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAACE,UAAAA,CAAWuB,IAAI,CAAEL,eAAiB,CAAA,CAAA;AL4iB1C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK5iBiCL,IAAM,CAAA,CAAA;AL6iBlD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK7iBqD,CAAA,CAAA,CAAA;AAC1D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL8iBF,CK5iBE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMW,SAAAA,CAAYlJ,CAAAA,CAAAA,MAAOY,CAAAA,aAAa,CAAE,CAAA,SAAA,CAAA,CAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMuI,gBAAmB,CAAA,CAAA,CAAA;AAAKP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,eAAAA,CAAgBQ,aAAa,CAAA;AAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL+iBjE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACrG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;AACpG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI;AACxD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK7iBL,EAAK,CAAA,CAAA,CAACD,gBAAiBxI,CAAAA,MAAM,CAAG,CAAA;AAC/BwI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,CAAiBzI,IAAI,CAAE,CAAA,CAAA,CAAA;AACxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL8iBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACxG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK5iBL,GAAM,CAAA,CAAA,KAAA,CAAM2I,SAAAA,CAAAA,EAAAA,CAAaF,gBAAmB,CAAA;AL6iB9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK5iBR,KAAA,CAAMhK,QAAAA,CAAAA,CAAAA,CAAWuJ,kBAAkB,CAAEW,SAAW,CAAA;AAEhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKlK,QAAW,CAAA,CAAA;AL4iBnB,CK3iBIa,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAO+E,CAAAA,YAAY,CAAE,CAAA,QAAA,CAAA,CAAY5F,CAAAA,QAAU+J,CAAAA,CAAAA,SAAAA,CAAAA;AAC3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL4iBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AKziB/E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAACA,SAAAA,CAAUI,YAAY,CAAE,CAAA,QAAA,CAAe,CAAA,CAAA,CAAA;AL2iB/C,CK1iBGtJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAO+E,CAAAA,YAAY,CAAE,CAAA,QAAA,CAAA,CAAY4D,CAAAA,mBAAqBO,CAAAA,CAAAA,SAAAA,CAAAA;AACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL2iBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACtE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKziBL1B,aAAc+B,CAAAA,eAAe,CAAEX,eAAiBM,CAAAA,CAAAA,SAAAA,CAAAA;AL0iBlD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;AKviBvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAC1B,aAAcgC,CAAAA,UAAU,CAAEN,SAAWrJ,CAAAA,CAAAA,IAAAA,CAAKkJ,WAAW,CAAK,CAAA,CAAA;AAC/D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALyiBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKviBLrB,UAAWC,CAAAA,OAAO,CAAEiB,eAAiB,CAAA,CAAA;ALwiBvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKxiB8BL,IAAM,CAAA,CAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL0iBpD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKxiBLf,aAAciC,CAAAA,sBAAsB,CAAEP,SAAWrJ,CAAAA,CAAAA,IAAAA,CAAAA;AAClD,CAAA,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;ALwiBA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;AACf,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACpE,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AAChB,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAClF,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ;AKtiBnD,CACM,CAAA,CAAA,CAAA,QAAA,CAAS6J,oCAAAA,CAAAA,CAAAA,CAAAA;AACf,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAEnC,GAAK1H,CAAAA,CAAAA,IAAAA,CAAM,CAAA,CAAA,CAAE6H,UAAU,CAAA,CAAE1H,MAAM,CAAA,CAAE,CAAA,CAAA,CAAA;ALuiB3C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKtiBL,GAAIgC,CAAAA,QAAAA,CAAWnC,CAAAA,CAAAA,IAAAA,CAAKkJ,WAAW;ALuiBjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AKpiBvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAACrB,UAAWuB,CAAAA,IAAI,CAAEpJ,IAAAA,CAAKgJ,QAAQ,CAAK,CAAA,CAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALsiBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AKniBpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAAC7G,QAAAA,CAASgH,YAAY,CAAE,CAAA,SAAA,CAAgB,CAAA,CAAA,CAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALqiBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKniBLtB,UAAWC,CAAAA,OAAO,CAAE9H,IAAAA,CAAKgJ,QAAQ,CAAA;AAEjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM5I,IAAOJ,CAAAA,CAAAA,CAAAA,IAAAA,CAAKgJ,QAAQ,CAAChJ,IAAI;ALmiBjC,CKliBE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMO,SAAAA,CAAYH,CAAAA,CAAAA,IAAKR,CAAAA,KAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOkK,GAAG,CAAE9J,CAAAA,IAAAA,CAAQG,CAAAA,CAAAA,MAAOuG,CAAAA,UAAU,CAAE1G,IAAAA,CAAAA,CAAAA;AACrE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM+J,QAAAA,CAAAA,CAAAA,CAAWxJ,SAAS,CAAEA,SAAUO,CAAAA,MAAM,CAAG,CAAA,CAAA,CAAG,CAAA;ALmiBpD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKjiBL,GAAM,CAAA,CAAA,KAAA,CAAMgB,IAAAA,CAAAA,EAAAA,CAAQvB,SAAY,CAAA;ALkiBlC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKjiBRJ,MAAOoI,CAAAA,MAAM,CAAEzG,IAAMK,CAAAA,CAAAA,QAAAA,CAAAA;AACrBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CAAWA,QAAS6H,CAAAA,YAAY,CAAElI,IAAAA,CAAKmI,UAAU,CAAA;AAEjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAKnI,CAAAA,CAAAA,IAAAA,CAASiI,CAAAA,CAAAA,CAAAA,CAAAA,QAAW,CAAA,CAAA;ALiiB5B,CKhiBI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMG,SAAAA,CAAY/J,CAAAA,CAAAA,MAAOY,CAAAA,aAAa,CAAE,CAAA,SAAA,CAAA,CAAA;ALiiB5C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK/hBXZ,MAAOoI,CAAAA,MAAM,CAAE2B,SAAW/H,CAAAA,CAAAA,QAAAA,CAAAA;ALgiB9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK/hBXA,QAAWhC,CAAAA,CAAAA,CAAAA,MAAAA,CAAOgK,mBAAmB,CAAED,SAAAA,CAAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAlK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKoK,UAAU,CAAA,CAAA,CAAGjK,MAAAA,CAAOmH,WAAW,CACnCtH,IAAAA,CAAKkJ,WAAW,CAAA,CAChB/G,QAAAA,CAAAA;AAEDnC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKkJ,WAAW,CAAA,CAAA,CAAG/G,QAAAA;AACpB,CAAA,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;AL2hBA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAC1F,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AACD,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;AACf,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AACjC,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC3C,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACrC,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACV,CAAC,CAAC,CAAC,CAAC,GAAG;AACP,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;AACrB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACR,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;AACrC,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AAC/B,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;AACnD,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ;AKzhBxC,CACM,CAAA,CAAA,CAAA,QAAA,CAASkI,iCAAAA,CAAAA,CAAAA,CAAAA;AACf,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAE3C,GAAAA,CAAAA,CAAK1H,IAAM,CAAA,CAAA,CAAA,CAAE6H,UAAU,CAAA,CAAE,CAAA,CAAA,CAAA;AL0hBnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKzhBL,KAAMyC,CAAAA,UAAAA,CAAatK,CAAAA,CAAAA,IAAAA,CAAKgJ,QAAQ;AL0hBlC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;AACzB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKxhBL,EAAA,CAAA,CAAKsB,UAAAA,CAAWnB,YAAY,CAAE,CAAA,GAAA,CAAU,CAAA,CAAA,CAAA;AACvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMoB,WAAcjG,CAAAA,CAAAA,CAAAA,KAAAA,CAAMC,IAAI,CAAE+F,UAAAA,CAAWlF,WAAW,CAAA,CAAA,CAAA;ALwhBxD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKvhBL,KAAA,CAAMoF,gBAAAA,CAAAA,CAAAA,CAAmBD,WAAAA,CAAYE,IAAI,CAAE3I,CAAAA,IAAQA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKC,EAAE,CAAE,CAAA,OAAA,CAAW,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA;ALwhBzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ;AKrhBnF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAACyI,gBAAmB,CAAA,CAAA;AACxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALuhBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKrhBL,GAAM,CAAA,CAAA,KAAA,CAAMnF,KAAAA,CAAAA,EAAAA,CAASkF,WAAc,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAKlF,CAAAA,CAAAA,KAAAA,CAAUmF,CAAAA,CAAAA,CAAAA,CAAAA,gBAAoB,CAAA,CAAA,CAAA,CAAA,CAACnF,KAAMtD,CAAAA,EAAE,CAAE,CAAY,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,QAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALshBH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;AACpE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AAClF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKphBR8F,UAAWC,CAAAA,OAAO,CAAEzC,KAAO,CAAA,CAAA;ALqhB9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKrhBiBqD,IAAM,CAAA,CAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACzC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA;AACD;;ACzSA,KAAMgC,CAAAA,eAAkB,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA;AAExB,CAAA,CAAA;ANi0BA,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AAC7C,CAAC;AACD,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;AAC3E,CAAC,CAAC,CAAC,CM/zBY,KAAMC,CAAAA,gBAAyBC,CAAAA,OAAAA,CAAAA,MAAAA,CAAAA;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANg0BD,CAAC,CAAC,CAAC,CAAC,CAAC;AM9zBH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAkBC,UAAa,CAAA,CAAA,CAAA;AN+zBhC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM9zBL,MAAA,CAAO,CAAA,gBAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN8zBD,CAAC,CAAC,CAAC,CAAC,CAAC;AM5zBH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAA2BC,gBAAyB,CAAA,CAAA,CAAA;AN6zBrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM5zBL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN4zBD,CAAC,CAAC,CAAC,CAAC,CAAC;AM1zBH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAkBC,QAAW,CAAA,CAAA,CAAA;AN2zB9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM1zBL,MAAO,CAAA;AAAEC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN4zBD,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CM1zBCpH,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAa/E,MAAc,CAAG;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAEA,MAAAA,CAAAA;AAEPA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOG,MAAM,CAACiM,MAAM,CAAE,CAAA,SAAA,CAAa,CAAA,CAAA;AN0zBrC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMzzBRC,SAAW,CAAA,CAAA;AACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN0zBJ,CM1zBM5L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,SAAA,CAAA;AN2zBhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM3zBUH,KAAO,CAAA,CAAA,CAAA,KAAA,CAAA,IAAA;AAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN6zBJ,CM7zBMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,CAAA,CAAA;AN8zBhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM9zBEH,KAAO,CAAA,CAAA,CAAA,CAAA;AAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANg0BJ,CMh0BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,EAAA,CAAA;ANi0BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMj0BGH,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANm0BJ,CMn0BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,GAAA,CAAA;ANo0BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMp0BIH,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANs0BJ,CMt0BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,GAAA,CAAA;ANu0BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMv0BIH,KAAO,CAAA,CAAA,CAAA,GAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANy0BJ,CMz0BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,IAAA,CAAA;AN00BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM10BKH,KAAO,CAAA,CAAA,CAAA,IAAA;AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN40BJ,CM50BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,EAAA,CAAA;AN60BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM70BGH,KAAO,CAAA,CAAA,CAAA,EAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN+0BJ,CM/0BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,IAAA,CAAA;ANg1BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMh1BKH,KAAO,CAAA,CAAA,CAAA,IAAA;AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANk1BJ,CMl1BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,IAAA,CAAA;ANm1BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMn1BKH,KAAO,CAAA,CAAA,CAAA,IAAA;AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANq1BJ,CMr1BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,UAAA,CAAA;ANs1BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMt1BWH,KAAO,CAAA,CAAA,CAAA,UAAA;AAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANw1BJ,CMx1BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,GAAA,CAAA;ANy1BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMz1BIH,KAAO,CAAA,CAAA,CAAA,GAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN21BJ,CM31BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,MAAA,CAAA;AN41BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM51BOH,KAAO,CAAA,CAAA,CAAA,MAAA;AAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACtC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN81BJ,CM91BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,IAAA,CAAA;AN+1BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM/1BKH,KAAO,CAAA,CAAA,CAAA,IAAA;AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANi2BJ,CMj2BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,UAAA,CAAA;ANk2BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMl2BWH,KAAO,CAAA,CAAA,CAAA,UAAA;AAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANo2BJ,CMp2BMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAU,CAAA,CAAA,CAAA,GAAA,CAAA;ANq2BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMr2BIH,KAAO,CAAA,CAAA,CAAA,GAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANu2BJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG;AAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMr2BRgM,cAAgB,CAAA,CAAA,CAAA,CAAA,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANq2BD,CAAC,CAAC,CAAC,CAAC,CAAC;AMn2BH,CAAA,CAAA,CAAA,CAAA,CACD,IAAoB,CAAA,CAAA,CAAA;ANo2BrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMn2BL,KAAMtM,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMgE,MAAShE,CAAAA,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK,CAAC2B,MAAM;ANo2BpC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMn2BL,KAAM3B,CAAAA,KAAAA,CAAQrC,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMkK,IAAOvM,CAAAA,CAAAA,CAAAA,MAAAA,CAAOwM,OAAO,CAACD,IAAI;AAEhC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMjH,uBAAAA,CAAAA,CAAAA,CAA0BvF,4CAA8CC,CAAAA,MAAAA,CAAAA;ANm2BhF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;AMh2BzBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOyM,QAAQ,CAACC,GAAG,CAAE,CAAA,SAAA,CAAA,CAAA,CAAa,GAAI7H,CAAAA,gBAAkB7E,CAAAA,MAAAA,CAAAA,CAAAA;ANk2B1D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW;AM/1B7CA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOyM,QAAQ,CAACC,GAAG,CAAE,CAAA,eAAA,CAAA,CAAA,CAAmB,GAAIhF,CAAAA,sBAAwB1H,CAAAA,MAAAA,CAAAA,CAAAA;AACpEA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOyM,QAAQ,CAACC,GAAG,CAAE,CAAA,gBAAA,CAAA,CAAA,CAAoB,GAAI3E,CAAAA,uBAAyB/H,CAAAA,MAAAA,CAAAA,CAAAA;ANi2BxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM/1BL,IAAI,CAAC2M,QAAQ,CAAwBJ,IAAAA,CAAKhK,QAAQ,CAAE,CAAA,CAAA,GAAA,CAAA,CAAO,CAAA,CAAEsG,GAAK1H,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMyL,WAAczL,CAAAA,CAAAA,CAAAA,IAAAA,CAAK0L,QAAQ,CAAA,CAAA,CAAG,CAAqB,gBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,eAAA,CAAA;AACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,OAA4D9M,CAAAA,CAAAA,CAAAA,MAAAA,CAAOyM,QAAQ,CAACrM,GAAG,CAAEwM,WAAAA,CAAAA;ANg2B1F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM91BR,EAAK,CAAA,CAAA,CAACE,OAAQ5H,CAAAA,SAAS,CAAG,CAAA;AACzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAlF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOoF,OAAO,CAAEwH,WAAAA,CAAAA;AAEhBzL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAK4L,eAAe,CAAA,CAAA;AACpB5L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAK6L,cAAc,CAAA,CAAA;AACnBnE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAIoE,IAAI,CAAA,CAAA;AN61BX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM51BH,CAAA,CAAA;AN61BL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM71BJC,OAAS,CAAA,CAAA,CAAA,GAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN+1BtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM71BLlJ,MAAOmJ,CAAAA,QAAQ,CAAE,CAAA,SAAA,CAAa,CAAA,CAAA;AN81BhC,CM71BGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAY,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA;AN81Bf,CM71BGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,aAAe,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA;AN81BlB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC3H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;AAC9H,CM71BGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAkB,CAAA,CAAA,CAAA,CAAA,YAAA,CAAA;AN81BrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM71BRC,eAAiB,CAAA,CAAA;AAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,QAAA;AAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANg2BlC,CM/1BGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,iBAAmB,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA;ANg2BtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM/1BRC,OAAS,CAAA,CAAA;AACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANg2BF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ;AACjE,CM91BEzJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAO0J,CAAAA,iBAAiB,CAAE,CAAER,OAASS,CAAAA,CAAAA,aAAAA,CAAAA,CAAAA,CAAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAMxK,CAAAA,MAAAA,CAAS+J,CAAAA,CAAAA,OAAQU,CAAAA,OAAO,CAAEV,OAAAA,CAAQjL,MAAM,CAAG,CAAA,CAAA,CAAA,CAAA;AACjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM4L,YAAe7J,CAAAA,CAAAA,CAAAA,MAAAA,CAAO8J,sBAAsB,CAAEH,aAAAA,CAAAA,CAAgBE,YAAY;AAEhF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKA,YAAgB1K,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAAUA,MAAO0G,CAAAA,IAAI,CAAI,CAAA,CAAA,CAAA,CAAA,SAAA,CAAc,CAAA,CAAA;AN81B/D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM71BX,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN81BF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AACrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM51BL7J,MAAOwM,CAAAA,OAAO,CAACuB,kBAAkB,CAACC,EAAE,CACnC,CAAA,MAAA,CAAA,SAAA,CAAA,CACAtF,CAAAA,6BAA+BrG,CAAAA,KAAAA,CAAAA,CAAOiD,uBAAyB,CAAA,CAAA,IAAA,CAAA,CAAA;AN21BlE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMz1BLtF,MAAOmB,CAAAA,IAAI,CAAC4M,kBAAkB,CAACC,EAAE,CAChC,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA,CACAtF,6BAAAA,CAA+BrG,KAAOiD,CAAAA,CAAAA,uBAAAA,CAAAA,CAAAA;ANw1BzC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMt1BLtF,MAAOmB,CAAAA,IAAI,CAAC4M,kBAAkB,CAACC,EAAE,CAChC,CAAA,MAAA,CAAA,SAAA,CAAA,CACApE,CAAAA,iCAAAA,CAAmCvH,KACnC,CAAA,CAAA,CAAA;ANo1BH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMp1BN4L,QAAU,CAAA,CAAA,CAAA,IAAA;AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANs1BtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMp1BLjO,MAAOmB,CAAAA,IAAI,CAAC+M,gBAAgB,CAACF,EAAE,CAC9B,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,CACAlE,iCAAAA,CAAmCyC,IAAMjH,CAAAA,CAAAA,uBAAAA,CAAAA,CAAAA;AAE1CtF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOmB,IAAI,CAAC+M,gBAAgB,CAACF,EAAE,CAAmB,CAAQhD,IAAAA,CAAAA,CAAAA,CAAAA,oCAAAA,CAAAA,CAAAA,CAAAA;AAC1DhL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOmB,IAAI,CAAC+M,gBAAgB,CAACF,EAAE,CAAsB,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,CAAexC,iCAAqC,CAAA,CAAA,CAAA,CAAA;ANk1B3G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMl1BkGyC,QAAU,CAAA,CAAA,CAAA,IAAA;AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANo1B9H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAChH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACzG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU;AMj1B3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACtB,QAAQ,CAAE3M,MAAAA,CAAOwM,OAAO,CAACD,IAAI,CAAChK,QAAQ,CAAA,CAAE,CAAkB,cAAA,CAAA,CAAA,CAAA,CAAEsG,GAAK1H,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;ANm1BxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMl1BR,GAAIgN,CAAAA,cAAAA,CAAiB9L,CAAAA,CAAAA,KAAAA,CAAMoG,WAAW,CAAEpG,KAAAA,CAAME,QAAQ,CAACD,SAAS,CAACI,MAAM,CAAA;ANm1B1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;AACvD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMj1BR,EAAKvB,CAAAA,CAAAA,IAAAA,CAAKiN,YAAY,CAAG,CAAA;ANk1B5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMj1BXD,cAAiBnO,CAAAA,CAAAA,CAAAA,MAAAA,CAAOwM,OAAO,CAACzD,MAAM,CAACsF,YAAY,CAAElN,IAAAA,CAAKiN,YAAY,CAAE,CAAG,CAAA,CAAA;AAC5E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANk1BH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMh1BR,EAAK,CAAA,CAAA,CAACD,cAAAA,CAAeG,KAAK,CAACnL,MAAM,CAACD,EAAE,CAAE,CAAA,OAAA,CAAA,CAAW,CAAA,CAAA,SAAA,CAAgB,CAAA,CAAA,CAAA;AAChE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM3B,IAAOJ,CAAAA,CAAAA,CAAAA,IAAAA,CAAKoN,YAAY,CAACC,OAAO,CAAE,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;ANg1B3C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM/0BR,KAAMlN,CAAAA,MAAAA,CAAS,CAAA,CAAA,GAAA,CAAImN,YAAczO,CAAAA,MAAAA,CAAOwM,OAAO,CAACD,IAAI,CAAChK,QAAQ,CAAA;ANg1BhE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO;AAC3E,CM90BGpB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAKuN,CAAAA,OAAO,CAAA,CAAA,CAAGrN,oCAAAA,CAAsCC,MAAQC,CAAAA,CAAAA,IAAAA,CAAAA;AAC9D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKvB,MAAO2O,CAAAA,OAAO,CAACC,GAAG,CAAE,CAAwB,iBAAA,CAAA,CAAA,CAAA,CAAA;AN80BnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM70BR5O,MAAO2O,CAAAA,OAAO,CAACvO,GAAG,CAAEyO,iBAAAA,CAAAA,CAAoBb,EAAE,CAAkC,CAAoB,gBAAA,CAAA,CAAA,CAAA,CAAEnF,GAAK1H,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AN80B1G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM70BX,KAAMkB,CAAAA,KAAAA,CAAQrC,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,SAAYD,CAAAA,CAAAA,CAAAA,KAAAA,CAAME,QAAQ,CAACD,SAAS;AN80B9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM50BX,EAAK,CAAA,CAAA,CAACA,SAAAA,CAAUI,MAAM,CAAES,MAAM,CAACD,EAAE,CAAE,CAAA,OAAA,CAAA,CAAW,CAAA,CAAA,SAAA,CAAgB,CAAA,CAAA,CAAA;AAC7D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN60BJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM30BXb,KAAMwD,CAAAA,MAAM,CAAEvE,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMwN,YAAexN,CAAAA,CAAAA,CAAAA,MAAAA,CAAOyN,aAAa,CAAE5N,IAAAA,CAAKuN,OAAO,CAAA;AAEvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAM1L,CAAAA,IAAQ,CAAA,EAAA,CAAA;AAAK8L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAa1H,QAAQ,CAAA;AN40BnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM50BmC,CAAG;AN60B1D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM50BjB,EAAA,CAAA,CAAKpE,IAAAA,CAAKE,EAAE,CAAE,CAAA,IAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAACc,MAAOG,CAAAA,UAAU,CAAE7B,SAAAA,CAAUI,MAAM,CAAGM,CAAAA,IAAS,CAAA,CAAA,CAAA;AACzE1B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOoF,MAAM,CAAE1D,IAAAA,CAAAA;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN60BF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACtG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;AAC1G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACzG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AACpG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM;AAC3E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM30BL,IAAI,CAAC2J,QAAQ,CAAgCtK,KAAAA,CAAO,CAAA,CAAA,kBAAA,CAAA,CAAsB,CAAA,CAAEwG,GAAAA,CAAAA,CAAK,CAAEvG,SAAW,CAAA,CAAA,CAAA,CAAA;AN40BhG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM30BR,KAAMI,CAAAA,MAAAA,CAASJ,CAAAA,CAAAA,SAAAA,CAAUI,MAAM;AAE/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKJ,SAAAA,CAAUG,WAAW,CAAA,CAAA,CAAA,CAAI,CAACC,MAAAA,CAAOS,MAAM,CAACD,EAAE,CAAE,CAAA,OAAA,CAAA,CAAA,CAAW,CAAA,SAAA,CAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,CAACR,MAAAA,CAAOsM,eAAe,CAAE1M,SAAAA,CAAU2M,KAAK,CAAM,CAAA,CAAA;AAC1H,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN20BH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMz0BR5M,KAAMwD,CAAAA,MAAM,CAAEvE,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AN00BjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMz0BX,KAAM4N,CAAAA,WAAAA,CAAcrG,CAAAA,CAAAA,GAAAA,CAAIsG,MAAM;AN00BlC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;AMv0BpH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACCzM,MAAAA,CAAOS,MAAM,CAACD,EAAE,CAAE,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAChBgM,WAAAA,CAAYE,UAAU,CAAG,CAAA,CAAA,CAAA,CAAK9M,CAAAA,CAAAA,CAAAA,SAAU+M,CAAAA,qBAAqB,CAAE3M,MAAOS,CAAAA,MAAM,CAAC,CAC9E,CAAA,CAAA;ANs0BN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMr0Bd,KAAMqH,CAAAA,SAAAA,CAAYlJ,CAAAA,CAAAA,MAAAA,CAAOY,aAAa,CAAE,CAAA,SAAA,CAAA,CAAA,CAAaQ,MAAOS,CAAAA,MAAM,CAACmM,aAAa,CAAA,CAAA,CAAA;ANs0BrF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMr0BdhO,MAAOiO,CAAAA,MAAM,CAAEL,WAAa1E,CAAAA,CAAAA,SAAAA,CAAAA;ANs0BjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMp0Bd,KAAA,CAAMgF,mBAAAA,CAAAA,CAAAA,CAAsBlO,MAAAA,CAAOG,sBAAsB,CAAA,CAAA;ANq0B9D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMp0BdH,MAAOiO,CAAAA,MAAM,CAAE/E,SAAWgF,CAAAA,CAAAA,mBAAAA,CAAAA;AAE1B3G,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAIsG,MAAM,CAAA,CAAA,CAAGK,mBAAAA;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANo0BJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI;AACpF,CMl0BI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMtO,QAAAA,CAAWgO,CAAAA,CAAAA,WAAYO,CAAAA,QAAQ,CAAE,CAAA,CAAA;AAEvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKzL,MAAO0L,CAAAA,cAAc,CAAExO,QAAAA,CAAAA,CAAU,CAAW,IAAA,CAAA,CAAA,CAAA,CAAA;ANk0BrD,CMj0BKI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAO+E,CAAAA,YAAY,CAAE,CAAA,IAAA,CAAA,CAAQ,CAAA,IAAMnF,CAAAA,CAAAA,QAAAA,CAAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANi0BD,CAAC,CAAC,CAAC,CAAC,CAAC;AM/zBH,CAAA,CAAA,CAAA,CAAA,CACD,SAAyB,CAAA,CAAA,CAAA;ANg0B1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM/zBL,KAAMlB,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;ANg0B5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM/zBL,KAAMyM,CAAAA,QAAAA,CAAWzM,CAAAA,CAAAA,MAAAA,CAAOyM,QAAQ;ANg0BlC,CM/zBE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMkD,MAAAA,CAASlD,CAAAA,CAAAA,QAASrM,CAAAA,GAAG,CAAE,CAAA,MAAA,CAAA,CAAA;ANg0B/B,CM/zBE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMwP,OAAAA,CAAUnD,CAAAA,CAAAA,QAASrM,CAAAA,GAAG,CAAE,CAAA,OAAA,CAAA,CAAA;AAE9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKuP,MAAS,CAAA,CAAA;AN+zBhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM;AAChG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AACpG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACxG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;AM7zBtEA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAyBE,oBAAoB,CAAEpD,QAASrM,CAAAA,GAAG,CAAE,CAAsB,eAAA,CAAA,CAAA,CAAA,CAAA;AN+zBxF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM/zB2E6N,QAAU,CAAA,CAAA,CAAA,OAAA;AAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5G,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK2B,OAAU,CAAA,CAAA;AACZA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAAA,CAA0BC,oBAAoB,CAAEpD,QAASrM,CAAAA,GAAG,CAAE,CAAA,gBAAA,CAAA,CAAA,CAAA;AACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANg0BF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG;AAC9F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AAC1F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;AM7zBpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACuM,QAAQ,CAA0B3M,MAAAA,CAAOwM,OAAO,CAACD,IAAI,CAAChK,QAAQ,CAAA,CAAE,CAAS,KAAA,CAAA,CAAA,CAAA,CAAEsG,GAAK1H,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AN+zBvF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM9zBR,KAAM2O,CAAAA,cAAAA,CAAiB9P,CAAAA,CAAAA,MAAOqC,CAAAA,KAAK,CAACE,QAAQ,CAACD,SAAS,CAACyN,eAAe,CAAA,CAAA,CAAI5M,MAAM;AAEhF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAAC2M,cAAAA,CAAe5M,EAAE,CAAE,CAAA,OAAA,CAAA,CAAA,CAAW,CAAgB,SAAA,CAAA,CAAA,CAAA,CAAA;AACnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN8zBH,CM5zBG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAAC8M,sBAAwBhQ,CAAAA,MAAAA,CAAQmB,CAAAA,IAAK8O,CAAAA,MAAM,CAAM,CAAA,CAAA,CAAA,CAAA,CAACC,oBAAsBlQ,CAAAA,MAAAA,CAAAA,CAAQmB,IAAK8O,CAAAA,MAAM,CAAK,CAAA,CAAA;AN6zBzG,CM5zBIE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAkBnQ,CAAAA,MAAAA,CAAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAmB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAK6L,cAAc,CAAA,CAAA;AACnBnE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAIoE,IAAI,CAAA,CAAA;AN4zBX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM3zBH,CAAA,CAAA;AN4zBL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM5zBJC,OAAS,CAAA,CAAA,CAAA,GAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEpB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACkD,sBAAsB,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN4zBD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;AACpG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;AACtG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC;AM1zBH,CAAA,CAAA,CAAA,CAAA,CACD,sBAAkC,CAAA,CAAA,CAAA;AN2zBnC,CM1zBE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,CAAE/N,CAAAA,KAAK,CAAEgO,CAAAA,EAAE,CAAEpQ,CAAAA,CAAC,CAAE,CAAA,CAAA,CAAA,CAAG,IAAI,CAACD,MAAM;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAME,YAAeH,CAAAA,CAAAA,CAAAA,4CAAAA,CAA8C,IAAI,CAACC,MAAM,CAAA;AAE9E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAIsQ,oBAAuC,CAAA,CAAA,CAAA,IAAA;AAE3CjO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAME,QAAQ,CAACD,SAAS,CAAC0L,EAAE,CAA6B,CAAgB,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANyzB1E,CMxzBG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMuC,WAAAA,CAAAA,CAAAA,CAAclO,KAAAA,CAAME,QAAQ,CAACD,SAAS,CAAC2M,KAAK,CAAE9L,MAAM;ANyzB7D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMvzBR,EAAK,CAAA,CAAA,CAACkN,EAAAA,CAAAA,CAAAA,CAAAA,CAAMC,oBAAyBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAe,CAAA,CAAA,CAAA,CAACA,WAAYrN,CAAAA,EAAE,CAAE,CAAA,OAAA,CAAc,CAAA,CAAA,CAAA;AAClF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKoN,oBAAwBA,CAAAA,CAAAA,CAAAA,CAAAA,oBAAAA,CAAqBpN,EAAE,CAAE,CAAA,OAAA,CAAA,CAAA,CAAW,CAAgB,SAAA,CAAA,CAAA,CAAA,CAAA;AAChFmN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAGG,iBAAiB,CAACC,QAAQ,CAAErM,4BAA8BnE,CAAAA,CAAAA,CAAAA,CAAGC,YAAAA,CAAcoQ,CAAAA,oBAAsB,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AACrG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKC,WAAYrN,CAAAA,EAAE,CAAE,CAAA,OAAA,CAAA,CAAA,CAAW,CAAgB,SAAA,CAAA,CAAA,CAAA,CAAA;AAC/CmN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAGG,iBAAiB,CAACC,QAAQ,CAAErM,4BAA8BnE,CAAAA,CAAAA,CAAAA,CAAGC,YAAAA,CAAcqQ,CAAAA,WAAa,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAC5F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANszBH,CMpzBGD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,oBAAuBC,CAAAA,CAAAA,CAAAA,WAAAA;AACxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;ANozBA,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACjG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ;AACnG,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AAC3C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AACxD,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACd,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;AACpB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AACpD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK;AAC5E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AAC/D,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACd,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CMlzBH,QAASJ,CAAAA,gBAAAA,CAAkBnQ,MAAc,CAAA,CAAA;ANmzBzC,CAAC,CAAC,CAAC,CMlzBF,KAAMqC,CAAAA,KAAAA,CAAQrC,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK;ANmzB3B,CAAC,CAAC,CAAC,CMlzBF,KAAMqO,CAAAA,QAAAA,CAAWrO,CAAAA,CAAAA,KAAAA,CAAME,QAAQ;ANmzBhC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;AMjzB5H,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMoO,qBAAwBD,CAAAA,CAAAA,CAAAA,QAAAA,CAASpO,SAAS,CAACyN,eAAe,CAAA,CAAA;ANmzBjE,CAAC,CAAC,CAAC,CMlzBF,GAAA,CAAIzH,kBAAAA;ANmzBL,CMjzBC,CAAA,CAAA,CAAA,KAAA,CAAMrF,IAAAA,CAAOuB,CAAAA,CAAAA,sBAAAA,CAAwBmM,qBAAuBtO,CAAAA,CAAAA,KAAAA,CAAAA;ANkzB7D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AM/yBjF,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKY,IAAQA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKC,EAAE,CAAE,CAAY,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AACjCoF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,kBAAAA,CAAAA,CAAAA,CAAqBrH,qBAAuBgC,CAAAA,IAAAA,CAAAA;AAC7C,CAAA,CAAA,CAAA,CAAA;ANizBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AM9yBjEjD,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK,CAACwD,MAAM,CAAEvE,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACpBtB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOoF,OAAO,CAAE,CAAA,UAAA,CAAA,CAAA;ANgzBlB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACrF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;AM7yBxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKkD,kBAAqB,CAAA,CAAA;AACzBhH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOsP,UAAU,CAAEtI,kBAAAA,CAAoBoI,CAAAA,QAASpO,CAAAA,SAAS,CAACI,MAAM,CAAA;AACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;AN8yBA,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AACvF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACpB,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;AACZ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS;AACrD,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;AACpB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS;AACrD,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAChF,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM;AM5yBlE,CAAA,CAAA,CAAA,CACD,QAAA,CAASsN,sBAAAA,CAAwBhQ,MAAc,CAAA,CAAE6Q,WAAoB,CAAA,CAAA;AN6yBrE,CAAC,CAAC,CAAC,CM5yBF,KAAMxO,CAAAA,KAAAA,CAAQrC,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK;AN6yB3B,CAAC,CAAC,CAAC,CM5yBF,KAAMqO,CAAAA,QAAAA,CAAWrO,CAAAA,CAAAA,KAAAA,CAAME,QAAQ;AAC/B,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMgK,IAAOvM,CAAAA,CAAAA,CAAAA,MAAAA,CAAOwM,OAAO,CAACD,IAAI;AAChC,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMoE,qBAAwBD,CAAAA,CAAAA,CAAAA,QAAAA,CAASpO,SAAS,CAACyN,eAAe,CAAA,CAAA;AN6yBjE,CAAC,CAAC,CAAC,CM5yBF,KAAMnL,CAAAA,SAAAA,CAAY+L,CAAAA,CAAAA,qBAAAA,CAAsB/L,SAAS;AN6yBlD,CAAC,CAAC,CAAC,CM3yBF,EAAKiM,CAAAA,CAAAA,WAAAA,CAAe,CAAA,CAAA,CAAA,CAACH,QAAAA,CAASpO,SAAS,CAACG,WAAW,CAAI,CAAA,CAAA,CAAA,CAACkO,qBAAsBG,CAAAA,SAAS,CAAG,CAAA;AN4yB3F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM3yBL,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA;AN4yBD,CAAC,CAAC,CAAC,CM1yBF,EAAA,CAAA,CAAK,CAACC,eAAAA,CAAiBnM,SAAc,CAAA,CAAA,CAAA;AN2yBtC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM1yBL,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA;AN2yBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AMxyBhF5E,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK,CAACwD,MAAM,CAAEvE,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AN0yBtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG;AMxyBpDtB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOoF,OAAO,CAAE,CAAA,KAAA,CAAA,CAAA;AN0yBlB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;AACrE,CMxyBE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM4L,QAAAA,CAAAA,CAAAA,CAAWN,QAAAA,CAASpO,SAAS,CAACI,MAAM,CAAES,MAAM,CAACC,eAAe;ANyyBpE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AACpG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMvyBL9B,MAAO8E,CAAAA,MAAM,CAAE4K,QAAUnF,CAAAA,CAAAA,eAAAA,CAAAA;ANwyB3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMvyBLvK,MAAO2P,CAAAA,YAAY,CAAED,QAAU,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAC/BhR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK,CAAC2B,MAAM,CAACsC,0BAA0B,CAAE;AAAE0K,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;ANyyBpD,CMzyB8D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE1P,MAAAA,CAAAA;AN0yBhE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ;AMvyB/EA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOoF,MAAM,CAAE9B,SAAAA,CAAAA;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ANyyBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;AMtyBf2H,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAK2E,oBAAoB,CAAA,CAAA;ANwyB1B,CAAC,CAAC,CAAC,CMtyBF,MAAA,CAAO,IAAA;AACR;AAEA,CAAA,CAAA;ANsyBA,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AACvF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACpB,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;AACZ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;AAC9B,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACrD,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;AACxB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACrD,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAChF,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM;AMpyBlE,CAAA,CAAA,CAAA,CACD,QAAA,CAAShB,oBAAAA,CAAsBlQ,MAAc,CAAA,CAAE6Q,WAAoB,CAAA,CAAA;ANqyBnE,CAAC,CAAC,CAAC,CMpyBF,KAAMxO,CAAAA,KAAAA,CAAQrC,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK;ANqyB3B,CAAC,CAAC,CAAC,CMpyBF,KAAMqO,CAAAA,QAAAA,CAAWrO,CAAAA,CAAAA,KAAAA,CAAME,QAAQ;AAC/B,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMgK,IAAOvM,CAAAA,CAAAA,CAAAA,MAAAA,CAAOwM,OAAO,CAACD,IAAI;AAChC,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMoE,qBAAwBD,CAAAA,CAAAA,CAAAA,QAAAA,CAASpO,SAAS,CAACyN,eAAe,CAAA,CAAA;ANqyBjE,CAAC,CAAC,CAAC,CMpyBF,KAAMrL,CAAAA,UAAAA,CAAaiM,CAAAA,CAAAA,qBAAAA,CAAsBjM,UAAU;ANqyBpD,CAAC,CAAC,CAAC,CMnyBF,GAAA,CAAIyM,6BAAAA;AAEJ,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKN,WAAAA,CAAe,CAAA,CAAA,CAAA,CAACH,QAAAA,CAASpO,SAAS,CAACG,WAAW,CAAI,CAAA,CAAA,CAAA,CAACkO,qBAAsBS,CAAAA,OAAO,CAAA,CAAA,CAAA,CAAI,CAAC1M,UAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAACA,UAAAA,CAAWtB,eAAe,CAAG,CAAA;ANmyBvI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMlyBL,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA;ANmyBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1D,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACjF,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO;AAC5E,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;AACjF,CAAC,CAAC,CAAC,CAAC,CAAC;AMhyBJ,CAAA,CAAA,CAAA,CAAA,EAAK2N,CAAAA,CAAAA,eAAiBrM,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgBqM,eAAiBrM,CAAAA,UAAAA,CAAWtB,eAAe,CAAK,CAAA,CAAA;ANkyBvF,CMjyBE+N,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,6BAAgC9O,CAAAA,CAAAA,CAAAA,KAAAA,CAAMoG,WAAW,CAChDpG,KAAMoC,CAAAA,oBAAoB,CAAEC,UAAAA,CAAWtB,eAAe,CAAA,CAAIf,CAAAA,KAAMiJ,CAAAA,mBAAmB,CAAE5G,UAAAA,CAAAA,CAAAA;AAEvF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAWK,EAAA,CAAA,CACJ2M,kBAAAA,CAAoB3M,UACpBqM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,eAAAA,CAAiBrM,UAAWtB,CAAAA,eAAe,CAC3C2N,CAAAA,CAAAA,CAAAA,CAAAA,eAAAA,CAAiBrM,UAAWtB,CAAAA,eAAe,CAACA,eAAe,CAC1D,CAAA,CAAA;AACD+N,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,6BAAAA,CAAAA,CAAAA,CAAgC9O,KAAMoG,CAAAA,WAAW,CAChDpG,KAAAA,CAAMoC,oBAAoB,CAAEC,UAAWtB,CAAAA,eAAe,CAACA,eAAe,CAAKf,CAAAA,CAAAA,KAAAA,CAAMiJ,mBAAmB,CAAE5G,UAAAA,CAAAA,CAAAA;ANgxBzG,CAAC,CAAC,CAAC,CAAC,CMnwBE,CAAA,IAAA,CAAA,EACJ2M,CAAAA,CAAAA,kBAAoB3M,CAAAA,UAAAA,CAAAA,CACpBqM,CAAAA,CAAAA,CAAAA,eAAiBrM,CAAAA,UAAAA,CAAWtB,eAAe,CAC3CiO,CAAAA,CAAAA,CAAAA,CAAAA,kBAAAA,CAAoB3M,UAAWtB,CAAAA,eAAe,CAACA,eAAe,CAAA,CAC9DsB,CAAAA,CAAAA,CAAAA,UAAWtB,CAAAA,eAAe,CAACA,eAAe,CAC1C2N,CAAAA,CAAAA,CAAAA,eAAAA,CAAiBrM,UAAWtB,CAAAA,eAAe,CAACA,eAAe,CAACA,eAAe,CAC1E,CAAA,CAAA;AACD+N,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,6BAAAA,CAAgC9O,CAAAA,CAAAA,KAAMoG,CAAAA,WAAW,CAChDpG,KAAAA,CAAMoC,oBAAoB,CAAEC,UAAAA,CAAWtB,eAAe,CAACA,eAAe,CAACA,eAAe,CACtFf,CAAAA,CAAAA,KAAAA,CAAMiJ,mBAAmB,CAAE5G,UAAAA,CAAAA,CAAAA;AN4vB9B,CAAC,CAAC,CAAC,CAAC,CMhvBE,CAAA,IAAA,CAAA;ANivBN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CMhvBL,MAAA,CAAO,KAAA;AACR,CAAA,CAAA,CAAA,CAAA;ANivBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AM9uBhF1E,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK,CAACwD,MAAM,CAAEvE,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;ANgvBtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;AM9uBvFA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOoF,MAAM,CAAEyK,6BAAAA,CAAAA;ANgvBjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG;AM7uBpDnR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOoF,OAAO,CAAE,CAAA,KAAA,CAAA,CAAA;AAEhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM4L,QAAAA,CAAWN,CAAAA,CAAAA,QAASpO,CAAAA,SAAS,CAACI,MAAM,CAAES,MAAM;AN8uBpD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AACpG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CM5uBL7B,MAAO8E,CAAAA,MAAM,CAAE4K,QAAUnF,CAAAA,CAAAA,eAAAA,CAAAA;AACzB7L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOqC,KAAK,CAAC2B,MAAM,CAACsC,0BAA0B,CAAE;AAAE0K,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AN8uBpD,CM9uB8D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE1P,MAAAA,CAAAA;AAC/D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AN+uBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;AM5uBfiL,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAK2E,oBAAoB,CAAA,CAAA;AN8uB1B,CAAC,CAAC,CAAC,CM5uBF,MAAA,CAAO,IAAA;AACR;AAEA,QAASG,CAAAA,kBAAAA,CAAoBpO,IAAiB,CAAA,CAAA;AN4uB9C,CAAC,CAAC,CAAC,CM3uBF,MAAA,CAAOA,IAAAA,CAAAA,CAAAA,CAAAA,CAAQA,IAAKC,CAAAA,EAAE,CAAE,CAAA,CAAA,IAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAACD,IAAK9B,CAAAA,IAAI,CAACC,KAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA;AACxD;AAEA,QAAS2P,CAAAA,eAAAA,CAAiB9N,IAAiB,CAAA,CAAA;AAC1C,CAAA,CAAA,CAAA,CAAA,MAAA,CAAOA,IAAQA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKC,EAAE,CAAE,CAAA,OAAA,CAAW,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA;AACpC;;ACnhBA,CAAA,CAAA;APgwCA,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AAC3B,CAAC;AACD,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;AACxC,CAAC,CAAC,CAAC,CO9vCY,KAAMoO,CAAAA,WAAoBvF,CAAAA,OAAAA,CAAAA,MAAAA,CAAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AP+vCD,CAAC,CAAC,CAAC,CAAC,CAAC;AO7vCH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAkBC,UAAa,CAAA,CAAA,CAAA;AP8vChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO7vCL,MAAA,CAAO,CAAA,WAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AP6vCD,CAAC,CAAC,CAAC,CAAC,CAAC;AO3vCH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAA2BC,gBAAyB,CAAA,CAAA,CAAA;AP4vCrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO3vCL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AP2vCD,CAAC,CAAC,CAAC,CAAC,CAAC;AOzvCH,CAAA,CAAA,CAAA,CAAA,CACD,IAAoB,CAAA,CAAA,CAAA;AP0vCrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COzvCL,KAAMjM,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AP0vC5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COzvCL,KAAMC,CAAAA,CAAAA,CAAID,CAAAA,CAAAA,MAAAA,CAAOC,CAAC;AAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMsR,gBAAmBvR,CAAAA,CAAAA,CAAAA,MAAAA,CAAOqQ,EAAE,CAACkB,gBAAgB;AACnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,sBAAAA,CAAAA,CAAAA,CAAyBzR,4CAA8CC,CAAAA,MAAAA,CAAAA;AAC7E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMyR,eAAkB,CAAA,CAAA,CAAA,IAAI,CAACC,+BAA+B,CAAEF,sBAAAA,CAAAA;AAC9D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM1E,OAA4B9M,CAAAA,CAAAA,CAAAA,MAAAA,CAAOyM,QAAQ,CAACrM,GAAG,CAAE,CAAA,SAAA,CAAA,CAAA;AP0vCzD,COxvCEmR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAiB7E,CAAAA,GAAG,CAAE,CAAA,SAAA,CAAA,CAAaiF,CAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;APyvCrC,COxvCG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,YAAAA,CAAeC,CAAAA,CAAAA,cAAAA,CAAgBF,MAAQG,CAAAA,CAAAA,eAAAA,CAAAA;APyvChD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COxvCR,KAAMC,CAAAA,eAAAA,CAAkBH,CAAAA,CAAAA,YAAAA,CAAaI,UAAU;AAC/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,eAAAA,CAAAA,CAAAA,CAAkBhS,CAAG,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAE3B8R,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,eAAAA,CAAgBG,GAAG,CAAE;APwvCxB,COvvCI5R,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAO2R,CAAAA,CAAAA,eAAAA;APwvCX,COvvCIE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAS,CAAA,CAAA,IAAA;APwvCb,COvvCIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAMC,CAAAA,CAAAA,aAAAA;APwvCV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COvvCXC,YAAc,CAAA,CAAA;AACf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;APwvCH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COtvCRP,eAAgBQ,CAAAA,IAAI,CAAE,CAAA,IAAA,CAAA,CAAA,CAASC,EAAE,CAAE1F,OAAAA,CAAS,CAAA,CAAA,KAAA,CAASlM,CAAAA,CAAAA,CAAAA,KAAS,CAAA,CAAA,CAAA,CAAC,CAACA,KAAAA,CAAAA;APuvCnE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COrvCRmR,eAAgB/D,CAAAA,EAAE,CAAE,CAAA,OAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;APsvClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COrvCXhO,MAAOoF,CAAAA,OAAO,CAAE,CAAA,SAAA,CAAa,CAAA,CAAA;APsvCjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COrvCdqC,yBAA2B,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAzH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOwM,OAAO,CAACD,IAAI,CAAC0C,KAAK,CAAA,CAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;APqvCH,COnvCG2C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAa5D,CAAAA,EAAE,CAAE,CAAA,OAAA,CAAA,CAAWnF,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA;APovC/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COnvCX7I,MAAOoF,CAAAA,OAAO,CAAE,CAAA,SAAA,CAAa,CAAA,CAAA;AAC5B3E,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAU,CAAA,GAAEoI,CAAI4J,MAAM,CAAUC,kBAAkB;APovCvD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COnvCd/M,UAAY,CAAA,CAAA;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA3F,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOwM,OAAO,CAACD,IAAI,CAAC0C,KAAK,CAAA,CAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA2C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAarR,KAAK,CAAA,CAAA,CAAG,CAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,QAAA,CAAA;AACrBqR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAaW,IAAI,CAAE,CAAA,SAAA,CAAcC,CAAAA,CAAAA,EAAE,CAAE1F,OAAAA,CAAAA;AAErC6F,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,iBAAAA,CAAmBf,YAAAA,CAAAA,CAAcH,eAAiB,CAAA,CAAA;APivCrD,COhvCImB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,IAAA,CAAA;APivCV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COhvCXC,SAAWZ,CAAAA,CAAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;APivCH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO/uCR,MAAA,CAAOL,YAAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;APgvCF,CO9uCEL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAiB7E,CAAAA,GAAG,CAAE,CAAA,OAAA,CAAA,SAAA,CAAA,CAAqBiF,CAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AP+uC7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO9uCR,KAAA,CAAMmB,QAAAA,CAAAA,CAAAA,CAAW,GAAA,CAAIC,eAAiBpB,CAAAA,MAAAA,CAAAA;AP+uCzC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO7uCRmB,QAASd,CAAAA,UAAU,CAACE,GAAG,CAAE;AP8uC5B,CO7uCIU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,QAAA,CAAA;AACNtS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAOL,CAAG,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AP8uCd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO7uCXmS,IAAMC,CAAAA,CAAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAASP,IAAI,CAAE,CAAA,SAAA,CAAcC,CAAAA,CAAAA,EAAE,CAAE1F,OAAAA,CAAAA;AP6uCpC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO3uCR,KAAA,CAAMkG,QAAAA,CAAAA,CAAAA,CAAW,GAAA,CAAIC,mBAAqBtB,CAAAA,MAAAA,CAAAA;AAE1CqB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAASd,GAAG,CAAE;AACbW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,CAAW5S,CAAG,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA;AACf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AP2uCH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COzuCR,GAAM,CAAA,CAAA,KAAA,CAAMiT,UAAAA,CAAAA,EAAAA,CAAczB,eAAkB,CAAA;AP0uC/C,COzuCI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM0B,YAAAA,CAAe,CAAA,CAAA,GAAA,CAAIC,uBAAAA,CAAyBzB,MAAQmB,CAAAA,CAAAA,QAAAA,CAAAA;AP0uC9D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COzuCX,KAAA,CAAMd,UAAAA,CAAAA,CAAAA,CAAa,GAAA,CAAIqB,6BAA+B1B,CAAAA,MAAAA,CAAAA;AP0uC1D,COxuCIK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAWO,CAAAA,IAAI,CAAKe,CAAAA,CAAAA,CAAAA,MAAAA,CAAOC,IAAI,CAAEL,UAAW7Q,CAAAA,KAAK,CAAmDmQ,CAAAA,CAAAA,EAAE,CAAEU,UAAAA,CAAW7Q,KAAK,CAAA;AACxH2P,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAWE,GAAG,CAAE;APyuCpB,COxuCKI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAc,CAAA,CAAA,IAAA;APyuCnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COxuCdM,IAAM,CAAA,CAAA,CAAA,gBAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAWwB,QAAQ,CAAE,CAAA,OAAA,CAAYhB,CAAAA,CAAAA,EAAE,CAAEM,QAAAA,CAAAA;APwuCzC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COtuCXd,UAAWhE,CAAAA,EAAE,CAAE,CAAA,OAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;APuuC9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COtuCdhO,MAAOoF,CAAAA,OAAO,CAAE,CAAA,SAAA,CAAa,CAAA,CAAA;APuuClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COtuCjB3E,QAAUyS,CAAAA,CAAAA,UAAAA,CAAW7Q,KAAK,CAACqQ,kBAAkB;APuuCnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COtuCjB/M,UAAYmH,CAAAA,CAAAA,OAAAA,CAAQlM,KAAK,CAAA,CAAA,CAAA,CAAIsS,UAAAA,CAAW7Q,KAAK,CAACqQ,kBAAkB,CAAA,CAAA,CAAG,KAAQ,CAAA,CAAA,CAAA;AAC5E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA1S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOwM,OAAO,CAACD,IAAI,CAAC0C,KAAK,CAAA,CAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;APsuCJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COpuCXkE,YAAaM,CAAAA,QAAQ,CAAC/G,GAAG,CAAEsF,UAAAA,CAAAA;APquC/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COpuCXgB,QAASrR,CAAAA,KAAK,CAAC+K,GAAG,CAAEyG,YAAAA,CAAAA;AACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAASY,SAAS,CAACD,QAAQ,CAAC/G,GAAG,CAAEsG,QAAAA,CAAAA;APouCpC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,COluCR,MAAA,CAAOF,QAAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;APkuCD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;AACnF,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;AACzC,COhuCSpB,CAAAA,CAAAA,CAAAA,CAAAA,+BACPF,CAAAA,sBAA0D,CACf,CAAA;AP+tC7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO9tCL,KAAMxR,CAAAA,MAAAA,CAAS,CAAA,CAAA,IAAI,CAACA,MAAM;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM8M,OAA4B9M,CAAAA,CAAAA,CAAAA,MAAAA,CAAOyM,QAAQ,CAACrM,GAAG,CAAE,CAAA,SAAA,CAAA,CAAA;AACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAMqR,CAAAA,eAAAA,CAAkB,CAAA,CAAA,GAAA,CAAIkC,UAAAA,CAAAA,CAAAA;AP+tC9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO7tCL,GAAM,CAAA,CAAA,KAAA,CAAMC,WAAAA,CAAAA,EAAAA,CAAepC,sBAAyB,CAAA;AACnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM0B,UAA2C,CAAA,CAAA,CAAA;AP8tCpD,CO7tCIW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,MAAA,CAAA;AACNxR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAO,GAAIyR,CAAAA,SAAW,CAAA;AACrBpB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,kBAAAA,CAAAA,CAAoBkB,WAAAA,CAAYnT,QAAQ;AACxCH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAOsT,WAAAA,CAAYtT,KAAK;AP8tC7B,CO7tCKsS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAM,CAAA,CAAA,CAAA,aAAA,CAAA;AP8tCX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO7tCdmB,QAAU,CAAA,CAAA;AACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AP8tCH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO5tCRb,UAAW7Q,CAAAA,KAAK,CAACkQ,IAAI,CAAE,CAAA,IAAA,CAAA,CAAA,CAASC,EAAE,CAAE1F,OAAS,CAAA,CAAA,CAAA,KAAA,CAAA,CAASlM,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACrD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAOA,KAAUsS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAW7Q,KAAK,CAACqQ,kBAAkB;AACrD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,eAAAA,CAAgB/E,GAAG,CAAEwG,UAAAA,CAAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AP4tCF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CO1tCL,MAAA,CAAOzB,eAAAA;AACR,CAAA,CAAA,CAAA,CAAA;AACD;;ACzKA,CAAA,CAAA;ARs4CA,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;AACxB,CAAC;AACD,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;AAC9F,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK;AACzD,CAAC;AACD,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;AAC/H,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC;AAClF,CAAC,CAAC,CAAC,CQp4CY,KAAMuC,CAAAA,SAAkBjI,CAAAA,OAAAA,CAAAA,MAAAA,CAAAA;AACtC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ARq4CD,CAAC,CAAC,CAAC,CAAC,CAAC;AQn4CH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAkBG,QAAW,CAAA,CAAA,CAAA;ARo4C9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CQn4CL,MAAO,CAAA;AAAEJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA;AAAkBwF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACzC,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ARs4CD,CAAC,CAAC,CAAC,CAAC,CAAC;AQp4CH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAkBtF,UAAa,CAAA,CAAA,CAAA;ARq4ChC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CQp4CL,MAAA,CAAO,CAAA,SAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ARo4CD,CAAC,CAAC,CAAC,CAAC,CAAC;AQl4CH,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAA2BC,gBAAyB,CAAA,CAAA,CAAA;ARm4CrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CQl4CL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AACD;;ARo4CA,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC","file":"index.js.map","sourcesContent":["import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { ShiftEnter } from '@ckeditor/ckeditor5-enter/dist/index.js';\nimport { UpcastWriter } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { ClipboardPipeline } from '@ckeditor/ckeditor5-clipboard/dist/index.js';\nimport { first, Collection } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { createDropdown, SplitButtonView, addListToDropdown, MenuBarMenuView, MenuBarMenuListView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView, ViewModel } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { IconCodeBlock } from '@ckeditor/ckeditor5-icons/dist/index.js';\n\n/**\n * Returns code block languages as defined in `config.codeBlock.languages` but processed:\n *\n * * To consider the editor localization, i.e. to display {@link module:code-block/codeblockconfig~CodeBlockLanguageDefinition}\n * in the correct language. There is no way to use {@link module:utils/locale~Locale#t} when the user\n * configuration is defined because the editor does not exist yet.\n * * To make sure each definition has a CSS class associated with it even if not specified\n * in the original configuration.\n */ function getNormalizedAndLocalizedLanguageDefinitions(editor) {\n const t = editor.t;\n const languageDefs = editor.config.get('codeBlock.languages');\n for (const def of languageDefs){\n if (def.label === 'Plain text') {\n def.label = t('Plain text');\n }\n if (def.class === undefined) {\n def.class = `language-${def.language}`;\n }\n }\n return languageDefs;\n}\n/**\n * Returns an object associating certain language definition properties with others. For instance:\n *\n * For:\n *\n * ```ts\n * const definitions = {\n * \t{ language: 'php', class: 'language-php', label: 'PHP' },\n * \t{ language: 'javascript', class: 'js', label: 'JavaScript' },\n * };\n *\n * getPropertyAssociation( definitions, 'class', 'language' );\n * ```\n *\n * returns:\n *\n * ```ts\n * {\n * \t'language-php': 'php',\n * \t'js': 'javascript'\n * }\n * ```\n *\n * and\n *\n * ```ts\n * getPropertyAssociation( definitions, 'language', 'label' );\n * ```\n *\n * returns:\n *\n * ```ts\n * {\n * \t'php': 'PHP',\n * \t'javascript': 'JavaScript'\n * }\n * ```\n */ function getPropertyAssociation(languageDefs, key, value) {\n const association = {};\n for (const def of languageDefs){\n if (key === 'class') {\n // Only the first class is considered.\n const newKey = def[key].split(' ').shift();\n association[newKey] = def[value];\n } else {\n association[def[key]] = def[value];\n }\n }\n return association;\n}\n/**\n * For a given model text node, it returns white spaces that precede other characters in that node.\n * This corresponds to the indentation part of the code block line.\n */ function getLeadingWhiteSpaces(textNode) {\n return textNode.data.match(/^(\\s*)/)[0];\n}\n/**\n * For plain text containing the code (a snippet), it returns a document fragment containing\n * view text nodes separated by `<br>` elements (in place of new line characters \"\\n\"), for instance:\n *\n * Input:\n *\n * ```ts\n * \"foo()\\n\n * bar()\"\n * ```\n *\n * Output:\n *\n * ```html\n * <DocumentFragment>\n * \t\"foo()\"\n * \t<br/>\n * \t\"bar()\"\n * </DocumentFragment>\n * ```\n *\n * @param text The raw code text to be converted.\n */ function rawSnippetTextToViewDocumentFragment(writer, text) {\n const fragment = writer.createDocumentFragment();\n const textLines = text.split('\\n');\n const items = textLines.reduce((nodes, line, lineIndex)=>{\n nodes.push(line);\n if (lineIndex < textLines.length - 1) {\n nodes.push(writer.createElement('br'));\n }\n return nodes;\n }, []);\n writer.appendChild(items, fragment);\n return fragment;\n}\n/**\n * Returns an array of all model positions within the selection that represent code block lines.\n *\n * If the selection is collapsed, it returns the exact selection anchor position:\n *\n * ```html\n * <codeBlock>[]foo</codeBlock> -> <codeBlock>^foo</codeBlock>\n * <codeBlock>foo[]bar</codeBlock> -> <codeBlock>foo^bar</codeBlock>\n * ```\n *\n * Otherwise, it returns positions **before** each text node belonging to all code blocks contained by the selection:\n *\n * ```html\n * <codeBlock> <codeBlock>\n * foo[bar ^foobar\n * <softBreak></softBreak> -> <softBreak></softBreak>\n * baz]qux ^bazqux\n * </codeBlock> </codeBlock>\n * ```\n *\n * It also works across other non–code blocks:\n *\n * ```html\n * <codeBlock> <codeBlock>\n * foo[bar ^foobar\n * </codeBlock> </codeBlock>\n * <paragraph>text</paragraph> -> <paragraph>text</paragraph>\n * <codeBlock> <codeBlock>\n * baz]qux ^bazqux\n * </codeBlock> </codeBlock>\n * ```\n *\n * **Note:** The positions are in reverse order so they do not get outdated when iterating over them and\n * the writer inserts or removes elements at the same time.\n *\n * **Note:** The position is located after the leading white spaces in the text node.\n */ function getIndentOutdentPositions(model) {\n const selection = model.document.selection;\n const positions = [];\n // When the selection is collapsed, there's only one position we can indent or outdent.\n if (selection.isCollapsed) {\n return [\n selection.anchor\n ];\n }\n // When the selection is NOT collapsed, collect all positions starting before text nodes\n // (code lines) in any <codeBlock> within the selection.\n // Walk backward so positions we are about to collect here do not get outdated when\n // inserting or deleting using the writer.\n const walker = selection.getFirstRange().getWalker({\n ignoreElementEnd: true,\n direction: 'backward'\n });\n for (const { item } of walker){\n let node = item.is('$textProxy') ? item.textNode : item;\n const parent = node.parent;\n if (!parent.is('element', 'codeBlock') || node.is('element', 'softBreak')) {\n continue;\n }\n // For each item in code block, move backwards until the beginning of the line it is in is found.\n while(node.previousSibling && !node.previousSibling.is('element', 'softBreak')){\n node = node.previousSibling;\n }\n // Take the leading white spaces into account (only for text nodes).\n const startOffset = !node.is('$text') ? node.startOffset : node.startOffset + getLeadingWhiteSpaces(node).length;\n const position = model.createPositionAt(parent, startOffset);\n // Do not add the same position twice. Unfortunately using set doesn't deduplicate positions because\n // they are different objects.\n if (positions.every((pos)=>!pos.isEqual(position))) {\n positions.push(position);\n }\n }\n return positions;\n}\n/**\n * Checks if any of the blocks within the model selection is a code block.\n */ function isModelSelectionInCodeBlock(selection) {\n const firstBlock = first(selection.getSelectedBlocks());\n return !!firstBlock && firstBlock.is('element', 'codeBlock');\n}\n/**\n * Checks if an {@link module:engine/model/element~Element Element} can become a code block.\n *\n * @param schema Model's schema.\n * @param element The element to be checked.\n * @returns Check result.\n */ function canBeCodeBlock(schema, element) {\n if (element.is('rootElement') || schema.isLimit(element)) {\n return false;\n }\n return schema.checkChild(element.parent, 'codeBlock');\n}\n/**\n * Get the translated message read by the screen reader when you enter or exit an element with your cursor.\n */ function getCodeBlockAriaAnnouncement(t, languageDefs, element, direction) {\n const languagesToLabels = getPropertyAssociation(languageDefs, 'language', 'label');\n const codeBlockLanguage = element.getAttribute('language');\n if (codeBlockLanguage in languagesToLabels) {\n const language = languagesToLabels[codeBlockLanguage];\n if (direction === 'enter') {\n return t('Entering %0 code snippet', language);\n }\n return t('Leaving %0 code snippet', language);\n }\n if (direction === 'enter') {\n return t('Entering code snippet');\n }\n return t('Leaving code snippet');\n}\n/**\n * For given position, finds the closest position that is at the beginning of a line of code and returns a text node that is at the\n * beginning of the line (or `null` if there's no text node at the beginning of a given line).\n *\n * Line beings at the start of a code block element and after each `softBreak` element.\n *\n * Note: even though code block doesn't allow inline elements other than `<softBreak>` by default, some features may overwrite this rule,\n * so such inline elements are taken into account.\n *\n * Some examples of expected results:\n *\n * ```\n * <codeBlock>^</codeBlock> -> null\n * <codeBlock>^foobar</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foobar^</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foo^bar</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foo^<softBreak />bar</codeBlock> -> <codeBlock>[foo]<softBreak />bar</codeBlock>\n * <codeBlock>foo<softBreak />bar^</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>foo<softBreak />b^ar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>foo<softBreak />^bar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>^<element /></codeBlock> -> null\n * <codeBlock><element />^</codeBlock> -> null\n * <codeBlock>foo^<element /></codeBlock> -> <codeBlock>[foo]<element /></codeBlock>\n * <codeBlock>foo<element />^</codeBlock> -> <codeBlock>[foo]<element /></codeBlock>\n * <codeBlock>foo<element />bar^</codeBlock> -> <codeBlock>[foo]<element />bar</codeBlock>\n * <codeBlock><element />bar^</codeBlock> -> null\n * <codeBlock>foo<softBreak />^<softBreak /></codeBlock> -> null\n * <codeBlock>foo<softBreak />^<element /></codeBlock> -> null\n * <codeBlock>foo<softBreak /><element />^</codeBlock> -> null\n * <codeBlock>foo<softBreak />bar<element />^</codeBlock> -> <codeBlock>foo<softBreak />[bar]<element /></codeBlock>\n * <codeBlock>foo<softBreak /><element />ba^r</codeBlock> -> null\n * ```\n */ function getTextNodeAtLineStart(position, model) {\n // First, move position before a text node, if it is inside a text node.\n if (position.textNode) {\n position = model.createPositionBefore(position.textNode);\n }\n // Then, jump-back the position until it is before a `softBreak` or at the beginning of the `codeBlock`.\n while(position.nodeBefore && !position.nodeBefore.is('element', 'softBreak')){\n position = model.createPositionBefore(position.nodeBefore);\n }\n // Now, the position is at the beginning of a line.\n // Return a text node after the position, if there is one.\n const nodeAtStart = position.nodeAfter;\n return nodeAtStart && nodeAtStart.is('$text') ? nodeAtStart : null;\n}\n\n/**\n * The code block command plugin.\n */ class CodeBlockCommand extends Command {\n /**\n\t * Contains the last used language.\n\t */ _lastLanguage;\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n this._lastLanguage = null;\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n this.value = this._getValue();\n this.isEnabled = this._checkEnabled();\n }\n /**\n\t * Executes the command. When the command {@link #value is on}, all topmost code blocks within\n\t * the selection will be removed. If it is off, all selected blocks will be flattened and\n\t * wrapped by a code block.\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.language The code block language.\n\t * @param options.forceValue If set, it will force the command behavior. If `true`, the command will apply a code block,\n\t * otherwise the command will remove the code block. If not set, the command will act basing on its current value.\n\t * @param options.usePreviousLanguageChoice If set on `true` and the `options.language` is not specified, the command\n\t * will apply the previous language (if the command was already executed) when inserting the `codeBlock` element.\n\t */ execute(options = {}) {\n const editor = this.editor;\n const model = editor.model;\n const selection = model.document.selection;\n const normalizedLanguagesDefs = getNormalizedAndLocalizedLanguageDefinitions(editor);\n const firstLanguageInConfig = normalizedLanguagesDefs[0];\n const blocks = Array.from(selection.getSelectedBlocks());\n const value = options.forceValue == undefined ? !this.value : options.forceValue;\n const language = getLanguage(options, this._lastLanguage, firstLanguageInConfig.language);\n model.change((writer)=>{\n if (value) {\n this._applyCodeBlock(writer, blocks, language);\n } else {\n this._removeCodeBlock(writer, blocks);\n }\n });\n }\n /**\n\t * Checks the command's {@link #value}.\n\t *\n\t * @returns The current value.\n\t */ _getValue() {\n const selection = this.editor.model.document.selection;\n const firstBlock = first(selection.getSelectedBlocks());\n const isCodeBlock = !!firstBlock?.is('element', 'codeBlock');\n return isCodeBlock ? firstBlock.getAttribute('language') : false;\n }\n /**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @returns Whether the command should be enabled.\n\t */ _checkEnabled() {\n if (this.value) {\n return true;\n }\n const selection = this.editor.model.document.selection;\n const schema = this.editor.model.schema;\n const firstBlock = first(selection.getSelectedBlocks());\n if (!firstBlock) {\n return false;\n }\n return canBeCodeBlock(schema, firstBlock);\n }\n _applyCodeBlock(writer, blocks, language) {\n this._lastLanguage = language;\n const schema = this.editor.model.schema;\n const allowedBlocks = blocks.filter((block)=>canBeCodeBlock(schema, block));\n for (const block of allowedBlocks){\n writer.rename(block, 'codeBlock');\n writer.setAttribute('language', language, block);\n schema.removeDisallowedAttributes([\n block\n ], writer);\n // Remove children of the `codeBlock` element that are not allowed. See #9567.\n Array.from(block.getChildren()).filter((child)=>!schema.checkChild(block, child)).forEach((child)=>writer.remove(child));\n }\n allowedBlocks.reverse().forEach((currentBlock, i)=>{\n const nextBlock = allowedBlocks[i + 1];\n if (currentBlock.previousSibling === nextBlock) {\n writer.appendElement('softBreak', nextBlock);\n writer.merge(writer.createPositionBefore(currentBlock));\n }\n });\n }\n _removeCodeBlock(writer, blocks) {\n const codeBlocks = blocks.filter((block)=>block.is('element', 'codeBlock'));\n for (const block of codeBlocks){\n const range = writer.createRangeOn(block);\n for (const item of Array.from(range.getItems()).reverse()){\n if (item.is('element', 'softBreak') && item.parent.is('element', 'codeBlock')) {\n const { position } = writer.split(writer.createPositionBefore(item));\n const elementAfter = position.nodeAfter;\n writer.rename(elementAfter, 'paragraph');\n writer.removeAttribute('language', elementAfter);\n writer.remove(item);\n }\n }\n writer.rename(block, 'paragraph');\n writer.removeAttribute('language', block);\n }\n }\n}\n/**\n * Picks the language for the new code block. If any language is passed as an option,\n * it will be returned. Else, if option usePreviousLanguageChoice is true and some\n * code block was already created (lastLanguage is not null) then previously used\n * language will be returned. If not, it will return default language.\n */ function getLanguage(options, lastLanguage, defaultLanguage) {\n if (options.language) {\n return options.language;\n }\n if (options.usePreviousLanguageChoice && lastLanguage) {\n return lastLanguage;\n }\n return defaultLanguage;\n}\n\n/**\n * The code block indentation increase command plugin.\n */ class IndentCodeBlockCommand extends Command {\n /**\n\t * A sequence of characters added to the line when the command is executed.\n\t */ _indentSequence;\n constructor(editor){\n super(editor);\n this._indentSequence = editor.config.get('codeBlock.indentSequence');\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n this.isEnabled = this._checkEnabled();\n }\n /**\n\t * Executes the command. When the command {@link #isEnabled is enabled}, the indentation of the\n\t * code lines in the selection will be increased.\n\t *\n\t * @fires execute\n\t */ execute() {\n const editor = this.editor;\n const model = editor.model;\n model.change((writer)=>{\n const positions = getIndentOutdentPositions(model);\n // Indent all positions, for instance assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock>^foo</codeBlock> -> <codeBlock> foo</codeBlock>\n //\n //\t\t<codeBlock>foo^bar</codeBlock> -> <codeBlock>foo bar</codeBlock>\n //\n // Also, when there is more than one position:\n //\n //\t\t<codeBlock>\n //\t\t\t^foobar\n //\t\t\t<softBreak></softBreak>\n //\t\t\t^bazqux\n //\t\t</codeBlock>\n //\n //\t\t->\n //\n //\t\t<codeBlock>\n //\t\t\t foobar\n //\t\t\t<softBreak></softBreak>\n //\t\t\t bazqux\n //\t\t</codeBlock>\n //\n for (const position of positions){\n const indentSequenceTextElement = writer.createText(this._indentSequence);\n // Previously insertion was done by writer.insertText(). It was changed to insertContent() to enable\n // integration of code block with track changes. It's the easiest way of integration because insertContent()\n // is already integrated with track changes, but if it ever cause any troubles it can be reverted, however\n // some additional work will be required in track changes integration of code block.\n model.insertContent(indentSequenceTextElement, position);\n }\n });\n }\n /**\n\t * Checks whether the command can be enabled in the current context.\n\t */ _checkEnabled() {\n if (!this._indentSequence) {\n return false;\n }\n // Indent (forward) command is always enabled when there's any code block in the selection\n // because you can always indent code lines.\n return isModelSelectionInCodeBlock(this.editor.model.document.selection);\n }\n}\n\n/**\n * The code block indentation decrease command plugin.\n */ class OutdentCodeBlockCommand extends Command {\n /**\n\t * A sequence of characters removed from the line when the command is executed.\n\t */ _indentSequence;\n constructor(editor){\n super(editor);\n this._indentSequence = editor.config.get('codeBlock.indentSequence');\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n this.isEnabled = this._checkEnabled();\n }\n /**\n\t * Executes the command. When the command {@link #isEnabled is enabled}, the indentation of the\n\t * code lines in the selection will be decreased.\n\t *\n\t * @fires execute\n\t */ execute() {\n const editor = this.editor;\n const model = editor.model;\n model.change(()=>{\n const positions = getIndentOutdentPositions(model);\n // Outdent all positions, for instance assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock>^foo</codeBlock> -> <codeBlock>foo</codeBlock>\n //\n //\t\t<codeBlock> ^bar</codeBlock> -> <codeBlock>bar</codeBlock>\n //\n // Also, when there is more than one position:\n //\n //\t\t<codeBlock>\n //\t\t\t ^foobar\n //\t\t\t<softBreak></softBreak>\n //\t\t\t ^bazqux\n //\t\t</codeBlock>\n //\n //\t\t->\n //\n //\t\t<codeBlock>\n //\t\t\tfoobar\n //\t\t\t<softBreak></softBreak>\n //\t\t\tbazqux\n //\t\t</codeBlock>\n for (const position of positions){\n const range = getLastOutdentableSequenceRange(model, position, this._indentSequence);\n if (range) {\n // Previously deletion was done by writer.remove(). It was changed to deleteContent() to enable\n // integration of code block with track changes. It's the easiest way of integration because deleteContent()\n // is already integrated with track changes, but if it ever cause any troubles it can be reverted, however\n // some additional work will be required in track changes integration of code block.\n model.deleteContent(model.createSelection(range));\n }\n }\n });\n }\n /**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @private\n\t * @returns {Boolean} Whether the command should be enabled.\n\t */ _checkEnabled() {\n if (!this._indentSequence) {\n return false;\n }\n const model = this.editor.model;\n if (!isModelSelectionInCodeBlock(model.document.selection)) {\n return false;\n }\n // Outdent command can execute only when there is an indent character sequence\n // in some of the lines.\n return getIndentOutdentPositions(model).some((position)=>{\n return getLastOutdentableSequenceRange(model, position, this._indentSequence);\n });\n }\n}\n// For a position coming from `getIndentOutdentPositions()`, it returns the range representing\n// the last occurrence of the indent sequence among the leading whitespaces of the code line the\n// position represents.\n//\n// For instance, assuming the indent sequence is 4x space (\" \"):\n//\n//\t\t<codeBlock>foo^</codeBlock> -> null\n//\t\t<codeBlock>foo^<softBreak></softBreak>bar</codeBlock> -> null\n//\t\t<codeBlock> ^foo</codeBlock> -> null\n//\t\t<codeBlock> ^foo</codeBlock> -> <codeBlock> [ ]foo</codeBlock>\n//\t\t<codeBlock> ^foo bar</codeBlock> -> <codeBlock>[ ]foo bar</codeBlock>\n//\n// @param {<module:engine/model/model~Model>} model\n// @param {<module:engine/model/position~Position>} position\n// @param {String} sequence\n// @returns {<module:engine/model/range~Range>|null}\nfunction getLastOutdentableSequenceRange(model, position, sequence) {\n // Positions start before each text node (code line). Get the node corresponding to the position.\n const nodeAtPosition = getTextNodeAtLineStart(position, model);\n if (!nodeAtPosition) {\n return null;\n }\n const leadingWhiteSpaces = getLeadingWhiteSpaces(nodeAtPosition);\n const lastIndexOfSequence = leadingWhiteSpaces.lastIndexOf(sequence);\n // For instance, assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock> \t^foo</codeBlock> -> null\n //\n if (lastIndexOfSequence + sequence.length !== leadingWhiteSpaces.length) {\n return null;\n }\n // For instance, assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock> ^foo</codeBlock> -> null\n //\n if (lastIndexOfSequence === -1) {\n return null;\n }\n const { parent, startOffset } = nodeAtPosition;\n // Create a range that contains the **last** indent sequence among the leading whitespaces\n // of the line.\n //\n // For instance, assuming the indent sequence is 4x space (\" \"):\n //\n //\t\t<codeBlock> ^foo</codeBlock> -> <codeBlock> [ ]foo</codeBlock>\n //\n return model.createRange(model.createPositionAt(parent, startOffset + lastIndexOfSequence), model.createPositionAt(parent, startOffset + lastIndexOfSequence + sequence.length));\n}\n\n/**\n * A model-to-view (both editing and data) converter for the `codeBlock` element.\n *\n * Sample input:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * Sample output (editing):\n *\n * ```html\n * <pre data-language=\"JavaScript\"><code class=\"language-javascript\">foo();<br />bar();</code></pre>\n * ```\n *\n * Sample output (data, see {@link module:code-block/converters~modelToDataViewSoftBreakInsertion}):\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();\\nbar();</code></pre>\n * ```\n *\n * @param languageDefs The normalized language configuration passed to the feature.\n * @param useLabels When `true`, the `<pre>` element will get a `data-language` attribute with a\n * human–readable label of the language. Used only in the editing.\n * @returns Returns a conversion callback.\n */ function modelToViewCodeBlockInsertion(model, languageDefs, useLabels = false) {\n // Language CSS classes:\n //\n //\t\t{\n //\t\t\tphp: 'language-php',\n //\t\t\tpython: 'language-python',\n //\t\t\tjavascript: 'js',\n //\t\t\t...\n //\t\t}\n const languagesToClasses = getPropertyAssociation(languageDefs, 'language', 'class');\n // Language labels:\n //\n //\t\t{\n //\t\t\tphp: 'PHP',\n //\t\t\tpython: 'Python',\n //\t\t\tjavascript: 'JavaScript',\n //\t\t\t...\n //\t\t}\n const languagesToLabels = getPropertyAssociation(languageDefs, 'language', 'label');\n return (evt, data, conversionApi)=>{\n const { writer, mapper, consumable } = conversionApi;\n if (!consumable.consume(data.item, 'insert')) {\n return;\n }\n const codeBlockLanguage = data.item.getAttribute('language');\n const targetViewPosition = mapper.toViewPosition(model.createPositionBefore(data.item));\n const preAttributes = {};\n // Attributes added only in the editing view.\n if (useLabels) {\n preAttributes['data-language'] = languagesToLabels[codeBlockLanguage];\n preAttributes.spellcheck = 'false';\n }\n const codeAttributes = languagesToClasses[codeBlockLanguage] ? {\n class: languagesToClasses[codeBlockLanguage]\n } : undefined;\n const code = writer.createContainerElement('code', codeAttributes);\n const pre = writer.createContainerElement('pre', preAttributes, code);\n writer.insert(targetViewPosition, pre);\n mapper.bindElements(data.item, code);\n };\n}\n/**\n * A model-to-data view converter for the new line (`softBreak`) separator.\n *\n * Sample input:\n *\n * ```html\n * <codeBlock ...>foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <pre><code ...>foo();\\nbar();</code></pre>\n * ```\n *\n * @returns Returns a conversion callback.\n */ function modelToDataViewSoftBreakInsertion(model) {\n return (evt, data, conversionApi)=>{\n if (data.item.parent.name !== 'codeBlock') {\n return;\n }\n const { writer, mapper, consumable } = conversionApi;\n if (!consumable.consume(data.item, 'insert')) {\n return;\n }\n const position = mapper.toViewPosition(model.createPositionBefore(data.item));\n writer.insert(position, writer.createText('\\n'));\n };\n}\n/**\n * A view-to-model converter for `<pre>` with the `<code>` HTML.\n *\n * Sample input:\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();bar();</code></pre>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();bar();</codeBlock>\n * ```\n *\n * @param languageDefs The normalized language configuration passed to the feature.\n * @returns Returns a conversion callback.\n */ function dataViewToModelCodeBlockInsertion(editingView, languageDefs) {\n // Language names associated with CSS classes:\n //\n //\t\t{\n //\t\t\t'language-php': 'php',\n //\t\t\t'language-python': 'python',\n //\t\t\tjs: 'javascript',\n //\t\t\t...\n //\t\t}\n const classesToLanguages = getPropertyAssociation(languageDefs, 'class', 'language');\n const defaultLanguageName = languageDefs[0].language;\n return (evt, data, conversionApi)=>{\n const viewCodeElement = data.viewItem;\n const viewPreElement = viewCodeElement.parent;\n if (!viewPreElement || !viewPreElement.is('element', 'pre')) {\n return;\n }\n // In case of nested code blocks we don't want to convert to another code block.\n if (data.modelCursor.findAncestor('codeBlock')) {\n return;\n }\n const { consumable, writer } = conversionApi;\n if (!consumable.test(viewCodeElement, {\n name: true\n })) {\n return;\n }\n const codeBlock = writer.createElement('codeBlock');\n const viewChildClasses = [\n ...viewCodeElement.getClassNames()\n ];\n // As we're to associate each class with a model language, a lack of class (empty class) can be\n // also associated with a language if the language definition was configured so. Pushing an empty\n // string to make sure the association will work.\n if (!viewChildClasses.length) {\n viewChildClasses.push('');\n }\n // Figure out if any of the <code> element's class names is a valid programming\n // language class. If so, use it on the model element (becomes the language of the entire block).\n for (const className of viewChildClasses){\n const language = classesToLanguages[className];\n if (language) {\n writer.setAttribute('language', language, codeBlock);\n break;\n }\n }\n // If no language value was set, use the default language from the config.\n if (!codeBlock.hasAttribute('language')) {\n writer.setAttribute('language', defaultLanguageName, codeBlock);\n }\n // Convert children before inserting the code block element\n // to make sure that code block won't be splitted by any block.\n conversionApi.convertChildren(viewCodeElement, codeBlock);\n // Let's try to insert code block.\n if (!conversionApi.safeInsert(codeBlock, data.modelCursor)) {\n return;\n }\n consumable.consume(viewCodeElement, {\n name: true\n });\n conversionApi.updateConversionResult(codeBlock, data);\n };\n}\n/**\n * A view-to-model converter for new line characters in `<pre>`.\n *\n * Sample input:\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();\\nbar();</code></pre>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * @returns {Function} Returns a conversion callback.\n */ function dataViewToModelTextNewlinesInsertion() {\n return (evt, data, { consumable, writer })=>{\n let position = data.modelCursor;\n // When node is already converted then do nothing.\n if (!consumable.test(data.viewItem)) {\n return;\n }\n // When not inside `codeBlock` then do nothing.\n if (!position.findAncestor('codeBlock')) {\n return;\n }\n consumable.consume(data.viewItem);\n const text = data.viewItem.data;\n const textLines = text.split('\\n').map((data)=>writer.createText(data));\n const lastLine = textLines[textLines.length - 1];\n for (const node of textLines){\n writer.insert(node, position);\n position = position.getShiftedBy(node.offsetSize);\n if (node !== lastLine) {\n const softBreak = writer.createElement('softBreak');\n writer.insert(softBreak, position);\n position = writer.createPositionAfter(softBreak);\n }\n }\n data.modelRange = writer.createRange(data.modelCursor, position);\n data.modelCursor = position;\n };\n}\n/**\n * A view-to-model converter that handles orphan text nodes (white spaces, new lines, etc.)\n * that surround `<code>` inside `<pre>`.\n *\n * Sample input:\n *\n * ```html\n * // White spaces\n * <pre> <code>foo()</code> </pre>\n *\n * // White spaces\n * <pre> <code>foo()</code> </pre>\n *\n * // White spaces\n * <pre>\t\t\t<code>foo()</code>\t\t\t</pre>\n *\n * // New lines\n * <pre>\n * \t<code>foo()</code>\n * </pre>\n *\n * // Redundant text\n * <pre>ABC<code>foo()</code>DEF</pre>\n * ```\n *\n * Unified output for each case:\n *\n * ```html\n * <codeBlock language=\"plaintext\">foo()</codeBlock>\n * ```\n *\n * @returns Returns a conversion callback.\n */ function dataViewToModelOrphanNodeConsumer() {\n return (evt, data, { consumable })=>{\n const preElement = data.viewItem;\n // Don't clean up nested pre elements. Their content should stay as it is, they are not upcasted\n // to code blocks.\n if (preElement.findAncestor('pre')) {\n return;\n }\n const preChildren = Array.from(preElement.getChildren());\n const childCodeElement = preChildren.find((node)=>node.is('element', 'code'));\n // <code>-less <pre>. It will not upcast to code block in the model, skipping.\n if (!childCodeElement) {\n return;\n }\n for (const child of preChildren){\n if (child === childCodeElement || !child.is('$text')) {\n continue;\n }\n // Consuming the orphan to remove it from the input data.\n // Second argument in `consumable.consume` is discarded for text nodes.\n consumable.consume(child, {\n name: true\n });\n }\n };\n}\n\nconst DEFAULT_ELEMENT = 'paragraph';\n/**\n * The editing part of the code block feature.\n *\n * Introduces the `'codeBlock'` command and the `'codeBlock'` model element.\n */ class CodeBlockEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'CodeBlockEditing';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n ShiftEnter\n ];\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n editor.config.define('codeBlock', {\n languages: [\n {\n language: 'plaintext',\n label: 'Plain text'\n },\n {\n language: 'c',\n label: 'C'\n },\n {\n language: 'cs',\n label: 'C#'\n },\n {\n language: 'cpp',\n label: 'C++'\n },\n {\n language: 'css',\n label: 'CSS'\n },\n {\n language: 'diff',\n label: 'Diff'\n },\n {\n language: 'go',\n label: 'Go'\n },\n {\n language: 'html',\n label: 'HTML'\n },\n {\n language: 'java',\n label: 'Java'\n },\n {\n language: 'javascript',\n label: 'JavaScript'\n },\n {\n language: 'php',\n label: 'PHP'\n },\n {\n language: 'python',\n label: 'Python'\n },\n {\n language: 'ruby',\n label: 'Ruby'\n },\n {\n language: 'typescript',\n label: 'TypeScript'\n },\n {\n language: 'xml',\n label: 'XML'\n }\n ],\n // A single tab.\n indentSequence: '\\t'\n });\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const schema = editor.model.schema;\n const model = editor.model;\n const view = editor.editing.view;\n const normalizedLanguagesDefs = getNormalizedAndLocalizedLanguageDefinitions(editor);\n // The main command.\n editor.commands.add('codeBlock', new CodeBlockCommand(editor));\n // Commands that change the indentation.\n editor.commands.add('indentCodeBlock', new IndentCodeBlockCommand(editor));\n editor.commands.add('outdentCodeBlock', new OutdentCodeBlockCommand(editor));\n this.listenTo(view.document, 'tab', (evt, data)=>{\n const commandName = data.shiftKey ? 'outdentCodeBlock' : 'indentCodeBlock';\n const command = editor.commands.get(commandName);\n if (!command.isEnabled) {\n return;\n }\n editor.execute(commandName);\n data.stopPropagation();\n data.preventDefault();\n evt.stop();\n }, {\n context: 'pre'\n });\n schema.register('codeBlock', {\n allowWhere: '$block',\n allowChildren: '$text',\n // Disallow `$inlineObject` and its derivatives like `inlineWidget` inside `codeBlock` to ensure that only text,\n // not other inline elements like inline images, are allowed. This maintains the semantic integrity of code blocks.\n disallowChildren: '$inlineObject',\n allowAttributes: [\n 'language'\n ],\n allowAttributesOf: '$listItem',\n isBlock: true\n });\n // Disallow formatting attributes on `codeBlock` children.\n schema.addAttributeCheck((context, attributeName)=>{\n const parent = context.getItem(context.length - 2);\n const isFormatting = schema.getAttributeProperties(attributeName).isFormatting;\n if (isFormatting && parent && parent.name == 'codeBlock') {\n return false;\n }\n });\n // Conversion.\n editor.editing.downcastDispatcher.on('insert:codeBlock', modelToViewCodeBlockInsertion(model, normalizedLanguagesDefs, true));\n editor.data.downcastDispatcher.on('insert:codeBlock', modelToViewCodeBlockInsertion(model, normalizedLanguagesDefs));\n editor.data.downcastDispatcher.on('insert:softBreak', modelToDataViewSoftBreakInsertion(model), {\n priority: 'high'\n });\n editor.data.upcastDispatcher.on('element:code', dataViewToModelCodeBlockInsertion(view, normalizedLanguagesDefs));\n editor.data.upcastDispatcher.on('text', dataViewToModelTextNewlinesInsertion());\n editor.data.upcastDispatcher.on('element:pre', dataViewToModelOrphanNodeConsumer(), {\n priority: 'high'\n });\n // Intercept the clipboard input (paste) when the selection is anchored in the code block and force the clipboard\n // data to be pasted as a single plain text. Otherwise, the code lines will split the code block and\n // \"spill out\" as separate paragraphs.\n this.listenTo(editor.editing.view.document, 'clipboardInput', (evt, data)=>{\n let insertionRange = model.createRange(model.document.selection.anchor);\n // Use target ranges in case this is a drop.\n if (data.targetRanges) {\n insertionRange = editor.editing.mapper.toModelRange(data.targetRanges[0]);\n }\n if (!insertionRange.start.parent.is('element', 'codeBlock')) {\n return;\n }\n const text = data.dataTransfer.getData('text/plain');\n const writer = new UpcastWriter(editor.editing.view.document);\n // Pass the view fragment to the default clipboardInput handler.\n data.content = rawSnippetTextToViewDocumentFragment(writer, text);\n });\n if (editor.plugins.has('ClipboardPipeline')) {\n // Elements may have a plain textual representation (hence be present in the 'text/plain' data transfer),\n // but not be allowed in the code block.\n // Filter them out before inserting the content to the model.\n editor.plugins.get(ClipboardPipeline).on('contentInsertion', (evt, data)=>{\n const model = editor.model;\n const selection = model.document.selection;\n if (!selection.anchor.parent.is('element', 'codeBlock')) {\n return;\n }\n model.change((writer)=>{\n const contentRange = writer.createRangeIn(data.content);\n for (const item of [\n ...contentRange.getItems()\n ]){\n // Remove all nodes disallowed in the code block.\n if (item.is('node') && !schema.checkChild(selection.anchor, item)) {\n writer.remove(item);\n }\n }\n });\n });\n }\n // Make sure multi–line selection is always wrapped in a code block when `getSelectedContent()`\n // is used (e.g. clipboard copy). Otherwise, only the raw text will be copied to the clipboard and,\n // upon next paste, this bare text will not be inserted as a code block, which is not the best UX.\n // Similarly, when the selection in a single line, the selected content should be an inline code\n // so it can be pasted later on and retain it's preformatted nature.\n this.listenTo(model, 'getSelectedContent', (evt, [selection])=>{\n const anchor = selection.anchor;\n if (selection.isCollapsed || !anchor.parent.is('element', 'codeBlock') || !anchor.hasSameParentAs(selection.focus)) {\n return;\n }\n model.change((writer)=>{\n const docFragment = evt.return;\n // fo[o<softBreak></softBreak>b]ar -> <codeBlock language=\"...\">[o<softBreak></softBreak>b]<codeBlock>\n if (anchor.parent.is('element') && (docFragment.childCount > 1 || selection.containsEntireContent(anchor.parent))) {\n const codeBlock = writer.createElement('codeBlock', anchor.parent.getAttributes());\n writer.append(docFragment, codeBlock);\n const newDocumentFragment = writer.createDocumentFragment();\n writer.append(codeBlock, newDocumentFragment);\n evt.return = newDocumentFragment;\n return;\n }\n // \"f[oo]\" -> <$text code=\"true\">oo</text>\n const textNode = docFragment.getChild(0);\n if (schema.checkAttribute(textNode, 'code')) {\n writer.setAttribute('code', true, textNode);\n }\n });\n });\n }\n /**\n\t * @inheritDoc\n\t */ afterInit() {\n const editor = this.editor;\n const commands = editor.commands;\n const indent = commands.get('indent');\n const outdent = commands.get('outdent');\n if (indent) {\n // Priority is highest due to integration with `IndentList` command of `List` plugin.\n // If selection is in a code block we give priority to it. This way list item cannot be indented\n // but if we would give priority to indenting list item then user would have to indent list item\n // as much as possible and only then he could indent code block.\n indent.registerChildCommand(commands.get('indentCodeBlock'), {\n priority: 'highest'\n });\n }\n if (outdent) {\n outdent.registerChildCommand(commands.get('outdentCodeBlock'));\n }\n // Customize the response to the <kbd>Enter</kbd> and <kbd>Shift</kbd>+<kbd>Enter</kbd>\n // key press when the selection is in the code block. Upon enter key press we can either\n // leave the block if it's \"two or three enters\" in a row or create a new code block line, preserving\n // previous line's indentation.\n this.listenTo(editor.editing.view.document, 'enter', (evt, data)=>{\n const positionParent = editor.model.document.selection.getLastPosition().parent;\n if (!positionParent.is('element', 'codeBlock')) {\n return;\n }\n if (!leaveBlockStartOnEnter(editor, data.isSoft) && !leaveBlockEndOnEnter(editor, data.isSoft)) {\n breakLineOnEnter(editor);\n }\n data.preventDefault();\n evt.stop();\n }, {\n context: 'pre'\n });\n this._initAriaAnnouncements();\n }\n /**\n\t * Observe when user enters or leaves code block and set proper aria value in global live announcer.\n\t * This allows screen readers to indicate when the user has entered and left the specified code block.\n\t *\n\t * @internal\n\t */ _initAriaAnnouncements() {\n const { model, ui, t } = this.editor;\n const languageDefs = getNormalizedAndLocalizedLanguageDefinitions(this.editor);\n let lastFocusedCodeBlock = null;\n model.document.selection.on('change:range', ()=>{\n const focusParent = model.document.selection.focus.parent;\n if (!ui || lastFocusedCodeBlock === focusParent || !focusParent.is('element')) {\n return;\n }\n if (lastFocusedCodeBlock && lastFocusedCodeBlock.is('element', 'codeBlock')) {\n ui.ariaLiveAnnouncer.announce(getCodeBlockAriaAnnouncement(t, languageDefs, lastFocusedCodeBlock, 'leave'));\n }\n if (focusParent.is('element', 'codeBlock')) {\n ui.ariaLiveAnnouncer.announce(getCodeBlockAriaAnnouncement(t, languageDefs, focusParent, 'enter'));\n }\n lastFocusedCodeBlock = focusParent;\n });\n }\n}\n/**\n * Normally, when the Enter (or Shift+Enter) key is pressed, a soft line break is to be added to the\n * code block. Let's try to follow the indentation of the previous line when possible, for instance:\n *\n * ```html\n * // Before pressing enter (or shift enter)\n * <codeBlock>\n * \" foo()\"[] // Indent of 4 spaces.\n * </codeBlock>\n *\n * // After pressing:\n * <codeBlock>\n * \" foo()\" // Indent of 4 spaces.\n * <softBreak></softBreak> // A new soft break created by pressing enter.\n * \" \"[] // Retain the indent of 4 spaces.\n * </codeBlock>\n * ```\n */ function breakLineOnEnter(editor) {\n const model = editor.model;\n const modelDoc = model.document;\n // Use last position as other mechanisms (e.g. condition deciding whether this function should be called) also check that.\n const lastSelectionPosition = modelDoc.selection.getLastPosition();\n let leadingWhiteSpaces;\n const node = getTextNodeAtLineStart(lastSelectionPosition, model);\n // Figure out the indentation (white space chars) at the beginning of the line.\n if (node && node.is('$text')) {\n leadingWhiteSpaces = getLeadingWhiteSpaces(node);\n }\n // Keeping everything in a change block for a single undo step.\n editor.model.change((writer)=>{\n editor.execute('shiftEnter');\n // If the line before being broken in two had some indentation, let's retain it\n // in the new line.\n if (leadingWhiteSpaces) {\n writer.insertText(leadingWhiteSpaces, modelDoc.selection.anchor);\n }\n });\n}\n/**\n * Leave the code block when Enter (but NOT Shift+Enter) has been pressed twice at the beginning\n * of the code block:\n *\n * ```html\n * // Before:\n * <codeBlock>[]<softBreak></softBreak>foo</codeBlock>\n *\n * // After pressing:\n * <paragraph>[]</paragraph><codeBlock>foo</codeBlock>\n * ```\n *\n * @param isSoftEnter When `true`, enter was pressed along with <kbd>Shift</kbd>.\n * @returns `true` when selection left the block. `false` if stayed.\n */ function leaveBlockStartOnEnter(editor, isSoftEnter) {\n const model = editor.model;\n const modelDoc = model.document;\n const view = editor.editing.view;\n const lastSelectionPosition = modelDoc.selection.getLastPosition();\n const nodeAfter = lastSelectionPosition.nodeAfter;\n if (isSoftEnter || !modelDoc.selection.isCollapsed || !lastSelectionPosition.isAtStart) {\n return false;\n }\n if (!isSoftBreakNode(nodeAfter)) {\n return false;\n }\n // We're doing everything in a single change block to have a single undo step.\n editor.model.change((writer)=>{\n // \"Clone\" the <codeBlock> in the standard way.\n editor.execute('enter');\n // The cloned block exists now before the original code block.\n const newBlock = modelDoc.selection.anchor.parent.previousSibling;\n // Make the cloned <codeBlock> a regular <paragraph> (with clean attributes, so no language).\n writer.rename(newBlock, DEFAULT_ELEMENT);\n writer.setSelection(newBlock, 'in');\n editor.model.schema.removeDisallowedAttributes([\n newBlock\n ], writer);\n // Remove the <softBreak> that originally followed the selection position.\n writer.remove(nodeAfter);\n });\n // Eye candy.\n view.scrollToTheSelection();\n return true;\n}\n/**\n * Leave the code block when Enter (but NOT Shift+Enter) has been pressed twice at the end\n * of the code block:\n *\n * ```html\n * // Before:\n * <codeBlock>foo[]</codeBlock>\n *\n * // After first press:\n * <codeBlock>foo<softBreak></softBreak>[]</codeBlock>\n *\n * // After second press:\n * <codeBlock>foo</codeBlock><paragraph>[]</paragraph>\n * ```\n *\n * @param isSoftEnter When `true`, enter was pressed along with <kbd>Shift</kbd>.\n * @returns `true` when selection left the block. `false` if stayed.\n */ function leaveBlockEndOnEnter(editor, isSoftEnter) {\n const model = editor.model;\n const modelDoc = model.document;\n const view = editor.editing.view;\n const lastSelectionPosition = modelDoc.selection.getLastPosition();\n const nodeBefore = lastSelectionPosition.nodeBefore;\n let emptyLineRangeToRemoveOnEnter;\n if (isSoftEnter || !modelDoc.selection.isCollapsed || !lastSelectionPosition.isAtEnd || !nodeBefore || !nodeBefore.previousSibling) {\n return false;\n }\n // When the position is directly preceded by two soft breaks\n //\n //\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak>[]</codeBlock>\n //\n // it creates the following range that will be cleaned up before leaving:\n //\n //\t\t<codeBlock>foo[<softBreak></softBreak><softBreak></softBreak>]</codeBlock>\n //\n if (isSoftBreakNode(nodeBefore) && isSoftBreakNode(nodeBefore.previousSibling)) {\n emptyLineRangeToRemoveOnEnter = model.createRange(model.createPositionBefore(nodeBefore.previousSibling), model.createPositionAfter(nodeBefore));\n } else if (isEmptyishTextNode(nodeBefore) && isSoftBreakNode(nodeBefore.previousSibling) && isSoftBreakNode(nodeBefore.previousSibling.previousSibling)) {\n emptyLineRangeToRemoveOnEnter = model.createRange(model.createPositionBefore(nodeBefore.previousSibling.previousSibling), model.createPositionAfter(nodeBefore));\n } else if (isEmptyishTextNode(nodeBefore) && isSoftBreakNode(nodeBefore.previousSibling) && isEmptyishTextNode(nodeBefore.previousSibling.previousSibling) && nodeBefore.previousSibling.previousSibling && isSoftBreakNode(nodeBefore.previousSibling.previousSibling.previousSibling)) {\n emptyLineRangeToRemoveOnEnter = model.createRange(model.createPositionBefore(nodeBefore.previousSibling.previousSibling.previousSibling), model.createPositionAfter(nodeBefore));\n } else {\n return false;\n }\n // We're doing everything in a single change block to have a single undo step.\n editor.model.change((writer)=>{\n // Remove the last <softBreak>s and all white space characters that followed them.\n writer.remove(emptyLineRangeToRemoveOnEnter);\n // \"Clone\" the <codeBlock> in the standard way.\n editor.execute('enter');\n const newBlock = modelDoc.selection.anchor.parent;\n // Make the cloned <codeBlock> a regular <paragraph> (with clean attributes, so no language).\n writer.rename(newBlock, DEFAULT_ELEMENT);\n editor.model.schema.removeDisallowedAttributes([\n newBlock\n ], writer);\n });\n // Eye candy.\n view.scrollToTheSelection();\n return true;\n}\nfunction isEmptyishTextNode(node) {\n return node && node.is('$text') && !node.data.match(/\\S/);\n}\nfunction isSoftBreakNode(node) {\n return node && node.is('element', 'softBreak');\n}\n\n/**\n * The code block UI plugin.\n *\n * Introduces the `'codeBlock'` dropdown.\n */ class CodeBlockUI extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'CodeBlockUI';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const t = editor.t;\n const componentFactory = editor.ui.componentFactory;\n const normalizedLanguageDefs = getNormalizedAndLocalizedLanguageDefinitions(editor);\n const itemDefinitions = this._getLanguageListItemDefinitions(normalizedLanguageDefs);\n const command = editor.commands.get('codeBlock');\n componentFactory.add('codeBlock', (locale)=>{\n const dropdownView = createDropdown(locale, SplitButtonView);\n const splitButtonView = dropdownView.buttonView;\n const accessibleLabel = t('Insert code block');\n splitButtonView.set({\n label: accessibleLabel,\n tooltip: true,\n icon: IconCodeBlock,\n isToggleable: true\n });\n splitButtonView.bind('isOn').to(command, 'value', (value)=>!!value);\n splitButtonView.on('execute', ()=>{\n editor.execute('codeBlock', {\n usePreviousLanguageChoice: true\n });\n editor.editing.view.focus();\n });\n dropdownView.on('execute', (evt)=>{\n editor.execute('codeBlock', {\n language: evt.source._codeBlockLanguage,\n forceValue: true\n });\n editor.editing.view.focus();\n });\n dropdownView.class = 'ck-code-block-dropdown';\n dropdownView.bind('isEnabled').to(command);\n addListToDropdown(dropdownView, itemDefinitions, {\n role: 'menu',\n ariaLabel: accessibleLabel\n });\n return dropdownView;\n });\n componentFactory.add('menuBar:codeBlock', (locale)=>{\n const menuView = new MenuBarMenuView(locale);\n menuView.buttonView.set({\n role: 'menuitem',\n label: t('Code block'),\n icon: IconCodeBlock\n });\n menuView.bind('isEnabled').to(command);\n const listView = new MenuBarMenuListView(locale);\n listView.set({\n ariaLabel: t('Insert code block')\n });\n for (const definition of itemDefinitions){\n const listItemView = new MenuBarMenuListItemView(locale, menuView);\n const buttonView = new MenuBarMenuListItemButtonView(locale);\n buttonView.bind(...Object.keys(definition.model)).to(definition.model);\n buttonView.set({\n isToggleable: true,\n role: 'menuitemcheckbox'\n });\n buttonView.delegate('execute').to(menuView);\n buttonView.on('execute', ()=>{\n editor.execute('codeBlock', {\n language: definition.model._codeBlockLanguage,\n forceValue: command.value == definition.model._codeBlockLanguage ? false : true\n });\n editor.editing.view.focus();\n });\n listItemView.children.add(buttonView);\n listView.items.add(listItemView);\n }\n menuView.panelView.children.add(listView);\n return menuView;\n });\n }\n /**\n\t * A helper returning a collection of the `codeBlock` dropdown items representing languages\n\t * available for the user to choose from.\n\t */ _getLanguageListItemDefinitions(normalizedLanguageDefs) {\n const editor = this.editor;\n const command = editor.commands.get('codeBlock');\n const itemDefinitions = new Collection();\n for (const languageDef of normalizedLanguageDefs){\n const definition = {\n type: 'button',\n model: new ViewModel({\n _codeBlockLanguage: languageDef.language,\n label: languageDef.label,\n role: 'menuitemradio',\n withText: true\n })\n };\n definition.model.bind('isOn').to(command, 'value', (value)=>{\n return value === definition.model._codeBlockLanguage;\n });\n itemDefinitions.add(definition);\n }\n return itemDefinitions;\n }\n}\n\n/**\n * The code block plugin.\n *\n * For more information about this feature check the {@glink api/code-block package page} and the\n * {@glink features/code-blocks code block} feature guide.\n *\n * This is a \"glue\" plugin that loads the {@link module:code-block/codeblockediting~CodeBlockEditing code block editing feature}\n * and the {@link module:code-block/codeblockui~CodeBlockUI code block UI feature}.\n */ class CodeBlock extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n CodeBlockEditing,\n CodeBlockUI\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'CodeBlock';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n}\n\nexport { CodeBlock, CodeBlockEditing, CodeBlockUI };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/utils\n */\n\nimport type { Editor } from 'ckeditor5/src/core.js';\nimport type { CodeBlockLanguageDefinition } from './codeblockconfig.js';\nimport type {\n\tDocumentSelection,\n\tElement,\n\tModel,\n\tPosition,\n\tSchema,\n\tText,\n\tUpcastWriter,\n\tViewDocumentFragment,\n\tViewElement\n} from 'ckeditor5/src/engine.js';\n\nimport { first, type LocaleTranslate } from 'ckeditor5/src/utils.js';\n\n/**\n * Returns code block languages as defined in `config.codeBlock.languages` but processed:\n *\n * * To consider the editor localization, i.e. to display {@link module:code-block/codeblockconfig~CodeBlockLanguageDefinition}\n * in the correct language. There is no way to use {@link module:utils/locale~Locale#t} when the user\n * configuration is defined because the editor does not exist yet.\n * * To make sure each definition has a CSS class associated with it even if not specified\n * in the original configuration.\n */\nexport function getNormalizedAndLocalizedLanguageDefinitions( editor: Editor ): Array<CodeBlockLanguageDefinition> {\n\tconst t = editor.t;\n\tconst languageDefs = editor.config.get( 'codeBlock.languages' ) as Array<CodeBlockLanguageDefinition>;\n\n\tfor ( const def of languageDefs ) {\n\t\tif ( def.label === 'Plain text' ) {\n\t\t\tdef.label = t( 'Plain text' );\n\t\t}\n\n\t\tif ( def.class === undefined ) {\n\t\t\tdef.class = `language-${ def.language }`;\n\t\t}\n\t}\n\n\treturn languageDefs;\n}\n\n/**\n * Returns an object associating certain language definition properties with others. For instance:\n *\n * For:\n *\n * ```ts\n * const definitions = {\n * \t{ language: 'php', class: 'language-php', label: 'PHP' },\n * \t{ language: 'javascript', class: 'js', label: 'JavaScript' },\n * };\n *\n * getPropertyAssociation( definitions, 'class', 'language' );\n * ```\n *\n * returns:\n *\n * ```ts\n * {\n * \t'language-php': 'php',\n * \t'js': 'javascript'\n * }\n * ```\n *\n * and\n *\n * ```ts\n * getPropertyAssociation( definitions, 'language', 'label' );\n * ```\n *\n * returns:\n *\n * ```ts\n * {\n * \t'php': 'PHP',\n * \t'javascript': 'JavaScript'\n * }\n * ```\n */\nexport function getPropertyAssociation(\n\tlanguageDefs: Array<CodeBlockLanguageDefinition>,\n\tkey: keyof CodeBlockLanguageDefinition,\n\tvalue: keyof CodeBlockLanguageDefinition\n): Record<string, string> {\n\tconst association: Record<string, string> = {};\n\n\tfor ( const def of languageDefs ) {\n\t\tif ( key === 'class' ) {\n\t\t\t// Only the first class is considered.\n\t\t\tconst newKey = ( def[ key ]! ).split( ' ' ).shift()!;\n\n\t\t\tassociation[ newKey ] = def[ value ]!;\n\t\t} else {\n\t\t\tassociation[ def[ key ]! ] = def[ value ]!;\n\t\t}\n\t}\n\n\treturn association;\n}\n\n/**\n * For a given model text node, it returns white spaces that precede other characters in that node.\n * This corresponds to the indentation part of the code block line.\n */\nexport function getLeadingWhiteSpaces( textNode: Text ): string {\n\treturn textNode.data.match( /^(\\s*)/ )![ 0 ];\n}\n\n/**\n * For plain text containing the code (a snippet), it returns a document fragment containing\n * view text nodes separated by `<br>` elements (in place of new line characters \"\\n\"), for instance:\n *\n * Input:\n *\n * ```ts\n * \"foo()\\n\n * bar()\"\n * ```\n *\n * Output:\n *\n * ```html\n * <DocumentFragment>\n * \t\"foo()\"\n * \t<br/>\n * \t\"bar()\"\n * </DocumentFragment>\n * ```\n *\n * @param text The raw code text to be converted.\n */\nexport function rawSnippetTextToViewDocumentFragment( writer: UpcastWriter, text: string ): ViewDocumentFragment {\n\tconst fragment = writer.createDocumentFragment();\n\tconst textLines = text.split( '\\n' );\n\n\tconst items = textLines.reduce( ( nodes: Array<string | ViewElement>, line, lineIndex ) => {\n\t\tnodes.push( line );\n\n\t\tif ( lineIndex < textLines.length - 1 ) {\n\t\t\tnodes.push( writer.createElement( 'br' ) );\n\t\t}\n\n\t\treturn nodes;\n\t}, [] );\n\n\twriter.appendChild( items, fragment );\n\n\treturn fragment;\n}\n\n/**\n * Returns an array of all model positions within the selection that represent code block lines.\n *\n * If the selection is collapsed, it returns the exact selection anchor position:\n *\n * ```html\n * <codeBlock>[]foo</codeBlock> -> <codeBlock>^foo</codeBlock>\n * <codeBlock>foo[]bar</codeBlock> -> <codeBlock>foo^bar</codeBlock>\n * ```\n *\n * Otherwise, it returns positions **before** each text node belonging to all code blocks contained by the selection:\n *\n * ```html\n * <codeBlock> <codeBlock>\n * foo[bar ^foobar\n * <softBreak></softBreak> -> <softBreak></softBreak>\n * baz]qux ^bazqux\n * </codeBlock> </codeBlock>\n * ```\n *\n * It also works across other non–code blocks:\n *\n * ```html\n * <codeBlock> <codeBlock>\n * foo[bar ^foobar\n * </codeBlock> </codeBlock>\n * <paragraph>text</paragraph> -> <paragraph>text</paragraph>\n * <codeBlock> <codeBlock>\n * baz]qux ^bazqux\n * </codeBlock> </codeBlock>\n * ```\n *\n * **Note:** The positions are in reverse order so they do not get outdated when iterating over them and\n * the writer inserts or removes elements at the same time.\n *\n * **Note:** The position is located after the leading white spaces in the text node.\n */\nexport function getIndentOutdentPositions( model: Model ): Array<Position> {\n\tconst selection = model.document.selection;\n\tconst positions: Array<Position> = [];\n\n\t// When the selection is collapsed, there's only one position we can indent or outdent.\n\tif ( selection.isCollapsed ) {\n\t\treturn [ selection.anchor! ];\n\t}\n\n\t// When the selection is NOT collapsed, collect all positions starting before text nodes\n\t// (code lines) in any <codeBlock> within the selection.\n\n\t// Walk backward so positions we are about to collect here do not get outdated when\n\t// inserting or deleting using the writer.\n\n\tconst walker = selection.getFirstRange()!.getWalker( {\n\t\tignoreElementEnd: true,\n\t\tdirection: 'backward'\n\t} );\n\n\tfor ( const { item } of walker ) {\n\t\tlet node = item.is( '$textProxy' ) ? item.textNode : item;\n\t\tconst parent = node.parent;\n\n\t\tif ( !parent!.is( 'element', 'codeBlock' ) || node.is( 'element', 'softBreak' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// For each item in code block, move backwards until the beginning of the line it is in is found.\n\t\twhile ( node.previousSibling && !node.previousSibling.is( 'element', 'softBreak' ) ) {\n\t\t\tnode = node.previousSibling;\n\t\t}\n\n\t\t// Take the leading white spaces into account (only for text nodes).\n\t\tconst startOffset = !node.is( '$text' ) ? node.startOffset! : node.startOffset! + getLeadingWhiteSpaces( node ).length;\n\t\tconst position = model.createPositionAt( parent, startOffset );\n\n\t\t// Do not add the same position twice. Unfortunately using set doesn't deduplicate positions because\n\t\t// they are different objects.\n\t\tif ( positions.every( pos => !pos.isEqual( position ) ) ) {\n\t\t\tpositions.push( position );\n\t\t}\n\t}\n\n\treturn positions;\n}\n\n/**\n * Checks if any of the blocks within the model selection is a code block.\n */\nexport function isModelSelectionInCodeBlock( selection: DocumentSelection ): boolean {\n\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\treturn !!firstBlock && firstBlock.is( 'element', 'codeBlock' );\n}\n\n/**\n * Checks if an {@link module:engine/model/element~Element Element} can become a code block.\n *\n * @param schema Model's schema.\n * @param element The element to be checked.\n * @returns Check result.\n */\nexport function canBeCodeBlock( schema: Schema, element: Element ): boolean {\n\tif ( element.is( 'rootElement' ) || schema.isLimit( element ) ) {\n\t\treturn false;\n\t}\n\n\treturn schema.checkChild( element.parent as Element, 'codeBlock' );\n}\n\n/**\n * Get the translated message read by the screen reader when you enter or exit an element with your cursor.\n */\nexport function getCodeBlockAriaAnnouncement(\n\tt: LocaleTranslate,\n\tlanguageDefs: Array<CodeBlockLanguageDefinition>,\n\telement: Element,\n\tdirection: 'enter' | 'leave'\n): string {\n\tconst languagesToLabels = getPropertyAssociation( languageDefs, 'language', 'label' );\n\tconst codeBlockLanguage = element.getAttribute( 'language' ) as string;\n\n\tif ( codeBlockLanguage in languagesToLabels ) {\n\t\tconst language = languagesToLabels[ codeBlockLanguage ];\n\n\t\tif ( direction === 'enter' ) {\n\t\t\treturn t( 'Entering %0 code snippet', language );\n\t\t}\n\n\t\treturn t( 'Leaving %0 code snippet', language );\n\t}\n\n\tif ( direction === 'enter' ) {\n\t\treturn t( 'Entering code snippet' );\n\t}\n\n\treturn t( 'Leaving code snippet' );\n}\n\n/**\n * For given position, finds the closest position that is at the beginning of a line of code and returns a text node that is at the\n * beginning of the line (or `null` if there's no text node at the beginning of a given line).\n *\n * Line beings at the start of a code block element and after each `softBreak` element.\n *\n * Note: even though code block doesn't allow inline elements other than `<softBreak>` by default, some features may overwrite this rule,\n * so such inline elements are taken into account.\n *\n * Some examples of expected results:\n *\n * ```\n * <codeBlock>^</codeBlock> -> null\n * <codeBlock>^foobar</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foobar^</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foo^bar</codeBlock> -> <codeBlock>[foobar]</codeBlock>\n * <codeBlock>foo^<softBreak />bar</codeBlock> -> <codeBlock>[foo]<softBreak />bar</codeBlock>\n * <codeBlock>foo<softBreak />bar^</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>foo<softBreak />b^ar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>foo<softBreak />^bar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock>\n * <codeBlock>^<element /></codeBlock> -> null\n * <codeBlock><element />^</codeBlock> -> null\n * <codeBlock>foo^<element /></codeBlock> -> <codeBlock>[foo]<element /></codeBlock>\n * <codeBlock>foo<element />^</codeBlock> -> <codeBlock>[foo]<element /></codeBlock>\n * <codeBlock>foo<element />bar^</codeBlock> -> <codeBlock>[foo]<element />bar</codeBlock>\n * <codeBlock><element />bar^</codeBlock> -> null\n * <codeBlock>foo<softBreak />^<softBreak /></codeBlock> -> null\n * <codeBlock>foo<softBreak />^<element /></codeBlock> -> null\n * <codeBlock>foo<softBreak /><element />^</codeBlock> -> null\n * <codeBlock>foo<softBreak />bar<element />^</codeBlock> -> <codeBlock>foo<softBreak />[bar]<element /></codeBlock>\n * <codeBlock>foo<softBreak /><element />ba^r</codeBlock> -> null\n * ```\n */\nexport function getTextNodeAtLineStart( position: Position, model: Model ): Text | null {\n\t// First, move position before a text node, if it is inside a text node.\n\tif ( position.textNode ) {\n\t\tposition = model.createPositionBefore( position.textNode );\n\t}\n\n\t// Then, jump-back the position until it is before a `softBreak` or at the beginning of the `codeBlock`.\n\twhile ( position.nodeBefore && !position.nodeBefore.is( 'element', 'softBreak' ) ) {\n\t\tposition = model.createPositionBefore( position.nodeBefore );\n\t}\n\n\t// Now, the position is at the beginning of a line.\n\t// Return a text node after the position, if there is one.\n\tconst nodeAtStart = position.nodeAfter;\n\n\treturn nodeAtStart && nodeAtStart.is( '$text' ) ? nodeAtStart : null;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/codeblockcommand\n */\n\nimport type { Element, Writer } from 'ckeditor5/src/engine.js';\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\nimport { first } from 'ckeditor5/src/utils.js';\n\nimport { getNormalizedAndLocalizedLanguageDefinitions, canBeCodeBlock } from './utils.js';\n\n/**\n * The code block command plugin.\n */\nexport default class CodeBlockCommand extends Command {\n\t/**\n\t * Contains the last used language.\n\t */\n\tprivate _lastLanguage: string | null;\n\n\t/**\n\t * Contains language if any is selected, false otherwise.\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: string | false;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._lastLanguage = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.value = this._getValue();\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Executes the command. When the command {@link #value is on}, all topmost code blocks within\n\t * the selection will be removed. If it is off, all selected blocks will be flattened and\n\t * wrapped by a code block.\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.language The code block language.\n\t * @param options.forceValue If set, it will force the command behavior. If `true`, the command will apply a code block,\n\t * otherwise the command will remove the code block. If not set, the command will act basing on its current value.\n\t * @param options.usePreviousLanguageChoice If set on `true` and the `options.language` is not specified, the command\n\t * will apply the previous language (if the command was already executed) when inserting the `codeBlock` element.\n\t */\n\tpublic override execute( options: {\n\t\tlanguage?: string;\n\t\tforceValue?: boolean;\n\t\tusePreviousLanguageChoice?: boolean;\n\t} = {} ): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst normalizedLanguagesDefs = getNormalizedAndLocalizedLanguageDefinitions( editor );\n\t\tconst firstLanguageInConfig = normalizedLanguagesDefs[ 0 ];\n\n\t\tconst blocks = Array.from( selection.getSelectedBlocks() );\n\t\tconst value = options.forceValue == undefined ? !this.value : options.forceValue;\n\t\tconst language = getLanguage( options, this._lastLanguage, firstLanguageInConfig.language );\n\n\t\tmodel.change( writer => {\n\t\t\tif ( value ) {\n\t\t\t\tthis._applyCodeBlock( writer, blocks, language );\n\t\t\t} else {\n\t\t\t\tthis._removeCodeBlock( writer, blocks );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks the command's {@link #value}.\n\t *\n\t * @returns The current value.\n\t */\n\tprivate _getValue(): string | false {\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst firstBlock = first( selection.getSelectedBlocks() );\n\t\tconst isCodeBlock = !!firstBlock?.is( 'element', 'codeBlock' );\n\n\t\treturn isCodeBlock ? firstBlock.getAttribute( 'language' ) as string : false;\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @returns Whether the command should be enabled.\n\t */\n\tprivate _checkEnabled(): boolean {\n\t\tif ( this.value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst schema = this.editor.model.schema;\n\n\t\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t\tif ( !firstBlock ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn canBeCodeBlock( schema, firstBlock );\n\t}\n\n\tprivate _applyCodeBlock( writer: Writer, blocks: Array<Element>, language: string ): void {\n\t\tthis._lastLanguage = language;\n\n\t\tconst schema = this.editor.model.schema;\n\t\tconst allowedBlocks = blocks.filter( block => canBeCodeBlock( schema, block ) );\n\n\t\tfor ( const block of allowedBlocks ) {\n\t\t\twriter.rename( block, 'codeBlock' );\n\t\t\twriter.setAttribute( 'language', language, block );\n\t\t\tschema.removeDisallowedAttributes( [ block ], writer );\n\n\t\t\t// Remove children of the `codeBlock` element that are not allowed. See #9567.\n\t\t\tArray.from( block.getChildren() )\n\t\t\t\t.filter( child => !schema.checkChild( block, child ) )\n\t\t\t\t.forEach( child => writer.remove( child ) );\n\t\t}\n\n\t\tallowedBlocks.reverse().forEach( ( currentBlock, i ) => {\n\t\t\tconst nextBlock = allowedBlocks[ i + 1 ];\n\n\t\t\tif ( currentBlock.previousSibling === nextBlock ) {\n\t\t\t\twriter.appendElement( 'softBreak', nextBlock );\n\t\t\t\twriter.merge( writer.createPositionBefore( currentBlock ) );\n\t\t\t}\n\t\t} );\n\t}\n\n\tprivate _removeCodeBlock( writer: Writer, blocks: Array<Element> ): void {\n\t\tconst codeBlocks = blocks.filter( block => block.is( 'element', 'codeBlock' ) );\n\n\t\tfor ( const block of codeBlocks ) {\n\t\t\tconst range = writer.createRangeOn( block );\n\n\t\t\tfor ( const item of Array.from( range.getItems() ).reverse() ) {\n\t\t\t\tif ( item.is( 'element', 'softBreak' ) && item.parent!.is( 'element', 'codeBlock' ) ) {\n\t\t\t\t\tconst { position } = writer.split( writer.createPositionBefore( item ) );\n\t\t\t\t\tconst elementAfter = position.nodeAfter as Element;\n\n\t\t\t\t\twriter.rename( elementAfter, 'paragraph' );\n\t\t\t\t\twriter.removeAttribute( 'language', elementAfter );\n\t\t\t\t\twriter.remove( item );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twriter.rename( block, 'paragraph' );\n\t\t\twriter.removeAttribute( 'language', block );\n\t\t}\n\t}\n}\n\n/**\n * Picks the language for the new code block. If any language is passed as an option,\n * it will be returned. Else, if option usePreviousLanguageChoice is true and some\n * code block was already created (lastLanguage is not null) then previously used\n * language will be returned. If not, it will return default language.\n */\nfunction getLanguage(\n\toptions: { usePreviousLanguageChoice?: boolean; language?: string },\n\tlastLanguage: string | null,\n\tdefaultLanguage: string\n): string {\n\tif ( options.language ) {\n\t\treturn options.language;\n\t}\n\n\tif ( options.usePreviousLanguageChoice && lastLanguage ) {\n\t\treturn lastLanguage;\n\t}\n\n\treturn defaultLanguage;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/indentcodeblockcommand\n */\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\n\nimport {\n\tgetIndentOutdentPositions,\n\tisModelSelectionInCodeBlock\n} from './utils.js';\n\n/**\n * The code block indentation increase command plugin.\n */\nexport default class IndentCodeBlockCommand extends Command {\n\t/**\n\t * A sequence of characters added to the line when the command is executed.\n\t */\n\tprivate _indentSequence: string;\n\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._indentSequence = editor.config.get( 'codeBlock.indentSequence' )!;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Executes the command. When the command {@link #isEnabled is enabled}, the indentation of the\n\t * code lines in the selection will be increased.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\tmodel.change( writer => {\n\t\t\tconst positions = getIndentOutdentPositions( model );\n\n\t\t\t// Indent all positions, for instance assuming the indent sequence is 4x space (\" \"):\n\t\t\t//\n\t\t\t//\t\t<codeBlock>^foo</codeBlock> -> <codeBlock> foo</codeBlock>\n\t\t\t//\n\t\t\t//\t\t<codeBlock>foo^bar</codeBlock> -> <codeBlock>foo bar</codeBlock>\n\t\t\t//\n\t\t\t// Also, when there is more than one position:\n\t\t\t//\n\t\t\t//\t\t<codeBlock>\n\t\t\t//\t\t\t^foobar\n\t\t\t//\t\t\t<softBreak></softBreak>\n\t\t\t//\t\t\t^bazqux\n\t\t\t//\t\t</codeBlock>\n\t\t\t//\n\t\t\t//\t\t->\n\t\t\t//\n\t\t\t//\t\t<codeBlock>\n\t\t\t//\t\t\t foobar\n\t\t\t//\t\t\t<softBreak></softBreak>\n\t\t\t//\t\t\t bazqux\n\t\t\t//\t\t</codeBlock>\n\t\t\t//\n\t\t\tfor ( const position of positions ) {\n\t\t\t\tconst indentSequenceTextElement = writer.createText( this._indentSequence );\n\n\t\t\t\t// Previously insertion was done by writer.insertText(). It was changed to insertContent() to enable\n\t\t\t\t// integration of code block with track changes. It's the easiest way of integration because insertContent()\n\t\t\t\t// is already integrated with track changes, but if it ever cause any troubles it can be reverted, however\n\t\t\t\t// some additional work will be required in track changes integration of code block.\n\t\t\t\tmodel.insertContent( indentSequenceTextElement, position );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t */\n\tprivate _checkEnabled(): boolean {\n\t\tif ( !this._indentSequence ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Indent (forward) command is always enabled when there's any code block in the selection\n\t\t// because you can always indent code lines.\n\t\treturn isModelSelectionInCodeBlock( this.editor.model.document.selection );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/outdentcodeblockcommand\n */\n\nimport type { Model, Position, Range } from 'ckeditor5/src/engine.js';\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\n\nimport {\n\tgetLeadingWhiteSpaces,\n\tgetIndentOutdentPositions,\n\tisModelSelectionInCodeBlock,\n\tgetTextNodeAtLineStart\n} from './utils.js';\n\n/**\n * The code block indentation decrease command plugin.\n */\nexport default class OutdentCodeBlockCommand extends Command {\n\t/**\n\t * A sequence of characters removed from the line when the command is executed.\n\t */\n\tprivate readonly _indentSequence: string;\n\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._indentSequence = editor.config.get( 'codeBlock.indentSequence' )!;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Executes the command. When the command {@link #isEnabled is enabled}, the indentation of the\n\t * code lines in the selection will be decreased.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\tmodel.change( () => {\n\t\t\tconst positions = getIndentOutdentPositions( model );\n\n\t\t\t// Outdent all positions, for instance assuming the indent sequence is 4x space (\" \"):\n\t\t\t//\n\t\t\t//\t\t<codeBlock>^foo</codeBlock> -> <codeBlock>foo</codeBlock>\n\t\t\t//\n\t\t\t//\t\t<codeBlock> ^bar</codeBlock> -> <codeBlock>bar</codeBlock>\n\t\t\t//\n\t\t\t// Also, when there is more than one position:\n\t\t\t//\n\t\t\t//\t\t<codeBlock>\n\t\t\t//\t\t\t ^foobar\n\t\t\t//\t\t\t<softBreak></softBreak>\n\t\t\t//\t\t\t ^bazqux\n\t\t\t//\t\t</codeBlock>\n\t\t\t//\n\t\t\t//\t\t->\n\t\t\t//\n\t\t\t//\t\t<codeBlock>\n\t\t\t//\t\t\tfoobar\n\t\t\t//\t\t\t<softBreak></softBreak>\n\t\t\t//\t\t\tbazqux\n\t\t\t//\t\t</codeBlock>\n\t\t\tfor ( const position of positions ) {\n\t\t\t\tconst range = getLastOutdentableSequenceRange( model, position, this._indentSequence );\n\n\t\t\t\tif ( range ) {\n\t\t\t\t\t// Previously deletion was done by writer.remove(). It was changed to deleteContent() to enable\n\t\t\t\t\t// integration of code block with track changes. It's the easiest way of integration because deleteContent()\n\t\t\t\t\t// is already integrated with track changes, but if it ever cause any troubles it can be reverted, however\n\t\t\t\t\t// some additional work will be required in track changes integration of code block.\n\t\t\t\t\tmodel.deleteContent( model.createSelection( range ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @private\n\t * @returns {Boolean} Whether the command should be enabled.\n\t */\n\tprivate _checkEnabled(): boolean {\n\t\tif ( !this._indentSequence ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst model = this.editor.model;\n\n\t\tif ( !isModelSelectionInCodeBlock( model.document.selection ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Outdent command can execute only when there is an indent character sequence\n\t\t// in some of the lines.\n\t\treturn getIndentOutdentPositions( model ).some( position => {\n\t\t\treturn getLastOutdentableSequenceRange( model, position, this._indentSequence );\n\t\t} );\n\t}\n}\n\n// For a position coming from `getIndentOutdentPositions()`, it returns the range representing\n// the last occurrence of the indent sequence among the leading whitespaces of the code line the\n// position represents.\n//\n// For instance, assuming the indent sequence is 4x space (\" \"):\n//\n//\t\t<codeBlock>foo^</codeBlock> -> null\n//\t\t<codeBlock>foo^<softBreak></softBreak>bar</codeBlock> -> null\n//\t\t<codeBlock> ^foo</codeBlock> -> null\n//\t\t<codeBlock> ^foo</codeBlock> -> <codeBlock> [ ]foo</codeBlock>\n//\t\t<codeBlock> ^foo bar</codeBlock> -> <codeBlock>[ ]foo bar</codeBlock>\n//\n// @param {<module:engine/model/model~Model>} model\n// @param {<module:engine/model/position~Position>} position\n// @param {String} sequence\n// @returns {<module:engine/model/range~Range>|null}\nfunction getLastOutdentableSequenceRange( model: Model, position: Position, sequence: string ): Range | null {\n\t// Positions start before each text node (code line). Get the node corresponding to the position.\n\tconst nodeAtPosition = getTextNodeAtLineStart( position, model );\n\n\tif ( !nodeAtPosition ) {\n\t\treturn null;\n\t}\n\n\tconst leadingWhiteSpaces = getLeadingWhiteSpaces( nodeAtPosition );\n\tconst lastIndexOfSequence = leadingWhiteSpaces.lastIndexOf( sequence );\n\n\t// For instance, assuming the indent sequence is 4x space (\" \"):\n\t//\n\t//\t\t<codeBlock> \t^foo</codeBlock> -> null\n\t//\n\tif ( lastIndexOfSequence + sequence.length !== leadingWhiteSpaces.length ) {\n\t\treturn null;\n\t}\n\n\t// For instance, assuming the indent sequence is 4x space (\" \"):\n\t//\n\t//\t\t<codeBlock> ^foo</codeBlock> -> null\n\t//\n\tif ( lastIndexOfSequence === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst { parent, startOffset } = nodeAtPosition;\n\n\t// Create a range that contains the **last** indent sequence among the leading whitespaces\n\t// of the line.\n\t//\n\t// For instance, assuming the indent sequence is 4x space (\" \"):\n\t//\n\t//\t\t<codeBlock> ^foo</codeBlock> -> <codeBlock> [ ]foo</codeBlock>\n\t//\n\treturn model.createRange(\n\t\tmodel.createPositionAt( parent!, startOffset! + lastIndexOfSequence ),\n\t\tmodel.createPositionAt( parent!, startOffset! + lastIndexOfSequence + sequence.length )\n\t);\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/converters\n */\n\nimport type { GetCallback } from 'ckeditor5/src/utils.js';\nimport type { DowncastInsertEvent, Element, Model, UpcastElementEvent, UpcastTextEvent, EditingView } from 'ckeditor5/src/engine.js';\nimport type { CodeBlockLanguageDefinition } from './codeblockconfig.js';\nimport { getPropertyAssociation } from './utils.js';\n\n/**\n * A model-to-view (both editing and data) converter for the `codeBlock` element.\n *\n * Sample input:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * Sample output (editing):\n *\n * ```html\n * <pre data-language=\"JavaScript\"><code class=\"language-javascript\">foo();<br />bar();</code></pre>\n * ```\n *\n * Sample output (data, see {@link module:code-block/converters~modelToDataViewSoftBreakInsertion}):\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();\\nbar();</code></pre>\n * ```\n *\n * @param languageDefs The normalized language configuration passed to the feature.\n * @param useLabels When `true`, the `<pre>` element will get a `data-language` attribute with a\n * human–readable label of the language. Used only in the editing.\n * @returns Returns a conversion callback.\n */\nexport function modelToViewCodeBlockInsertion(\n\tmodel: Model,\n\tlanguageDefs: Array<CodeBlockLanguageDefinition>,\n\tuseLabels: boolean = false\n): GetCallback<DowncastInsertEvent> {\n\t// Language CSS classes:\n\t//\n\t//\t\t{\n\t//\t\t\tphp: 'language-php',\n\t//\t\t\tpython: 'language-python',\n\t//\t\t\tjavascript: 'js',\n\t//\t\t\t...\n\t//\t\t}\n\tconst languagesToClasses = getPropertyAssociation( languageDefs, 'language', 'class' );\n\n\t// Language labels:\n\t//\n\t//\t\t{\n\t//\t\t\tphp: 'PHP',\n\t//\t\t\tpython: 'Python',\n\t//\t\t\tjavascript: 'JavaScript',\n\t//\t\t\t...\n\t//\t\t}\n\tconst languagesToLabels = getPropertyAssociation( languageDefs, 'language', 'label' );\n\n\treturn ( evt, data, conversionApi ): void => {\n\t\tconst { writer, mapper, consumable } = conversionApi;\n\n\t\tif ( !consumable.consume( data.item, 'insert' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst codeBlockLanguage = data.item.getAttribute( 'language' ) as string;\n\t\tconst targetViewPosition = mapper.toViewPosition( model.createPositionBefore( data.item ) );\n\t\tconst preAttributes: Record<string, string> = {};\n\n\t\t// Attributes added only in the editing view.\n\t\tif ( useLabels ) {\n\t\t\tpreAttributes[ 'data-language' ] = languagesToLabels[ codeBlockLanguage ];\n\t\t\tpreAttributes.spellcheck = 'false';\n\t\t}\n\n\t\tconst codeAttributes = languagesToClasses[ codeBlockLanguage ] ? {\n\t\t\tclass: languagesToClasses[ codeBlockLanguage ]\n\t\t} : undefined;\n\t\tconst code = writer.createContainerElement( 'code', codeAttributes );\n\n\t\tconst pre = writer.createContainerElement( 'pre', preAttributes, code );\n\n\t\twriter.insert( targetViewPosition, pre );\n\n\t\tmapper.bindElements( data.item as Element, code );\n\t};\n}\n\n/**\n * A model-to-data view converter for the new line (`softBreak`) separator.\n *\n * Sample input:\n *\n * ```html\n * <codeBlock ...>foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <pre><code ...>foo();\\nbar();</code></pre>\n * ```\n *\n * @returns Returns a conversion callback.\n */\nexport function modelToDataViewSoftBreakInsertion( model: Model ): GetCallback<DowncastInsertEvent> {\n\treturn ( evt, data, conversionApi ) => {\n\t\tif ( data.item.parent!.name !== 'codeBlock' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { writer, mapper, consumable } = conversionApi;\n\n\t\tif ( !consumable.consume( data.item, 'insert' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst position = mapper.toViewPosition( model.createPositionBefore( data.item ) );\n\n\t\twriter.insert( position, writer.createText( '\\n' ) );\n\t};\n}\n\n/**\n * A view-to-model converter for `<pre>` with the `<code>` HTML.\n *\n * Sample input:\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();bar();</code></pre>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();bar();</codeBlock>\n * ```\n *\n * @param languageDefs The normalized language configuration passed to the feature.\n * @returns Returns a conversion callback.\n */\nexport function dataViewToModelCodeBlockInsertion(\n\teditingView: EditingView,\n\tlanguageDefs: Array<CodeBlockLanguageDefinition>\n): GetCallback<UpcastElementEvent> {\n\t// Language names associated with CSS classes:\n\t//\n\t//\t\t{\n\t//\t\t\t'language-php': 'php',\n\t//\t\t\t'language-python': 'python',\n\t//\t\t\tjs: 'javascript',\n\t//\t\t\t...\n\t//\t\t}\n\tconst classesToLanguages = getPropertyAssociation( languageDefs, 'class', 'language' );\n\tconst defaultLanguageName = languageDefs[ 0 ].language;\n\n\treturn ( evt, data, conversionApi ) => {\n\t\tconst viewCodeElement = data.viewItem;\n\t\tconst viewPreElement = viewCodeElement.parent;\n\n\t\tif ( !viewPreElement || !viewPreElement.is( 'element', 'pre' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In case of nested code blocks we don't want to convert to another code block.\n\t\tif ( data.modelCursor.findAncestor( 'codeBlock' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { consumable, writer } = conversionApi;\n\n\t\tif ( !consumable.test( viewCodeElement, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst codeBlock = writer.createElement( 'codeBlock' );\n\t\tconst viewChildClasses = [ ...viewCodeElement.getClassNames() ];\n\n\t\t// As we're to associate each class with a model language, a lack of class (empty class) can be\n\t\t// also associated with a language if the language definition was configured so. Pushing an empty\n\t\t// string to make sure the association will work.\n\t\tif ( !viewChildClasses.length ) {\n\t\t\tviewChildClasses.push( '' );\n\t\t}\n\n\t\t// Figure out if any of the <code> element's class names is a valid programming\n\t\t// language class. If so, use it on the model element (becomes the language of the entire block).\n\t\tfor ( const className of viewChildClasses ) {\n\t\t\tconst language = classesToLanguages[ className ];\n\n\t\t\tif ( language ) {\n\t\t\t\twriter.setAttribute( 'language', language, codeBlock );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// If no language value was set, use the default language from the config.\n\t\tif ( !codeBlock.hasAttribute( 'language' ) ) {\n\t\t\twriter.setAttribute( 'language', defaultLanguageName, codeBlock );\n\t\t}\n\n\t\t// Convert children before inserting the code block element\n\t\t// to make sure that code block won't be splitted by any block.\n\t\tconversionApi.convertChildren( viewCodeElement, codeBlock );\n\n\t\t// Let's try to insert code block.\n\t\tif ( !conversionApi.safeInsert( codeBlock, data.modelCursor ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconsumable.consume( viewCodeElement, { name: true } );\n\n\t\tconversionApi.updateConversionResult( codeBlock, data );\n\t};\n}\n\n/**\n * A view-to-model converter for new line characters in `<pre>`.\n *\n * Sample input:\n *\n * ```html\n * <pre><code class=\"language-javascript\">foo();\\nbar();</code></pre>\n * ```\n *\n * Sample output:\n *\n * ```html\n * <codeBlock language=\"javascript\">foo();<softBreak></softBreak>bar();</codeBlock>\n * ```\n *\n * @returns {Function} Returns a conversion callback.\n */\nexport function dataViewToModelTextNewlinesInsertion(): GetCallback<UpcastTextEvent> {\n\treturn ( evt, data, { consumable, writer } ) => {\n\t\tlet position = data.modelCursor;\n\n\t\t// When node is already converted then do nothing.\n\t\tif ( !consumable.test( data.viewItem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// When not inside `codeBlock` then do nothing.\n\t\tif ( !position.findAncestor( 'codeBlock' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconsumable.consume( data.viewItem );\n\n\t\tconst text = data.viewItem.data;\n\t\tconst textLines = text.split( '\\n' ).map( data => writer.createText( data ) );\n\t\tconst lastLine = textLines[ textLines.length - 1 ];\n\n\t\tfor ( const node of textLines ) {\n\t\t\twriter.insert( node, position );\n\t\t\tposition = position.getShiftedBy( node.offsetSize );\n\n\t\t\tif ( node !== lastLine ) {\n\t\t\t\tconst softBreak = writer.createElement( 'softBreak' );\n\n\t\t\t\twriter.insert( softBreak, position );\n\t\t\t\tposition = writer.createPositionAfter( softBreak );\n\t\t\t}\n\t\t}\n\n\t\tdata.modelRange = writer.createRange(\n\t\t\tdata.modelCursor,\n\t\t\tposition\n\t\t);\n\t\tdata.modelCursor = position;\n\t};\n}\n\n/**\n * A view-to-model converter that handles orphan text nodes (white spaces, new lines, etc.)\n * that surround `<code>` inside `<pre>`.\n *\n * Sample input:\n *\n * ```html\n * // White spaces\n * <pre> <code>foo()</code> </pre>\n *\n * // White spaces\n * <pre> <code>foo()</code> </pre>\n *\n * // White spaces\n * <pre>\t\t\t<code>foo()</code>\t\t\t</pre>\n *\n * // New lines\n * <pre>\n * \t<code>foo()</code>\n * </pre>\n *\n * // Redundant text\n * <pre>ABC<code>foo()</code>DEF</pre>\n * ```\n *\n * Unified output for each case:\n *\n * ```html\n * <codeBlock language=\"plaintext\">foo()</codeBlock>\n * ```\n *\n * @returns Returns a conversion callback.\n */\nexport function dataViewToModelOrphanNodeConsumer(): GetCallback<UpcastElementEvent> {\n\treturn ( evt, data, { consumable } ) => {\n\t\tconst preElement = data.viewItem;\n\n\t\t// Don't clean up nested pre elements. Their content should stay as it is, they are not upcasted\n\t\t// to code blocks.\n\t\tif ( preElement.findAncestor( 'pre' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst preChildren = Array.from( preElement.getChildren() );\n\t\tconst childCodeElement = preChildren.find( node => node.is( 'element', 'code' ) );\n\n\t\t// <code>-less <pre>. It will not upcast to code block in the model, skipping.\n\t\tif ( !childCodeElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const child of preChildren ) {\n\t\t\tif ( child === childCodeElement || !child.is( '$text' ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Consuming the orphan to remove it from the input data.\n\t\t\t// Second argument in `consumable.consume` is discarded for text nodes.\n\t\t\tconsumable.consume( child, { name: true } );\n\t\t}\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/codeblockediting\n */\n\nimport { Plugin, type Editor, type MultiCommand } from 'ckeditor5/src/core.js';\nimport { ShiftEnter, type ViewDocumentEnterEvent } from 'ckeditor5/src/enter.js';\n\nimport {\n\tUpcastWriter,\n\ttype Range,\n\ttype Node,\n\ttype ModelGetSelectedContentEvent,\n\ttype ViewDocumentTabEvent,\n\ttype DowncastInsertEvent,\n\ttype UpcastElementEvent,\n\ttype UpcastTextEvent,\n\ttype Element,\n\ttype SelectionChangeRangeEvent\n} from 'ckeditor5/src/engine.js';\nimport { ClipboardPipeline, type ClipboardContentInsertionEvent } from 'ckeditor5/src/clipboard.js';\n\nimport CodeBlockCommand from './codeblockcommand.js';\nimport IndentCodeBlockCommand from './indentcodeblockcommand.js';\nimport OutdentCodeBlockCommand from './outdentcodeblockcommand.js';\nimport {\n\tgetNormalizedAndLocalizedLanguageDefinitions,\n\tgetLeadingWhiteSpaces,\n\trawSnippetTextToViewDocumentFragment,\n\tgetCodeBlockAriaAnnouncement,\n\tgetTextNodeAtLineStart\n} from './utils.js';\nimport {\n\tmodelToViewCodeBlockInsertion,\n\tmodelToDataViewSoftBreakInsertion,\n\tdataViewToModelCodeBlockInsertion,\n\tdataViewToModelTextNewlinesInsertion,\n\tdataViewToModelOrphanNodeConsumer\n} from './converters.js';\n\nconst DEFAULT_ELEMENT = 'paragraph';\n\n/**\n * The editing part of the code block feature.\n *\n * Introduces the `'codeBlock'` command and the `'codeBlock'` model element.\n */\nexport default class CodeBlockEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CodeBlockEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ShiftEnter ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'codeBlock', {\n\t\t\tlanguages: [\n\t\t\t\t{ language: 'plaintext', label: 'Plain text' },\n\t\t\t\t{ language: 'c', label: 'C' },\n\t\t\t\t{ language: 'cs', label: 'C#' },\n\t\t\t\t{ language: 'cpp', label: 'C++' },\n\t\t\t\t{ language: 'css', label: 'CSS' },\n\t\t\t\t{ language: 'diff', label: 'Diff' },\n\t\t\t\t{ language: 'go', label: 'Go' },\n\t\t\t\t{ language: 'html', label: 'HTML' },\n\t\t\t\t{ language: 'java', label: 'Java' },\n\t\t\t\t{ language: 'javascript', label: 'JavaScript' },\n\t\t\t\t{ language: 'php', label: 'PHP' },\n\t\t\t\t{ language: 'python', label: 'Python' },\n\t\t\t\t{ language: 'ruby', label: 'Ruby' },\n\t\t\t\t{ language: 'typescript', label: 'TypeScript' },\n\t\t\t\t{ language: 'xml', label: 'XML' }\n\t\t\t],\n\n\t\t\t// A single tab.\n\t\t\tindentSequence: '\\t'\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\n\t\tconst normalizedLanguagesDefs = getNormalizedAndLocalizedLanguageDefinitions( editor );\n\n\t\t// The main command.\n\t\teditor.commands.add( 'codeBlock', new CodeBlockCommand( editor ) );\n\n\t\t// Commands that change the indentation.\n\t\teditor.commands.add( 'indentCodeBlock', new IndentCodeBlockCommand( editor ) );\n\t\teditor.commands.add( 'outdentCodeBlock', new OutdentCodeBlockCommand( editor ) );\n\n\t\tthis.listenTo<ViewDocumentTabEvent>( view.document, 'tab', ( evt, data ) => {\n\t\t\tconst commandName = data.shiftKey ? 'outdentCodeBlock' : 'indentCodeBlock';\n\t\t\tconst command: OutdentCodeBlockCommand | IndentCodeBlockCommand = editor.commands.get( commandName )!;\n\n\t\t\tif ( !command.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.execute( commandName );\n\n\t\t\tdata.stopPropagation();\n\t\t\tdata.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: 'pre' } );\n\n\t\tschema.register( 'codeBlock', {\n\t\t\tallowWhere: '$block',\n\t\t\tallowChildren: '$text',\n\t\t\t// Disallow `$inlineObject` and its derivatives like `inlineWidget` inside `codeBlock` to ensure that only text,\n\t\t\t// not other inline elements like inline images, are allowed. This maintains the semantic integrity of code blocks.\n\t\t\tdisallowChildren: '$inlineObject',\n\t\t\tallowAttributes: [ 'language' ],\n\t\t\tallowAttributesOf: '$listItem',\n\t\t\tisBlock: true\n\t\t} );\n\n\t\t// Disallow formatting attributes on `codeBlock` children.\n\t\tschema.addAttributeCheck( ( context, attributeName ) => {\n\t\t\tconst parent = context.getItem( context.length - 2 );\n\t\t\tconst isFormatting = schema.getAttributeProperties( attributeName ).isFormatting;\n\n\t\t\tif ( isFormatting && parent && parent.name == 'codeBlock' ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\t// Conversion.\n\t\teditor.editing.downcastDispatcher.on<DowncastInsertEvent>(\n\t\t\t'insert:codeBlock',\n\t\t\tmodelToViewCodeBlockInsertion( model, normalizedLanguagesDefs, true )\n\t\t);\n\t\teditor.data.downcastDispatcher.on<DowncastInsertEvent>(\n\t\t\t'insert:codeBlock',\n\t\t\tmodelToViewCodeBlockInsertion( model, normalizedLanguagesDefs )\n\t\t);\n\t\teditor.data.downcastDispatcher.on<DowncastInsertEvent>(\n\t\t\t'insert:softBreak',\n\t\t\tmodelToDataViewSoftBreakInsertion( model ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\t\teditor.data.upcastDispatcher.on<UpcastElementEvent>(\n\t\t\t'element:code',\n\t\t\tdataViewToModelCodeBlockInsertion( view, normalizedLanguagesDefs )\n\t\t);\n\t\teditor.data.upcastDispatcher.on<UpcastTextEvent>( 'text', dataViewToModelTextNewlinesInsertion() );\n\t\teditor.data.upcastDispatcher.on<UpcastElementEvent>( 'element:pre', dataViewToModelOrphanNodeConsumer(), { priority: 'high' } );\n\n\t\t// Intercept the clipboard input (paste) when the selection is anchored in the code block and force the clipboard\n\t\t// data to be pasted as a single plain text. Otherwise, the code lines will split the code block and\n\t\t// \"spill out\" as separate paragraphs.\n\t\tthis.listenTo( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n\t\t\tlet insertionRange = model.createRange( model.document.selection.anchor! );\n\n\t\t\t// Use target ranges in case this is a drop.\n\t\t\tif ( data.targetRanges ) {\n\t\t\t\tinsertionRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n\t\t\t}\n\n\t\t\tif ( !insertionRange.start.parent.is( 'element', 'codeBlock' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst text = data.dataTransfer.getData( 'text/plain' );\n\t\t\tconst writer = new UpcastWriter( editor.editing.view.document );\n\n\t\t\t// Pass the view fragment to the default clipboardInput handler.\n\t\t\tdata.content = rawSnippetTextToViewDocumentFragment( writer, text );\n\t\t} );\n\n\t\tif ( editor.plugins.has( 'ClipboardPipeline' ) ) {\n\t\t\t// Elements may have a plain textual representation (hence be present in the 'text/plain' data transfer),\n\t\t\t// but not be allowed in the code block.\n\t\t\t// Filter them out before inserting the content to the model.\n\t\t\teditor.plugins.get( ClipboardPipeline ).on<ClipboardContentInsertionEvent>( 'contentInsertion', ( evt, data ) => {\n\t\t\t\tconst model = editor.model;\n\t\t\t\tconst selection = model.document.selection;\n\n\t\t\t\tif ( !selection.anchor!.parent.is( 'element', 'codeBlock' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\tconst contentRange = writer.createRangeIn( data.content );\n\n\t\t\t\t\tfor ( const item of [ ...contentRange.getItems() ] ) {\n\t\t\t\t\t\t// Remove all nodes disallowed in the code block.\n\t\t\t\t\t\tif ( item.is( 'node' ) && !schema.checkChild( selection.anchor!, item ) ) {\n\t\t\t\t\t\t\twriter.remove( item );\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\t// Make sure multi–line selection is always wrapped in a code block when `getSelectedContent()`\n\t\t// is used (e.g. clipboard copy). Otherwise, only the raw text will be copied to the clipboard and,\n\t\t// upon next paste, this bare text will not be inserted as a code block, which is not the best UX.\n\t\t// Similarly, when the selection in a single line, the selected content should be an inline code\n\t\t// so it can be pasted later on and retain it's preformatted nature.\n\t\tthis.listenTo<ModelGetSelectedContentEvent>( model, 'getSelectedContent', ( evt, [ selection ] ) => {\n\t\t\tconst anchor = selection.anchor!;\n\n\t\t\tif ( selection.isCollapsed || !anchor.parent.is( 'element', 'codeBlock' ) || !anchor.hasSameParentAs( selection.focus! ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst docFragment = evt.return!;\n\n\t\t\t\t// fo[o<softBreak></softBreak>b]ar -> <codeBlock language=\"...\">[o<softBreak></softBreak>b]<codeBlock>\n\t\t\t\tif (\n\t\t\t\t\tanchor.parent.is( 'element' ) &&\n\t\t\t\t\t( docFragment.childCount > 1 || selection.containsEntireContent( anchor.parent ) )\n\t\t\t\t) {\n\t\t\t\t\tconst codeBlock = writer.createElement( 'codeBlock', anchor.parent.getAttributes() );\n\t\t\t\t\twriter.append( docFragment, codeBlock );\n\n\t\t\t\t\tconst newDocumentFragment = writer.createDocumentFragment();\n\t\t\t\t\twriter.append( codeBlock, newDocumentFragment );\n\n\t\t\t\t\tevt.return = newDocumentFragment;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// \"f[oo]\" -> <$text code=\"true\">oo</text>\n\t\t\t\tconst textNode = docFragment.getChild( 0 )!;\n\n\t\t\t\tif ( schema.checkAttribute( textNode, 'code' ) ) {\n\t\t\t\t\twriter.setAttribute( 'code', true, textNode );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\t\tconst commands = editor.commands;\n\t\tconst indent = commands.get( 'indent' );\n\t\tconst outdent = commands.get( 'outdent' );\n\n\t\tif ( indent ) {\n\t\t\t// Priority is highest due to integration with `IndentList` command of `List` plugin.\n\t\t\t// If selection is in a code block we give priority to it. This way list item cannot be indented\n\t\t\t// but if we would give priority to indenting list item then user would have to indent list item\n\t\t\t// as much as possible and only then he could indent code block.\n\t\t\t( indent as MultiCommand ).registerChildCommand( commands.get( 'indentCodeBlock' )!, { priority: 'highest' } );\n\t\t}\n\n\t\tif ( outdent ) {\n\t\t\t( outdent as MultiCommand ).registerChildCommand( commands.get( 'outdentCodeBlock' )! );\n\t\t}\n\n\t\t// Customize the response to the <kbd>Enter</kbd> and <kbd>Shift</kbd>+<kbd>Enter</kbd>\n\t\t// key press when the selection is in the code block. Upon enter key press we can either\n\t\t// leave the block if it's \"two or three enters\" in a row or create a new code block line, preserving\n\t\t// previous line's indentation.\n\t\tthis.listenTo<ViewDocumentEnterEvent>( editor.editing.view.document, 'enter', ( evt, data ) => {\n\t\t\tconst positionParent = editor.model.document.selection.getLastPosition()!.parent;\n\n\t\t\tif ( !positionParent.is( 'element', 'codeBlock' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !leaveBlockStartOnEnter( editor, data.isSoft ) && !leaveBlockEndOnEnter( editor, data.isSoft ) ) {\n\t\t\t\tbreakLineOnEnter( editor );\n\t\t\t}\n\n\t\t\tdata.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: 'pre' } );\n\n\t\tthis._initAriaAnnouncements( );\n\t}\n\n\t/**\n\t * Observe when user enters or leaves code block and set proper aria value in global live announcer.\n\t * This allows screen readers to indicate when the user has entered and left the specified code block.\n\t *\n\t * @internal\n\t */\n\tprivate _initAriaAnnouncements( ) {\n\t\tconst { model, ui, t } = this.editor;\n\t\tconst languageDefs = getNormalizedAndLocalizedLanguageDefinitions( this.editor );\n\n\t\tlet lastFocusedCodeBlock: Element | null = null;\n\n\t\tmodel.document.selection.on<SelectionChangeRangeEvent>( 'change:range', () => {\n\t\t\tconst focusParent = model.document.selection.focus!.parent;\n\n\t\t\tif ( !ui || lastFocusedCodeBlock === focusParent || !focusParent.is( 'element' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( lastFocusedCodeBlock && lastFocusedCodeBlock.is( 'element', 'codeBlock' ) ) {\n\t\t\t\tui.ariaLiveAnnouncer.announce( getCodeBlockAriaAnnouncement( t, languageDefs, lastFocusedCodeBlock, 'leave' ) );\n\t\t\t}\n\n\t\t\tif ( focusParent.is( 'element', 'codeBlock' ) ) {\n\t\t\t\tui.ariaLiveAnnouncer.announce( getCodeBlockAriaAnnouncement( t, languageDefs, focusParent, 'enter' ) );\n\t\t\t}\n\n\t\t\tlastFocusedCodeBlock = focusParent;\n\t\t} );\n\t}\n}\n\n/**\n * Normally, when the Enter (or Shift+Enter) key is pressed, a soft line break is to be added to the\n * code block. Let's try to follow the indentation of the previous line when possible, for instance:\n *\n * ```html\n * // Before pressing enter (or shift enter)\n * <codeBlock>\n * \" foo()\"[] // Indent of 4 spaces.\n * </codeBlock>\n *\n * // After pressing:\n * <codeBlock>\n * \" foo()\" // Indent of 4 spaces.\n * <softBreak></softBreak> // A new soft break created by pressing enter.\n * \" \"[] // Retain the indent of 4 spaces.\n * </codeBlock>\n * ```\n */\nfunction breakLineOnEnter( editor: Editor ): void {\n\tconst model = editor.model;\n\tconst modelDoc = model.document;\n\t// Use last position as other mechanisms (e.g. condition deciding whether this function should be called) also check that.\n\tconst lastSelectionPosition = modelDoc.selection.getLastPosition()!;\n\tlet leadingWhiteSpaces: string | undefined;\n\n\tconst node = getTextNodeAtLineStart( lastSelectionPosition, model );\n\n\t// Figure out the indentation (white space chars) at the beginning of the line.\n\tif ( node && node.is( '$text' ) ) {\n\t\tleadingWhiteSpaces = getLeadingWhiteSpaces( node );\n\t}\n\n\t// Keeping everything in a change block for a single undo step.\n\teditor.model.change( writer => {\n\t\teditor.execute( 'shiftEnter' );\n\n\t\t// If the line before being broken in two had some indentation, let's retain it\n\t\t// in the new line.\n\t\tif ( leadingWhiteSpaces ) {\n\t\t\twriter.insertText( leadingWhiteSpaces, modelDoc.selection.anchor! );\n\t\t}\n\t} );\n}\n\n/**\n * Leave the code block when Enter (but NOT Shift+Enter) has been pressed twice at the beginning\n * of the code block:\n *\n * ```html\n * // Before:\n * <codeBlock>[]<softBreak></softBreak>foo</codeBlock>\n *\n * // After pressing:\n * <paragraph>[]</paragraph><codeBlock>foo</codeBlock>\n * ```\n *\n * @param isSoftEnter When `true`, enter was pressed along with <kbd>Shift</kbd>.\n * @returns `true` when selection left the block. `false` if stayed.\n */\nfunction leaveBlockStartOnEnter( editor: Editor, isSoftEnter: boolean ): boolean {\n\tconst model = editor.model;\n\tconst modelDoc = model.document;\n\tconst view = editor.editing.view;\n\tconst lastSelectionPosition = modelDoc.selection.getLastPosition()!;\n\tconst nodeAfter = lastSelectionPosition.nodeAfter;\n\n\tif ( isSoftEnter || !modelDoc.selection.isCollapsed || !lastSelectionPosition.isAtStart ) {\n\t\treturn false;\n\t}\n\n\tif ( !isSoftBreakNode( nodeAfter ) ) {\n\t\treturn false;\n\t}\n\n\t// We're doing everything in a single change block to have a single undo step.\n\teditor.model.change( writer => {\n\t\t// \"Clone\" the <codeBlock> in the standard way.\n\t\teditor.execute( 'enter' );\n\n\t\t// The cloned block exists now before the original code block.\n\t\tconst newBlock = modelDoc.selection.anchor!.parent.previousSibling! as Element;\n\n\t\t// Make the cloned <codeBlock> a regular <paragraph> (with clean attributes, so no language).\n\t\twriter.rename( newBlock, DEFAULT_ELEMENT );\n\t\twriter.setSelection( newBlock, 'in' );\n\t\teditor.model.schema.removeDisallowedAttributes( [ newBlock ], writer );\n\n\t\t// Remove the <softBreak> that originally followed the selection position.\n\t\twriter.remove( nodeAfter! );\n\t} );\n\n\t// Eye candy.\n\tview.scrollToTheSelection();\n\n\treturn true;\n}\n\n/**\n * Leave the code block when Enter (but NOT Shift+Enter) has been pressed twice at the end\n * of the code block:\n *\n * ```html\n * // Before:\n * <codeBlock>foo[]</codeBlock>\n *\n * // After first press:\n * <codeBlock>foo<softBreak></softBreak>[]</codeBlock>\n *\n * // After second press:\n * <codeBlock>foo</codeBlock><paragraph>[]</paragraph>\n * ```\n *\n * @param isSoftEnter When `true`, enter was pressed along with <kbd>Shift</kbd>.\n * @returns `true` when selection left the block. `false` if stayed.\n */\nfunction leaveBlockEndOnEnter( editor: Editor, isSoftEnter: boolean ): boolean {\n\tconst model = editor.model;\n\tconst modelDoc = model.document;\n\tconst view = editor.editing.view;\n\tconst lastSelectionPosition = modelDoc.selection.getLastPosition()!;\n\tconst nodeBefore = lastSelectionPosition.nodeBefore;\n\n\tlet emptyLineRangeToRemoveOnEnter: Range;\n\n\tif ( isSoftEnter || !modelDoc.selection.isCollapsed || !lastSelectionPosition.isAtEnd || !nodeBefore || !nodeBefore.previousSibling ) {\n\t\treturn false;\n\t}\n\n\t// When the position is directly preceded by two soft breaks\n\t//\n\t//\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak>[]</codeBlock>\n\t//\n\t// it creates the following range that will be cleaned up before leaving:\n\t//\n\t//\t\t<codeBlock>foo[<softBreak></softBreak><softBreak></softBreak>]</codeBlock>\n\t//\n\tif ( isSoftBreakNode( nodeBefore ) && isSoftBreakNode( nodeBefore.previousSibling ) ) {\n\t\temptyLineRangeToRemoveOnEnter = model.createRange(\n\t\t\tmodel.createPositionBefore( nodeBefore.previousSibling ), model.createPositionAfter( nodeBefore )\n\t\t);\n\t}\n\n\t// When there's some text before the position that is\n\t// preceded by two soft breaks and made purely of white–space characters\n\t//\n\t//\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak> []</codeBlock>\n\t//\n\t// it creates the following range to clean up before leaving:\n\t//\n\t//\t\t<codeBlock>foo[<softBreak></softBreak><softBreak></softBreak> ]</codeBlock>\n\t//\n\telse if (\n\t\tisEmptyishTextNode( nodeBefore ) &&\n\t\tisSoftBreakNode( nodeBefore.previousSibling ) &&\n\t\tisSoftBreakNode( nodeBefore.previousSibling.previousSibling )\n\t) {\n\t\temptyLineRangeToRemoveOnEnter = model.createRange(\n\t\t\tmodel.createPositionBefore( nodeBefore.previousSibling.previousSibling! ), model.createPositionAfter( nodeBefore )\n\t\t);\n\t}\n\n\t// When there's some text before the position that is made purely of white–space characters\n\t// and is preceded by some other text made purely of white–space characters\n\t//\n\t//\t\t<codeBlock>foo<softBreak></softBreak> <softBreak></softBreak> []</codeBlock>\n\t//\n\t// it creates the following range to clean up before leaving:\n\t//\n\t//\t\t<codeBlock>foo[<softBreak></softBreak> <softBreak></softBreak> ]</codeBlock>\n\t//\n\telse if (\n\t\tisEmptyishTextNode( nodeBefore ) &&\n\t\tisSoftBreakNode( nodeBefore.previousSibling ) &&\n\t\tisEmptyishTextNode( nodeBefore.previousSibling.previousSibling ) &&\n\t\tnodeBefore.previousSibling.previousSibling &&\n\t\tisSoftBreakNode( nodeBefore.previousSibling.previousSibling.previousSibling )\n\t) {\n\t\temptyLineRangeToRemoveOnEnter = model.createRange(\n\t\t\tmodel.createPositionBefore( nodeBefore.previousSibling.previousSibling.previousSibling! ),\n\t\t\tmodel.createPositionAfter( nodeBefore )\n\t\t);\n\t}\n\n\t// Not leaving the block in the following cases:\n\t//\n\t//\t\t<codeBlock> []</codeBlock>\n\t//\t\t<codeBlock> a []</codeBlock>\n\t//\t\t<codeBlock>foo<softBreak></softBreak>[]</codeBlock>\n\t//\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak>bar[]</codeBlock>\n\t//\t\t<codeBlock>foo<softBreak></softBreak><softBreak></softBreak> a []</codeBlock>\n\t//\n\telse {\n\t\treturn false;\n\t}\n\n\t// We're doing everything in a single change block to have a single undo step.\n\teditor.model.change( writer => {\n\t\t// Remove the last <softBreak>s and all white space characters that followed them.\n\t\twriter.remove( emptyLineRangeToRemoveOnEnter );\n\n\t\t// \"Clone\" the <codeBlock> in the standard way.\n\t\teditor.execute( 'enter' );\n\n\t\tconst newBlock = modelDoc.selection.anchor!.parent as Element;\n\n\t\t// Make the cloned <codeBlock> a regular <paragraph> (with clean attributes, so no language).\n\t\twriter.rename( newBlock, DEFAULT_ELEMENT );\n\t\teditor.model.schema.removeDisallowedAttributes( [ newBlock ], writer );\n\t} );\n\n\t// Eye candy.\n\tview.scrollToTheSelection();\n\n\treturn true;\n}\n\nfunction isEmptyishTextNode( node: Node | null ) {\n\treturn node && node.is( '$text' ) && !node.data.match( /\\S/ );\n}\n\nfunction isSoftBreakNode( node: Node | null ) {\n\treturn node && node.is( 'element', 'softBreak' );\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/codeblockui\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { Collection } from 'ckeditor5/src/utils.js';\nimport {\n\tViewModel,\n\tSplitButtonView,\n\tcreateDropdown,\n\taddListToDropdown,\n\tMenuBarMenuListItemButtonView,\n\tMenuBarMenuListView,\n\tMenuBarMenuView,\n\tMenuBarMenuListItemView,\n\ttype ListDropdownButtonDefinition\n} from 'ckeditor5/src/ui.js';\nimport { IconCodeBlock } from 'ckeditor5/src/icons.js';\n\nimport { getNormalizedAndLocalizedLanguageDefinitions } from './utils.js';\n\nimport type { CodeBlockLanguageDefinition } from './codeblockconfig.js';\nimport type CodeBlockCommand from './codeblockcommand.js';\n\nimport '../theme/codeblock.css';\n\n/**\n * The code block UI plugin.\n *\n * Introduces the `'codeBlock'` dropdown.\n */\nexport default class CodeBlockUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CodeBlockUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst componentFactory = editor.ui.componentFactory;\n\t\tconst normalizedLanguageDefs = getNormalizedAndLocalizedLanguageDefinitions( editor );\n\t\tconst itemDefinitions = this._getLanguageListItemDefinitions( normalizedLanguageDefs );\n\t\tconst command: CodeBlockCommand = editor.commands.get( 'codeBlock' )!;\n\n\t\tcomponentFactory.add( 'codeBlock', locale => {\n\t\t\tconst dropdownView = createDropdown( locale, SplitButtonView );\n\t\t\tconst splitButtonView = dropdownView.buttonView;\n\t\t\tconst accessibleLabel = t( 'Insert code block' );\n\n\t\t\tsplitButtonView.set( {\n\t\t\t\tlabel: accessibleLabel,\n\t\t\t\ttooltip: true,\n\t\t\t\ticon: IconCodeBlock,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'isOn' ).to( command, 'value', value => !!value );\n\n\t\t\tsplitButtonView.on( 'execute', () => {\n\t\t\t\teditor.execute( 'codeBlock', {\n\t\t\t\t\tusePreviousLanguageChoice: true\n\t\t\t\t} );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\tdropdownView.on( 'execute', evt => {\n\t\t\t\teditor.execute( 'codeBlock', {\n\t\t\t\t\tlanguage: ( evt.source as any )._codeBlockLanguage,\n\t\t\t\t\tforceValue: true\n\t\t\t\t} );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\tdropdownView.class = 'ck-code-block-dropdown';\n\t\t\tdropdownView.bind( 'isEnabled' ).to( command );\n\n\t\t\taddListToDropdown( dropdownView, itemDefinitions, {\n\t\t\t\trole: 'menu',\n\t\t\t\tariaLabel: accessibleLabel\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\n\t\tcomponentFactory.add( 'menuBar:codeBlock', locale => {\n\t\t\tconst menuView = new MenuBarMenuView( locale );\n\n\t\t\tmenuView.buttonView.set( {\n\t\t\t\trole: 'menuitem',\n\t\t\t\tlabel: t( 'Code block' ),\n\t\t\t\ticon: IconCodeBlock\n\t\t\t} );\n\n\t\t\tmenuView.bind( 'isEnabled' ).to( command );\n\n\t\t\tconst listView = new MenuBarMenuListView( locale );\n\n\t\t\tlistView.set( {\n\t\t\t\tariaLabel: t( 'Insert code block' )\n\t\t\t} );\n\n\t\t\tfor ( const definition of itemDefinitions ) {\n\t\t\t\tconst listItemView = new MenuBarMenuListItemView( locale, menuView );\n\t\t\t\tconst buttonView = new MenuBarMenuListItemButtonView( locale );\n\n\t\t\t\tbuttonView.bind( ...Object.keys( definition.model ) as Array<keyof MenuBarMenuListItemButtonView> ).to( definition.model );\n\t\t\t\tbuttonView.set( {\n\t\t\t\t\tisToggleable: true,\n\t\t\t\t\trole: 'menuitemcheckbox'\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.delegate( 'execute' ).to( menuView );\n\n\t\t\t\tbuttonView.on( 'execute', () => {\n\t\t\t\t\teditor.execute( 'codeBlock', {\n\t\t\t\t\t\tlanguage: definition.model._codeBlockLanguage as string,\n\t\t\t\t\t\tforceValue: command.value == definition.model._codeBlockLanguage ? false : true\n\t\t\t\t\t} );\n\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t} );\n\n\t\t\t\tlistItemView.children.add( buttonView );\n\t\t\t\tlistView.items.add( listItemView );\n\t\t\t}\n\n\t\t\tmenuView.panelView.children.add( listView );\n\n\t\t\treturn menuView;\n\t\t} );\n\t}\n\n\t/**\n\t * A helper returning a collection of the `codeBlock` dropdown items representing languages\n\t * available for the user to choose from.\n\t */\n\tprivate _getLanguageListItemDefinitions(\n\t\tnormalizedLanguageDefs: Array<CodeBlockLanguageDefinition>\n\t): Collection<ListDropdownButtonDefinition> {\n\t\tconst editor = this.editor;\n\t\tconst command: CodeBlockCommand = editor.commands.get( 'codeBlock' )!;\n\t\tconst itemDefinitions = new Collection<ListDropdownButtonDefinition>();\n\n\t\tfor ( const languageDef of normalizedLanguageDefs ) {\n\t\t\tconst definition: ListDropdownButtonDefinition = {\n\t\t\t\ttype: 'button',\n\t\t\t\tmodel: new ViewModel( {\n\t\t\t\t\t_codeBlockLanguage: languageDef.language,\n\t\t\t\t\tlabel: languageDef.label,\n\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\twithText: true\n\t\t\t\t} )\n\t\t\t};\n\n\t\t\tdefinition.model.bind( 'isOn' ).to( command, 'value', value => {\n\t\t\t\treturn value === definition.model._codeBlockLanguage;\n\t\t\t} );\n\n\t\t\titemDefinitions.add( definition );\n\t\t}\n\n\t\treturn itemDefinitions;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module code-block/codeblock\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\n\nimport CodeBlockEditing from './codeblockediting.js';\nimport CodeBlockUI from './codeblockui.js';\n\n/**\n * The code block plugin.\n *\n * For more information about this feature check the {@glink api/code-block package page} and the\n * {@glink features/code-blocks code block} feature guide.\n *\n * This is a \"glue\" plugin that loads the {@link module:code-block/codeblockediting~CodeBlockEditing code block editing feature}\n * and the {@link module:code-block/codeblockui~CodeBlockUI code block UI feature}.\n */\nexport default class CodeBlock extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ CodeBlockEditing, CodeBlockUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CodeBlock' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n"]}
|